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)

Télécharger le pilote OLE DB

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