Certificados e Service Broker

Este tópico descreve como SQL Server usa certificados para a segurança remota do Agente de Serviços. A segurança remota do Agente de Serviços refere-se a operações que envolvem mais de uma instância de SQL Server quando essas operações usam a segurança de diálogo ou segurança de transporte.

Visão geral

A segurança remota do Agente de Serviços mapeia uma operação de fora de uma instância para um principal de banco de dados SQL Server. A operação prossegue, então, no contexto de segurança desse principal de banco de dados, com verificações de permissão SQL Server normais. Por exemplo, quando uma mensagem chega para uma conversação que usa a segurança de diálogo, o Agente de Serviços usa informações na mensagem para identificar um principal de banco de dados para o lado remoto da conversação. SQL Server então verifica que o principal tem permissão para se conectar ao banco de dados que hospeda o serviço de destino e permissão para enviar uma mensagem para o serviço de destino.

SQL Server usa certificados para verificar a identidade de um banco de dados remoto e para identificar o principal do banco de dados local para a operação. Portanto, instalar um certificado em SQL Server constitui uma instrução de confiança no banco de dados que contém a chave privada do certificado. Gerencie cuidadosamente os certificados instalados e as associações de serviço remoto criadas.

Observação sobre segurançaObservação sobre segurança

Instale somente certificados de origens confiáveis. Não distribua chaves privadas.

Para verificar a identidade de um servidor remoto, SQL Server deve receber informações que podem ser descriptografadas com uma chave pública em um certificado de propriedade de um principal de banco de dados local. Se SQL Server pode descriptografar as informações com sucesso, isso significa que o banco de dados remoto contém a chave privada que corresponde à chave pública no certificado local. Uma vez que SQL Server verifica a identidade de um banco de dados remoto, esse banco de dados remoto pode agir com as permissões do principal de banco de dados local.

Para a segurança de transporte, cada banco de dados deve confiar em outro banco de dados. A segurança de transporte pode usar certificados ou a Autenticação do Windows. Para obter mais informações sobre segurança de transporte, consulte Segurança de transporte do Service Broker.

Para a segurança de diálogo, o iniciador do diálogo deve confiar no destino e deve ser capaz de verificar a identidade do destino. Porém, o destino pode permitir conexões de iniciadores que não fornecem informações de identificação. Nesse caso, os iniciadores usam a função pública no banco de dados que hospeda o serviço de destino. A segurança de diálogo sempre usa certificados. Para obter mais informações sobre a segurança de diálogo, consulte Segurança de diálogo do Service Broker.

SQL Server não fornece métodos automatizados para configuração da segurança do Agente de Serviços por meio de certificados.

Requisitos de certificado

Para ser usado pela segurança do Agente de Serviços, um certificado deve atender aos seguintes requisitos:

  • O módulo chave deve ser menor que 2048.

  • O comprimento de certificado total deve ser menor que 32 quilobytes (KB).

  • Um nome de assunto deve ser especificado.

  • As datas de validade devem ser especificadas.

  • O comprimento chave deve ser um múltiplo de 64 bits.

Um certificado auto-assinado criado com a instrução Transact-SQL CREATE CERTIFICATE atende aos requisitos da lista anterior. Os certificados carregados a partir de um arquivo podem não satisfazer a esses requisitos.

Quando o certificado é armazenado em SQL Server, o certificado deve ser criptografado com a chave mestra para o banco de dados. O Agente de Serviços não pode usar certificados que sejam criptografados apenas com uma senha. Além disso, a chave mestra do banco de dados deve ser criptografada com a chave de serviço da instância. Caso contrário, o Agente de Serviços não poderá abrir a chave mestra.

Para SQL Server usar um certificado para iniciar uma conversação, o certificado deve ser marcado ACTIVE FOR BEGIN_DIALOG. Certificados são marcados como ativos para iniciar o diálogo por padrão. Entretanto, você pode escolher desativar temporariamente um certificado ao atualizar as configurações de segurança de um serviço. Para obter mais informações, consulte CREATE CERTIFICATE (Transact-SQL) e ALTER CERTIFICATE (Transact-SQL).