Compartilhar via


Criptografia e validação de certificado no OLE DB

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Banco de dados SQL no Microsoft Fabric

Baixar o driver do OLE DB

O SQL Server sempre criptografa pacotes de rede associados a logon. Se nenhum certificado for provisionado no servidor quando ele for iniciado, o SQL Server gerará um certificado autoassinado, que é usado para criptografar pacotes de logon.

Certificados autoassinados não garantem a segurança. O handshake criptografado é baseado no NTLM (NT LAN Manager). É altamente recomendável que você provisione um certificado verificável no SQL Server para ter uma conectividade segura. O protocolo TLS pode se tornar seguro somente com a validação de certificado.

Os aplicativos também podem solicitar a criptografia de todo o tráfego de rede usando palavras-chave de cadeia de conexão ou propriedades de conexão. As palavras-chave são "Encrypt" para o OLE DB ao usar uma cadeia de caracteres do provedor com IDbInitialize::Initialize ou "Use Encryption for Data" para o ADO e o OLE DB ao usar uma cadeia de caracteres de inicialização com IDataInitialize . A criptografia talvez possa ser configurada na máquina do cliente no registro usando a opção Forçar criptografia de protocolo. Para obter mais informações, confira Configurações modificadas do Registro. Por padrão, a criptografia de todo o tráfego de rede para uma conexão requer que um certificado seja fornecido no servidor. Ao configurar o cliente para confiar no certificado no servidor, você pode se tornar vulnerável a ataques man-in-the-middle. Se você implantar um certificado verificável no servidor, certifique-se de alterar as configurações do cliente sobre como confiar no certificado para FALSE.

Para obter informações sobre palavras-chave da cadeia de conexão, confira Usando palavras-chave da cadeia de conexão com o Driver do OLE DB para SQL Server.

Para habilitar a criptografia a ser usada quando um certificado não é provisionado no servidor, as Force Protocol Encryption do cliente e Trust Server Certificate devem ser definidas. Nesse caso, a criptografia usa um certificado de servidor autoassinado sem validação se nenhum certificado verificável for provisionado no servidor.

Comportamento de criptografia e validação de certificado

As configurações do aplicativo nunca reduzem o nível de segurança definido no registro, mas podem fortalecê-la. Para obter mais informações, confira Configurações modificadas do Registro. Por exemplo, se Force Protocol Encryption não for definido para o cliente, um aplicativo poderá solicitar a criptografia por conta própria. Para garantir a criptografia mesmo quando um certificado de servidor não é provisionado, um aplicativo pode solicitar criptografia e habilitar TrustServerCertificateo . No entanto, se TrustServerCertificate não estiver habilitado na configuração do Registro do cliente, um certificado de servidor provisionado ainda será necessário.

A versão 19 do Driver do OLE DB para SQL Server apresenta alterações importantes nas APIs relacionadas à criptografia. Para obter mais informações, confira Alterações de propriedade de criptografia.

Versão principal 19

A seguinte tabela descreve a avaliação das configurações de criptografia:

Configuração do Registro do cliente Force Protocol Encryption Atributo de conexão/cadeia de conexão Criptografar/Usar criptografia de dados Criptografia resultante
0 (padrão) Não/Opcional Opcional
0 (padrão) Sim/Obrigatório (padrão) Obrigatório
0 (padrão) Rigoroso Rigoroso
1 Não/Opcional Obrigatório
1 Sim/Obrigatório (padrão) Obrigatório
1 Rigoroso Rigoroso
2 Ignorado Rigoroso

A seguinte tabela descreve a criptografia e a validação resultantes:

Criptografia Configuração do registro do cliente do Certificado do Servidor Confiável Atributo de conexão/cadeia de conexão Confiar em Certificado do Servidor Resultado
Opcional N/D N/D A criptografia ocorre apenas para pacotes LOGIN.
Obrigatório 0 Ignorado A criptografia só ocorrerá se houver um certificado do servidor verificável; caso contrário, a tentativa de conexão falhará.
Obrigatório 1 (padrão) Não (padrão) A criptografia só ocorrerá se houver um certificado do servidor verificável; caso contrário, a tentativa de conexão falhará.
Obrigatório 1 (padrão) Sim A criptografia sempre ocorre, mas pode usar um certificado do servidor autoassinado.
Rigoroso N/D N/D A criptografia só ocorrerá se houver um certificado do servidor verificável; caso contrário, a tentativa de conexão falhará.

Observação

Nas versões 19.0 a 19.3, durante a instalação, a configuração padrão do registro do cliente Certificado do Servidor Confiável é lida a partir da configuração do Registro da versão 18, se existir.

Cuidado

A tabela anterior fornece apenas um guia sobre o comportamento do sistema em diferentes configurações. Para conectividade segura, confirme se tanto o cliente quanto o servidor exigem criptografia (para configuração do lado do servidor, confira Definir configurações de criptografia do SQL Server). Verifique também se o servidor tem um certificado verificável e se a configuração TrustServerCertificate no cliente está definida como FALSE.

Observação

Da versão 19.2 em diante do driver OLE DB, as conexões TDS 8.0 podem ser configuradas para usar o TLS 1.3. Para saber mais, confira o Suporte ao TLS 1.3.

Versão principal 18 com novos métodos de autenticação

Para as versões 18.xx, para melhorar a segurança, quando as novas palavras-chave de cadeia de conexão Autenticação ou Token de acesso (ou suas propriedades correspondentes) são usadas, o driver substitui o valor de criptografia padrão definindo para yes. A substituição ocorre no tempo de inicialização do objeto de fonte de dados. Se a criptografia for definida por qualquer meio antes da inicialização, o valor será respeitado e não será substituído.

Observação

Em aplicativos ADO e em aplicativos que obtêm a interface IDBInitialize por meio de IDataInitialize::GetDataSource, o componente principal que implementa a interface define explicitamente a criptografia para seu valor padrão de no. Como resultado, as novas palavras-chave/propriedades de autenticação respeitam essa configuração e o valor de criptografia não é substituído. Portanto, é recomendável que esses aplicativos sejam definidos Use Encryption for Data=true explicitamente para substituir o valor padrão.

Para melhorar a segurança, os novos métodos de autenticação respeitam a configuração TrustServerCertificate (e suas palavras-chave/propriedades de cadeia de conexão correspondentes) independentemente da configuração de criptografia do cliente. Como resultado, o certificado do servidor é validado por padrão. O driver determina se o certificado do servidor deve ser validado da seguinte maneira:

Configuração do cliente Confiar em Certificado do Servidor Atributo de conexão/cadeia de conexão Confiar em Certificado do Servidor Validação do certificado
0 Não (padrão) Sim
0 Sim Sim
1 Não (padrão) Sim
1 Sim Não

A seguinte tabela descreve a avaliação das configurações de criptografia:

Configuração do cliente Forçar Criptografia de Protocolo Atributo de conexão/cadeia de conexão Criptografar/Usar criptografia de dados Criptografia resultante
0 Não (padrão) Não
0 Sim Sim
1 Não (padrão) Sim
1 Sim Sim

A seguinte tabela descreve a criptografia e a validação resultantes:

Criptografia resultante Validação do certificado Resultado
Não Não A criptografia ocorre apenas para pacotes LOGIN.
Não Sim A criptografia ocorrerá para pacotes LOGIN somente se houver um certificado de servidor verificável, caso contrário, a tentativa de conexão falhará.
Sim Não A criptografia de todo o tráfego de rede sempre ocorre, mas pode usar um certificado de servidor autoassinado.
Sim Sim A criptografia de todo o tráfego de rede ocorre somente se houver um certificado de servidor verificável, caso contrário, a tentativa de conexão falhará.

Versão principal 18 com métodos de autenticação herdados

A seguinte tabela descreve o resultado de criptografia e validação para métodos de autenticação herdados:

Configuração do cliente Forçar Criptografia de Protocolo Configuração do cliente Confiar em Certificado do Servidor Atributo de conexão/cadeia de conexão Criptografar/Usar criptografia de dados Atributo de conexão/cadeia de conexão Confiar em Certificado do Servidor Resultado
0 N/D Não (padrão) N/D A criptografia ocorre apenas para pacotes LOGIN.
0 N/D Sim Não (padrão) A criptografia de todo o tráfego de rede ocorre somente se houver um certificado de servidor verificável, caso contrário, a tentativa de conexão falhará.
0 N/D Sim Sim A criptografia de todo o tráfego de rede sempre ocorre, mas pode usar um certificado de servidor autoassinado.
1 0 Ignorado Ignorado A criptografia de todo o tráfego de rede ocorre somente se houver um certificado de servidor verificável, caso contrário, a tentativa de conexão falhará.
1 1 Não (padrão) N/D A criptografia de todo o tráfego de rede sempre ocorre, mas pode usar um certificado de servidor autoassinado.
1 1 Sim Não (padrão) A criptografia de todo o tráfego de rede ocorre somente se houver um certificado de servidor verificável, caso contrário, a tentativa de conexão falhará.
1 1 Sim Sim A criptografia de todo o tráfego de rede sempre ocorre, mas pode usar um certificado de servidor autoassinado.

Confira também

Recursos do Driver do OLE DB para SQL Server
Propriedades de inicialização e autorização
Palavras-chave de cadeia de conexão
Principais diferenças de versão
Configurações do registro