Chiffrement et validation de certificat dans OLE DB
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
SQL Server chiffre toujours les paquets réseau associés à l’ouverture de session. Si aucun certificat n’a été provisionné sur le serveur au démarrage, SQL Server génère un certificat auto-signé qui est utilisé pour chiffrer les paquets de la connexion.
Les certificats auto-signés ne garantissent pas la sécurité. La négociation chiffrée est basée sur NT LAN Manager (NTLM). Nous vous recommandons fortement de provisionner un certificat vérifiable sur SQL Server pour sécuriser la connectivité. Le protocole Transport Security Layer (TLS) peut être sécurisé uniquement avec la validation de certificat.
Les applications peuvent également demander le chiffrement de tout le trafic réseau en utilisant des mots clés de chaîne de connexion ou des propriétés de connexion. Ces mots clés sont « Encrypt » pour OLE DB si vous utilisez une chaîne de fournisseur avec IDbInitialize::Initialize
ou « Use Encryption for Data » pour ADO et OLE DB si vous utilisez une chaîne d’initialisation avec IDataInitialize
. Le chiffrement peut également être configuré sur la machine cliente dans le Registre en utilisant l’option Forcer le chiffrement du protocole. Pour plus d’informations, consultez Paramètres de Registre. Par défaut, pour chiffrer tout le trafic réseau d’une connexion, vous devez provisionner un certificat sur le serveur. En définissant votre client pour qu’il approuve le certificat sur le serveur, vous risquez d’être vulnérable aux attaques de l’intercepteur. Si vous déployez un certificat vérifiable sur le serveur, veillez à définir sur FALSE les paramètres de client relatifs à l’approbation du certificat.
Pour plus d’informations sur les mots clés de chaîne de connexion, consultez Utilisation de mots clés de chaîne de connexion avec OLE DB Driver pour SQL Server.
Pour activer le chiffrement à utiliser quand aucun certificat n’a été approvisionné sur le serveur, les paramètres de registre client Force Protocol Encryption
et Trust Server Certificate
peuvent être définis. Dans ce cas, le chiffrement utilise un certificat de serveur auto-signé sans validation si aucun certificat vérifiable n’a été provisionné sur le serveur.
Comportement de chiffrement et de validation de certificat
Les paramètres d’application ne réduisent jamais le niveau de sécurité défini dans le Registre, mais peuvent le renforcer. Pour plus d’informations, consultez Paramètres de Registre. Par exemple, si l’option Force Protocol Encryption
n’est pas définie pour le client, une application peut demander elle-même le chiffrement. Pour garantir le chiffrement même si aucun certificat de serveur n’a été provisionné, une application peut demander le chiffrement et activer TrustServerCertificate
. Toutefois, si TrustServerCertificate
n’est pas activé dans la configuration du client, un certificat de serveur provisionné est toujours nécessaire.
La version 19 d’OLE DB Driver pour SQL Server introduit des modifications avec rupture dans les API associées au chiffrement. Pour plus d’informations, consultez Modifications des propriétés de chiffrement.
Version principale 19
Le tableau suivant décrit l’évaluation des paramètres de chiffrement :
Paramètre client Forcer le chiffrement du protocole | Chaîne de connexion/attribut de connexion Encrypt/Use Encryption for Data | Chiffrement résultant |
---|---|---|
0 | Non/facultatif | Facultatif |
0 | Oui/obligatoire (par défaut) | Obligatoire |
0 | Strict | Strict |
1 | Non/facultatif | Obligatoire |
1 | Oui/obligatoire (par défaut) | Obligatoire |
1 | Strict | Strict |
2 | Ignoré | Strict |
Le tableau suivant décrit le chiffrement et la validation qui en résultent :
Chiffrement | Paramètre client Faire confiance au certificat de serveur | Chaîne de connexion/attribut de connexion Trust Server Certificate | Résultats |
---|---|---|---|
Facultatif | N/A | N/A | Seuls les paquets de connexion (LOGIN) sont chiffrés. |
Obligatoire | 0 | Ignoré | Le chiffrement se produit uniquement s’il existe un certificat de serveur vérifiable, sinon la tentative de connexion échoue. |
Obligatoire | 1 | Non (par défaut) | Le chiffrement se produit uniquement s’il existe un certificat de serveur vérifiable, sinon la tentative de connexion échoue. |
Obligatoire | 1 | Oui | Le chiffrement se produit toujours, mais peut utiliser un certificat de serveur auto-signé. |
Strict | N/A | N/A | Le chiffrement se produit uniquement s’il existe un certificat de serveur vérifiable, sinon la tentative de connexion échoue. |
Attention
Le tableau précédent fournit uniquement un guide sur le comportement du système dans différentes configurations. Pour une connectivité sécurisée, vérifiez que le client et le serveur exigent le chiffrement (pour la configuration côté serveur, consultez Configurer les paramètres de chiffrement dans SQL Server). Vérifiez également que le serveur a un certificat vérifiable et que le paramètre TrustServerCertificate
sur le client est défini sur FALSE.
Notes
À partir de la version 19.2 du pilote OLE DB, les connexions TDS 8.0 peuvent être configurées pour utiliser TLS 1.3. Pour plus d’informations, consultez Prise en charge de TLS 1.3.
Version principale 18 avec les nouvelles méthodes d’authentification
Pour les versions 18.x.x, pour améliorer la sécurité, lorsque les nouveaux mots clés de chaîne de connexion d’authentification ou du Jeton d’accès (ou leurs propriétés correspondantes) sont utilisés, le pilote remplace la valeur de chiffrement par défaut en lui affectant la valeur yes
. La substitution se produit au moment de l’initialisation de l’objet source de données. Si le chiffrement est défini avant l’initialisation par quelque moyen que ce soit, la valeur est respectée et n’est pas remplacée.
Notes
Dans les applications ADO et dans les applications qui obtiennent l’interface IDBInitialize
par le biais de IDataInitialize::GetDataSource
, le composant principal qui implémente l’interface définit explicitement le chiffrement à sa valeur par défaut de no
. Par conséquent, les nouvelles propriétés/nouveaux mots clés d’authentification respectent ce paramètre et la valeur de chiffrement n’est pas remplacée. Par conséquent, il est recommandé que ces applications définissent explicitement Use Encryption for Data=true
pour remplacer la valeur par défaut.
Pour améliorer la sécurité, les nouvelles méthodes d’authentification respectent le paramètre TrustServerCertificate
(et les mots clés/propriétés de chaîne de connexion correspondants) indépendamment du paramètre de chiffrement du client. Par conséquent, le certificat de serveur est validé par défaut. Le pilote détermine s’il faut valider le certificat de serveur comme suit :
Paramètre client Faire confiance au certificat de serveur | Chaîne de connexion/attribut de connexion Trust Server Certificate | Validation du certificat |
---|---|---|
0 | Non (par défaut) | Yes |
0 | Oui | Oui |
1 | Non (par défaut) | Oui |
1 | Oui | Non |
Le tableau suivant décrit l’évaluation des paramètres de chiffrement :
Paramètre client Forcer le chiffrement du protocole | Chaîne de connexion/attribut de connexion Encrypt/Use Encryption for Data | Chiffrement résultant |
---|---|---|
0 | Non (par défaut) | Non |
0 | Oui | Oui |
1 | Non (par défaut) | Oui |
1 | Oui | Oui |
Le tableau suivant décrit le chiffrement et la validation qui en résultent :
Chiffrement résultant | Validation du certificat | Résultats |
---|---|---|
Non | Non | Seuls les paquets de connexion (LOGIN) sont chiffrés. |
Non | Oui | Les paquets de connexion (LOGIN) sont chiffrés uniquement s’il existe un certificat de serveur vérifiable, sinon la tentative de connexion échoue. |
Oui | Non | La totalité du trafic est toujours chiffré, mais un certificat de serveur auto-signé peut être utilisé. |
Oui | Oui | La totalité du trafic est chiffré uniquement s’il existe un certificat de serveur vérifiable, sinon la tentative de connexion échoue. |
Version principale 18 avec les méthodes d’authentification héritées
Le tableau suivant décrit les résultats du chiffrement et de la validation pour les méthodes d’authentification héritées :
Paramètre client Forcer le chiffrement du protocole | Paramètre client Faire confiance au certificat de serveur | Chaîne de connexion/attribut de connexion Encrypt/Use Encryption for Data | Chaîne de connexion/attribut de connexion Trust Server Certificate | Résultats |
---|---|---|---|---|
0 | N/A | Non (par défaut) | N/A | Seuls les paquets de connexion (LOGIN) sont chiffrés. |
0 | N/A | Oui | Non (par défaut) | La totalité du trafic est chiffré uniquement s’il existe un certificat de serveur vérifiable, sinon la tentative de connexion échoue. |
0 | N/A | Oui | Oui | La totalité du trafic est toujours chiffré, mais un certificat de serveur auto-signé peut être utilisé. |
1 | 0 | Ignoré | Ignoré | La totalité du trafic est chiffré uniquement s’il existe un certificat de serveur vérifiable, sinon la tentative de connexion échoue. |
1 | 1 | Non (par défaut) | N/A | La totalité du trafic est toujours chiffré, mais un certificat de serveur auto-signé peut être utilisé. |
1 | 1 | Oui | Non (par défaut) | La totalité du trafic est chiffré uniquement s’il existe un certificat de serveur vérifiable, sinon la tentative de connexion échoue. |
1 | 1 | Oui | Oui | La totalité du trafic est toujours chiffré, mais un certificat de serveur auto-signé peut être utilisé. |
Voir aussi
Fonctionnalités OLE DB Driver pour SQL Server
Propriétés d'initialisation et d'autorisation
Mots clés de chaîne de connexion
Différences entre les versions principales
Paramètres du Registre