Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Importante
SQL Server Native Client (SNAC) no se incluye con:
- SQL Server 2022 (16.x) y versiones posteriores
- SQL Server Management Studio 19 y versiones posteriores
No se recomiendan SQL Server Native Client (SQLNCLI o SQLNCLI11) ni Microsoft OLE DB Provider for SQL Server (SQLOLEDB) heredado para el desarrollo de nuevas aplicaciones.
En el caso de los proyectos nuevos, use uno de los siguientes controladores:
Para SQLNCLI que se incluye como componente de motor de base de datos de SQL Server (versiones 2012 a 2019), consulte esta excepción de ciclo de vida de soporte técnico.
SQL Server cifra siempre los paquetes de red asociados al inicio de sesión. Si no se aprovisionó ningún certificado en el servidor cuando se inicia, SQL Server genera un certificado autofirmado que se usa para cifrar los paquetes de inicio de sesión.
Los certificados autofirmados no garantizan la seguridad. El protocolo de enlace cifrado se basa en NT LAN Manager (NTLM). Debe aprovisionar un certificado verificable en SQL Server para una conectividad segura. La seguridad de la capa de transporte (TLS) solo se puede proteger con la validación de certificados.
Las aplicaciones también pueden solicitar el cifrado de todo el tráfico de red mediante palabras clave de cadena de conexión o propiedades de conexión. Las palabras clave son "Encrypt" para ODBC y OLE DB cuando se usa una cadena de proveedor con IDbInitialize::Initialize
, o "Usar cifrado para datos" para ADO y OLE DB cuando se usa una cadena de inicialización con IDataInitialize
. El Administrador de configuración de SQL Server también puede configurarlo mediante la opción Forzar cifrado de protocolo y configurando el cliente para solicitar conexiones cifradas. De forma predeterminada, el cifrado de todo el tráfico de red de una conexión requiere que se aprovisione un certificado en el servidor. Al establecer el cliente para que confíe en el certificado en el servidor, es vulnerable a ataques de tipo "man in the middle". Si implementa un certificado verificable en el servidor, asegúrese de cambiar la configuración del cliente sobre la confianza del certificado en FALSE
.
Para obtener información sobre cadena de conexión palabras clave, vea Uso de palabras clave de cadena de conexión con SQL Server Native Client.
Para habilitar el cifrado que se va a usar cuando no se aprovisiona un certificado en el servidor, se puede usar el Administrador de configuración de SQL Server para establecer las opciones Forzar cifrado de protocolo y Certificado de servidor de confianza . En este caso, el cifrado usa un certificado de servidor autofirmado sin validación si no se aprovisionó ningún certificado verificable en el servidor.
Las aplicaciones también pueden usar la TrustServerCertificate
palabra clave o su atributo de conexión asociado para garantizar que se produzca el cifrado. La configuración de la aplicación nunca reduce el nivel de seguridad establecido por el Administrador de configuración de cliente de SQL Server, pero podría reforzarlo. Por ejemplo, si forzar el cifrado de protocolo no está establecido para el cliente, una aplicación podría solicitar el cifrado en sí mismo. Para garantizar el cifrado incluso cuando no se aprovisiona un certificado de servidor, una aplicación podría solicitar cifrado y TrustServerCertificate
. Pero si en la configuración cliente no está habilitado TrustServerCertificate
, seguirá siendo necesario un certificado de servidor. En la tabla siguiente se describen todos los casos:
Cliente configurado con Forzar cifrado de protocolo | Cliente configurado con Confiar en certificado de servidor | Cadena/atributo de conexión Encrypt/Use Encryption for Data | Cadena/atributo de conexión Trust Server Certificate | Resultado |
---|---|---|---|---|
No | N/D | No (valor predeterminado) | Omitido | No se produce el cifrado. |
No | N/D | Sí | No (valor predeterminado) | El cifrado solamente se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión. |
No | N/D | Sí | Sí | El cifrado se produce siempre, pero es posible que se use un certificado de servidor autofirmado. |
Sí | No | Omitido | Omitido | El cifrado solamente se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión. |
Sí | Sí | No (valor predeterminado) | Omitido | El cifrado se produce siempre, pero es posible que se use un certificado de servidor autofirmado. |
Sí | Sí | Sí | No (valor predeterminado) | El cifrado solamente se produce si hay un certificado de servidor comprobable; de lo contrario, se produce un error en el intento de conexión. |
Sí | Sí | Sí | Sí | El cifrado se produce siempre, pero es posible que se use un certificado de servidor autofirmado. |
Precaución
En la tabla anterior solo se proporciona una guía sobre el comportamiento del sistema en distintas configuraciones. Para una conectividad segura, asegúrese de que tanto el cliente como el servidor requieren cifrado. Asegúrese también de que el servidor tiene un certificado comprobable y de que el valor TrustServerCertificate
en el cliente esté establecido en FALSE
.
Proveedor OLE DB de SQL Server Native Client
El proveedor OLE DB de SQL Server Native Client admite el cifrado sin validación mediante la adición de la SSPROP_INIT_TRUST_SERVER_CERTIFICATE
propiedad de inicialización del origen de datos, que se implementa en el DBPROPSET_SQLSERVERDBINIT
conjunto de propiedades. Además, se agregó una nueva palabra clave de cadena de conexión, TrustServerCertificate
, . Acepta yes
o no
valores; no
es el valor predeterminado. Cuando se usan componentes de servicio, acepta true
o false
valores; false
es el valor predeterminado.
Para obtener más información sobre las mejoras realizadas en el DBPROPSET_SQLSERVERDBINIT
conjunto de propiedades, vea Propiedades de inicialización y autorización (proveedor OLE DB de Native Client).
Controlador ODBC de SQL Server Native Client
El controlador ODBC de SQL Server Native Client admite el cifrado sin validación mediante adiciones a las funciones SQLSetConnectAttr y SQLGetConnectAttr .
SQL_COPT_SS_TRUST_SERVER_CERTIFICATE
se agregó para aceptar o SQL_TRUST_SERVER_CERTIFICATE_YES
SQL_TRUST_SERVER_CERTIFICATE_NO
, con SQL_TRUST_SERVER_CERTIFICATE_NO
el valor predeterminado. Además, se agregó una nueva palabra clave de cadena de conexión, TrustServerCertificate
, . Acepta yes
o no
valores; no
es el valor predeterminado.