Criptografando conexões com o SQL Server

O SQL Server oferece suporte ao SSL e é compatível com o protocolo IPSec.

Protocolo SSL

Microsoft O MicrosoftSQL Server pode usar SSL para criptografar dados transmitidos em uma rede entre uma instância doSQL Server e um aplicativo cliente. A criptografia SSL é executada na camada do protocolo e está disponível para todos os clientes do SQL Server, exceto para cliente da Biblioteca de Banco de Dados e do MDAC 2.53.

O SSL pode ser usado para validação de servidor quando uma conexão de cliente solicita criptografia. Se a instância do SQL Server estiver sendo executada em um computador ao qual foi atribuído um certificado de uma autoridade de certificação pública, a identidade do computador e a instância do SQL Server serão emitidas pela cadeia de certificados que leva à autoridade raiz confiável. Essa validação de servidor exige que o computador no qual o aplicativo cliente está sendo executado seja configurado para confiar na autoridade raiz do certificado que é usado pelo servidor. A criptografia com um certificado auto-assinado é possível e está descrita na seção a seguir, mas um certificado auto-assinado oferece apenas proteção limitada.

O nível de criptografia usado pelo SSL, 40 ou 128 bits, depende da versão do sistema operacional Microsoft Windows em execução no aplicativo e dos computadores do banco de dados.

A habilitação da criptografia SSL aumenta a segurança dos dados transmitidos pelas redes entre instâncias do SQL Server e aplicativos. Porém, a habilitação da criptografia reduz o desempenho. Quando todo o tráfego entre o SQL Server e um aplicativo cliente é criptografado usando SSL, o seguinte processamento adicional é necessário:

  • Idas e voltas extras da rede são necessárias no momento da conexão.

  • Os pacotes enviados do aplicativo para a instância do SQL Server devem ser criptografados pela Biblioteca de Rede do cliente e descriptografados pela Biblioteca de Rede do servidor.

  • Os pacotes enviados da instância do SQL Server para o aplicativo devem ser criptografados pela Biblioteca de Rede do servidor e descriptografados pela Biblioteca de Rede do cliente.

Configurando SSL para o SQL Server

O seguinte procedimento descreve como configurar o SSL para o SQL Server.

Para configurar o SSL

  1. Instale um certificado no armazenamento de certificado do Windows do computador servidor.

  2. Clique em Iniciar, no grupo de programas Microsoft SQL Server , aponte para Ferramentas de Configuração e clique em SQL Server Configuration Manager.

  3. Expanda Configuração de Rede do SQL Server, clique com o botão direito do mouse nos protocolos do servidor que você deseja e clique em Propriedades.

    ObservaçãoObservação

    Essa é a seção Protocolos para<nome_da_instância> no painel esquerdo da ferramenta, não um protocolo específico no painel direito.

  4. Na guia Certificado, configure o Mecanismo de Banco de Dados para usar o certificado.

  5. Na guia Sinalizadores, exiba ou especifique a opção de criptografia do protocolo. O pacote de logon sempre será criptografado.

    • Quando a opção ForceEncryption do Mecanismo de Banco de Dados é definida como Yes, toda comunicação cliente/servidor é criptografada e o acesso é negado aos clientes que não podem oferecer suporte à criptografia.

    • Quando a opção ForceEncryption do Mecanismo de Banco de Dados é definida como No, a criptografia pode ser solicitada pelo aplicativo cliente, mas não é exigida.

    • O SQL Server deve ser reiniciado depois que você alterar a definição de ForceEncryption.

    As credenciais (no pacote de logon) transmitidas quando um aplicativo cliente se conecta ao SQL Server são sempre criptografadas. O SQL Server usará um certificado de uma autoridade de certificação confiável, se disponível. Se um certificado confiável não estiver instalado, o SQL Server irá gerar um certificado auto-assinado quando a instância for iniciada e usará esse certificado para criptografar as credenciais. Esse certificado auto-assinado ajuda a aumentar a segurança, mas não fornece proteção contra identidade lograda pelo servidor. Se o certificado auto-assinado for usado e o valor da opção ForceEncryption for definido como Yes, todos os dados transmitidos por uma rede entre o SQL Server e o aplicativo cliente serão criptografados usando o certificado auto-assinado.

    Observação sobre cuidadosCuidado

    As conexões SSL que são criptografadas usando um certificado auto-assinado não fornecem alta segurança. Elas são suscetíveis a ataques man-in-the-middle. Não se deve confiar no SSL usando certificados auto-assinados em um ambiente de produção ou em servidores conectados à Internet.

Requisitos de certificado

Para que o SQL Server carregue um certificado SSL, o certificado deve atender às seguintes condições:

  • O certificado deve estar no armazenamento de certificado do computador local ou no armazenamento de certificado do usuário atual.

  • A hora do sistema atual deve ser posterior à propriedade Válido a partir de do certificado e anterior à propriedade Válido até do certificado.

  • O certificado deve ser significativo para a autenticação do servidor. Isso requer que a propriedade Uso Avançado da Chave do certificado especifique Autenticação do Servidor (1.3.6.1.5.5.7.3.1).

  • O certificado deve ser criado usando a opção KeySpec de AT_KEYEXCHANGE. Normalmente, a propriedade de uso de chave (KEY_USAGE) do certificado também inclui codificação de chaves (CERT_KEY_ENCIPHERMENT_KEY_USAGE).

  • A propriedade Assunto do certificado deve indicar que o nome comum (CN) é igual ao nome do host ou ao nome de domínio totalmente qualificado (FQDN) do computador servidor. Se o SQL Server estiver em execução em um cluster de failover, o nome comum deverá corresponder ao nome do host ou ao FQDN do servidor virtual e os certificados deverão ser fornecidos em todos os nós no cluster de failover.

Criptografia em um cluster

Se você desejar usar a criptografia com um cluster de failover, deverá instalar o certificado de servidor com o nome DNS totalmente qualificado da instância clusterizada de failover em todos os nós do cluster de failover. Por exemplo, se você tiver um cluster de dois nós, com os nós denominados test1.your company.com e test2. your company.com e uma instância clusterizada de failover do SQL Server denominada fcisql, deverá obter um certificado para fcisql.your company.com e instalar esse certificado em ambos os nós. Para configurar o cluster de failover para criptografia, você poderá selecionar a caixa de opções ForceEncryption na caixa de propriedades Protocolos do <servidor> da Configuração de Rede do SQL Server.

Protocolo IPSec

O SQL Server pode ser criptografado durante a transmissão usando o IPSec. O IPSec é fornecido pelos sistemas operacionais do cliente e servidor e não requer nenhuma configuração do SQL Server. Para obter informações sobre o IPSec, consulte a documentação de rede ou do Windows.