Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
SQL Server Native Client (SNAC) não é fornecido com:
- SQL Server 2022 (16.x) e versões posteriores
- SQL Server Management Studio 19 e versões posteriores
O SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o Microsoft OLE DB Provider for SQL Server (SQLOLEDB) herdado não são recomendados para o desenvolvimento de novos aplicativos.
Para novos projetos, use um dos seguintes drivers:
Para o SQLNCLI fornecido como componente do Mecanismo de Base de Dados do SQL Server (versões de 2012 a 2019), consulte esta exceção ao Ciclo de Vida de Suporte .
O SQL Server encripta sempre os pacotes de rede associados ao início de sessão. Se nenhum certificado foi provisionado no servidor quando ele é iniciado, o SQL Server gera um certificado autoassinado que é usado para criptografar pacotes de logon.
Os certificados autoassinados não garantem segurança. O handshake criptografado é baseado no NT LAN Manager (NTLM). Você deve provisionar um certificado verificável no SQL Server para conectividade segura. A camada de segurança de transporte (TLS) só pode ser protegida com a validação do 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 ODBC e OLE DB ao usar uma cadeia de caracteres de provedor com IDbInitialize::Initialize, ou "Usar criptografia para dados" para ADO e OLE DB ao usar uma cadeia de caracteres de inicialização com IDataInitialize. Isso também pode ser configurado pelo SQL Server Configuration Manager usando a opção Forçar Criptografia de Protocolo e configurando o cliente para solicitar conexões criptografadas. Por padrão, a criptografia de todo o tráfego de rede para uma conexão requer que um certificado seja provisionado no servidor. Ao configurar seu cliente para confiar no certificado no servidor, você fica 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 confiar no certificado para FALSE.
Para obter informações sobre palavras-chave de cadeia de conexão, consulte Usando palavras-chave de cadeia de conexão com o SQL Server Native Client.
Para permitir que a criptografia seja usada quando um certificado não é provisionado no servidor, o SQL Server Configuration Manager pode ser usado para definir as opções Forçar Criptografia de Protocolo e Certificado de Servidor Confiável . Nesse caso, a criptografia usa um certificado de servidor autoassinado sem validação se nenhum certificado verificável foi provisionado no servidor.
Os aplicativos também podem usar a TrustServerCertificate palavra-chave ou seu atributo de conexão associado para garantir que a criptografia ocorra. As configurações do aplicativo nunca reduzem o nível de segurança definido pelo SQL Server Client Configuration Manager, mas podem fortalecê-lo. Por exemplo, se Force Protocol Encryption não estiver definido para o cliente, um aplicativo poderá solicitar a própria criptografia. Para garantir a criptografia mesmo quando um certificado de servidor não é provisionado, um aplicativo pode solicitar criptografia e TrustServerCertificate. No entanto, se TrustServerCertificate não estiver habilitado na configuração do cliente, um certificado de servidor provisionado ainda será necessário. A tabela a seguir descreve todos os casos:
| Forçar configuração do cliente de criptografia de protocolo | Configuração do cliente de Certificado do Servidor Confiável | Cadeia de conexão/atributo de conexão Criptografar/Usar criptografia para dados | Cadeia de conexão/atributo de conexão Certificado de servidor confiável | Resultado |
|---|---|---|---|---|
| Não | N/A | Não (padrão) | Ignorado | Nenhuma criptografia ocorre. |
| Não | N/A | Sim | Não (padrão) | A criptografia ocorre somente se houver um certificado de servidor verificável, caso contrário, a tentativa de conexão falhará. |
| Não | N/A | Sim | Sim | A criptografia sempre ocorre, mas pode usar um certificado de servidor autoassinado. |
| Sim | Não | Ignorado | Ignorado | A criptografia ocorre somente se houver um certificado de servidor verificável, caso contrário, a tentativa de conexão falhará. |
| Sim | Sim | Não (padrão) | Ignorado | A criptografia sempre ocorre, mas pode usar um certificado de servidor autoassinado. |
| Sim | Sim | Sim | Não (padrão) | A criptografia ocorre somente se houver um certificado de servidor verificável, caso contrário, a tentativa de conexão falhará. |
| Sim | Sim | Sim | Sim | A criptografia sempre ocorre, mas pode usar um certificado de servidor autoassinado. |
Atenção
A tabela anterior fornece apenas um guia sobre o comportamento do sistema em diferentes configurações. Para conectividade segura, certifique-se de que o cliente e o servidor exijam criptografia. Verifique também se o servidor tem um certificado verificável e se a TrustServerCertificate configuração no cliente está definida como FALSE.
Provedor OLE DB do SQL Server Native Client
O provedor OLE DB do SQL Server Native Client dá suporte à criptografia sem validação por meio da adição da propriedade de inicialização da fonte de dados, que é implementada DBPROPSET_SQLSERVERDBINIT no conjunto de SSPROP_INIT_TRUST_SERVER_CERTIFICATE propriedades. Além disso, uma nova palavra-chave de cadeia de conexão, TrustServerCertificate, foi adicionada. Aceita yes ou no valoriza, no é o padrão. Ao usar componentes de serviço, ele aceita true ou false valoriza, false é o padrão.
Para obter mais informações sobre aprimoramentos feitos no DBPROPSET_SQLSERVERDBINIT conjunto de propriedades, consulte Propriedades de inicialização e autorização (provedor OLE DB do Native Client).
SQL Server Native Client ODBC Driver
O driver ODBC do SQL Server Native Client oferece suporte à criptografia sem validação por meio de adições às funções SQLSetConnectAttr e SQLGetConnectAttr .
SQL_COPT_SS_TRUST_SERVER_CERTIFICATE foi adicionado para aceitar ou SQL_TRUST_SERVER_CERTIFICATE_YESSQL_TRUST_SERVER_CERTIFICATE_NO, sendo SQL_TRUST_SERVER_CERTIFICATE_NO o padrão. Além disso, uma nova palavra-chave de cadeia de conexão, TrustServerCertificate, foi adicionada. Aceita yes ou no valoriza, no é o padrão.