Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : SQL Server 2022 (16.x) et versions
ultérieures d’Azure SQL Database Azure SQL
Managed Instance
SQL Database dans Microsoft Fabric
SQL Server 2022 (16.x), Azure SQL Database et Azure SQL Managed Instance prennent en charge Tabular Data Stream (TDS) 8.0.
Le protocole TDS (Tabular Data Stream) est un protocole de couche application utilisé par les clients pour se connecter à SQL Server. SQL Server utilise le protocole TLS pour chiffrer des données transmises sur un réseau entre une application cliente et une instance de SQL Server.
TDS est un protocole sécurisé, mais dans les versions précédentes de SQL Server, le chiffrement peut être désactivé. Pour répondre aux normes de chiffrement obligatoire en cas d’utilisation de SQL Server, une itération du protocole TDS a été introduite : TDS 8.0.
L’établissement d’une liaison TLS précède désormais tous les messages TDS, encapsulant la session TDS dans TLS pour appliquer le chiffrement, ce qui aligne TDS 8.0 avec HTTPS et d’autres protocoles web. Cette amélioration contribue considérablement à la facilité de gestion du trafic TDS, car les appliances réseau standard sont désormais en mesure de filtrer et de passer en toute sécurité des requêtes SQL.
L’avantage de TDS 8.0 par rapport aux versions précédentes de TDS est sa compatibilité avec TLS 1.3 et les normes TLS à venir. TDS 8.0 est également entièrement compatible avec les versions TLS 1.2 et antérieures.
Fonctionnement de TDS
Le protocole TDS (Tabular Data Stream) est un protocole de niveau application utilisé pour le transfert des demandes et des réponses entre les clients et les systèmes serveurs de base de données. Le système client établit généralement une connexion de longue durée avec le serveur. Une fois la connexion établie à l’aide d’un protocole au niveau du transport, les messages TDS sont échangés pour communiquer entre le client et SQL Server.
La durée de vie de la session TDS se décompose en trois phases :
- Initialisation
- Authentification
- Échange de données
Le chiffrement est négocié pendant la phase initiale, mais la négociation TDS se produit sur une connexion non chiffrée. La connexion SQL Server ressemble à ceci pour les versions antérieures à TDS 8.0 :
Liaison TCP ➡️ préconnexion TDS (texte en clair) et réponse (texte en clair) ➡️ Liaison TLS ➡️ authentification (chiffrée) ➡️ échange de données (peut être chiffré ou non chiffré)
Avec l’introduction de TDS 8.0, les connexions SQL Server sont les suivantes :
Liaison TCP ➡️ négociation TLS ➡️ préconnexion TDS (chiffrée) et réponse (chiffrée) ➡️ authentification (chiffrée) ➡️ échange de données (chiffré)
Matrice de compatibilité pour les options TDS, TLS, OS et chiffrement
Vous pouvez activer les versions TLS 1.2 et TLS 1.3 au niveau du système d’exploitation, ce qui permet aux connexions clientes à SQL Server d’utiliser plusieurs versions de protocole TDS (TDS 7.x et 8.0). Selon la version du système d’exploitation, TLS 1.2 et TLS 1.3 peuvent être activés par défaut.
Seul TDS 7.x prend en charge la communication non chiffrée (facultative), TDS 8.0 ne prend pas en charge cette opération. TDS 7.x prend en charge le chiffrement à l’aide de TLS jusqu’à la version 1.2. TDS 8.0 nécessite le chiffrement : tout est toujours chiffré avec TDS 8.0 (Encrypt=Strict). TDS 8.0 n’a aucune exigence minimale de version TLS et prend en charge TLS 1.3. La prise en charge de TLS 1.3 dépend de la version du système d’exploitation. Le tableau suivant récapitule différents scénarios avec les options de chiffrement et les versions TLS et TDS correspondantes.
| Encrypt (Chiffrer) choix |
Version TLS activée | Version du système d’exploitation | Prévu connexion résultat |
Remarques |
|---|---|---|---|---|
| Strict | TLS 1.3 uniquement (ou version ultérieure) | Windows 11 Windows Server 2022 et versions ultérieures |
Success | TLS 1.3 négocié ; TDS 8.0 déclenché (Encrypt=Strict) |
| Strict | TLS 1.2 et TLS 1.3 | Windows 11 Windows Server 2022 et versions ultérieures |
Success | TLS 1.3 négocié ; TDS 8.0 déclenché (Encrypt=Strict) |
| Strict | TLS 1.2 uniquement (ou version antérieure) | Windows 11 Windows Server 2022 et versions ultérieures |
Success | TLS 1.2 négocié ; TDS 8.0 déclenché (Encrypt=Strict) |
| Strict | TLS 1.2 uniquement (ou version antérieure) | Windows 10 Windows Server 2019 / 2016 |
Success | TLS 1.2 négocié ; Déclencheur TDS 8.0 (TLS 1.3 non disponible) |
| Obligatoire | TLS 1.3 uniquement (ou version ultérieure) | Windows 11 Windows Server 2022 et versions ultérieures |
Failure | Encrypt=Mandatory est incompatible avec TLS 1.3 pour TDS 8.0 |
| Obligatoire | TLS 1.2 et TLS 1.3 | Windows 11 Windows Server 2022 et versions ultérieures |
Success | TLS 1.2 négocié ; TDS 8.0 non déclenché (Encrypt=Mandatory) |
| Obligatoire | TLS 1.2 uniquement (ou version antérieure) | Windows 11 Windows Server 2022 et versions ultérieures |
Success | TLS 1.2 négocié ; TDS 8.0 non déclenché (Encrypt=Mandatory) |
| Obligatoire | TLS 1.2 uniquement (ou version antérieure) | Windows 10 Windows Server 2019 / 2016 |
Success | TLS 1.2 négocié ; TDS 8.0 non pris en charge sur ce système d’exploitation (utilise TDS 7.x) |
| Optional | TLS 1.3 uniquement (ou version ultérieure) | Windows 11 Windows Server 2022 et versions ultérieures |
Failure | Encrypt=Optional (false) est TDS 7.x, incompatible avec TLS 1.3. |
| Optional | TLS 1.2 et TLS 1.3 | Windows 11 Windows Server 2022 et versions ultérieures |
Success | TLS 1.3 négocié ; TDS 8.0 non déclenché (Encrypt=Optional) |
| Optional | TLS 1.2 uniquement (ou version antérieure) | Windows 11 Windows Server 2022 et versions ultérieures |
Success | TLS 1.2 négocié ; TDS 8.0 non déclenché (Encrypt=Optional) |
| Optional | TLS 1.2 uniquement (ou version antérieure) | Windows 10 Windows Server 2019 / 2016 |
Success | TLS 1.2 négocié ; chiffrement facultatif ; la connexion peut continuer réussir sans chiffrement |
| N'importe lequel | TLS 1.3 uniquement (ou version ultérieure) | Windows 10 Windows Server 2019 / 2016 |
Failure | TLS 1.3 non pris en charge sur ce système d’exploitation |
Pour plus d’informations sur la façon dont les clients utilisent différentes versions TDS, consultez la section Modifications apportées aux propriétés de chiffrement de chaîne de connexion .
Prise en charge de SQL Server 2025
SQL Server 2025 (17.x) introduit la prise en charge de TDS 8.0 pour les fonctionnalités de ligne de commande et SQL Server suivantes :
- SQL Server Agent
- Utilitaire sqlcmd
- Utilitaire bcp
- Rédacteur SQL VSS
- Service SQL CEIP
- Messagerie de base de données
- Polybase
- Groupes de disponibilité Always On
- Instance de cluster de basculement Always On (FCI)
- Serveurs liés1
- Réplication transactionnelle1
- Réplication de fusion1
- Réplication d’instantané1
- Copie des journauxde transaction 1
1La prise en charge tdS 8.0 introduit des changements cassants à ces fonctionnalités.
Chiffrement de connexion strict
Pour utiliser TDS 8.0, SQL Server 2022 (16.x) a ajouté strict comme une option supplémentaire de chiffrement de connexion aux pilotes SQL Server (Encrypt=strict). Pour utiliser le type de strict chiffrement de connexion, téléchargez la dernière version des pilotes .NET, ODBC, OLE DB, JDBC, PHP et Python :
- Microsoft ADO.NET pour SQL Server et Azure SQL Database, version 5.1 ou ultérieure
- Pilote ODBC pour SQL Server, version 18.1.2.1 ou ultérieure
- Microsoft OLE DB Driver pour SQL Server version 19.2.0 ou ultérieure
- Pilote Microsoft JDBC pour SQL Server, version 11.2.0 ou ultérieure.
- Pilotes Microsoft SQL Server pour PHP, version 5.10 ou ultérieure
- Pilote Python SQL (pyodbc)
Pour empêcher une attaque man-in-the-middle avec strict le chiffrement de connexion, les utilisateurs ne peuvent pas définir l’option TrustServerCertificatetrue et autoriser tout certificat fourni par le serveur. À la place, les utilisateurs utilisent l’option HostNameInCertificate pour spécifier le certificat ServerName qui doit être approuvé. Le certificat fourni par le serveur doit réussir la phase de validation. Pour plus d’informations sur la validation des certificats, consultez La configuration requise pour SQL Server
Changements supplémentaires des propriétés de chiffrement de chaîne de connexion
Les options suivantes sont ajoutées aux chaînes de connexion pour chiffrer la communication :
| Mot clé | Par défaut | Descriptif |
|---|---|---|
Encrypt |
faux |
Options de chaîne de connexion précédentes Les options valides sont - trueou yes - false, ou no. Pour plus d’informations, consultez Syntaxe de la chaîne de connexion. Quand true, SQL Server utilise le chiffrement TLS 1.2 pour toutes les données échangées entre le client et le serveur si un certificat est installé sur le serveur.Dernières options de chaîne de connexion Les options valides sont - strict - mandatory, ou , ou true, ou yes - optional, ou , ou falseno. Lorsque le paramètre est défini sur strict, SQL Server utilise TDS 8.0 pour toutes les données échangées entre le client et le serveur.Quand la valeur est mandatory, true ou yes, SQL Server utilise TDS 7.x avec le chiffrement TLS/SSL pour toutes les données envoyées entre le client et le serveur, si le serveur a un certificat installé.Quand la valeur est optional, false ou no, la connexion utilise TDS 7.x et est chiffrée uniquement si le serveur SQL le demande. |
TrustServerCertificate |
faux |
Option de chaîne de connexion précédente Lorsqu’il est défini true sur (non recommandé), le pilote ne valide pas le certificat TLS/SSL du serveur. Si true, le certificat TLS/SSL du serveur est automatiquement approuvé (sans validation) lorsque la couche de communication est chiffrée à l’aide de TLS.Si la valeur est false, le pilote valide le certificat TLS/SSL du serveur. Si la validation du certificat de serveur échoue, le pilote génère une erreur et ferme la connexion. La valeur par défaut est false. Vérifiez que la valeur passée à serverName correspond exactement au Common Name (CN) ou au nom DNS dans le Subject Alternate Name du certificat de serveur pour que la connexion TLS/SSL réussisse.Changement de comportement pour Microsoft SQL Server ODBC Driver 18 et versions ultérieures Si Encrypt la valeur est définie strict, ce paramètre spécifie l’emplacement du certificat à utiliser pour la validation du certificat de serveur (correspondance exacte). Le pilote prend en charge les extensions de fichier PEM, DER et CER.Si Encrypt elle est définie true sur ou false, et que la TrustServerCertificate propriété n’est pas spécifiée ou définie nullsur , trueou , le falsepilote utilise la ServerName valeur de propriété sur l’URL de connexion comme nom d’hôte pour valider le certificat TLS/SSL SQL Server. |
HostNameInCertificate |
null |
Nom d’hôte à utiliser pour valider le certificat SQL Server TLS/SSL. Si la HostNameInCertificate propriété n’est pas spécifiée ou définie nullsur , le pilote utilise la ServerName valeur de propriété comme nom d’hôte pour valider le certificat TLS/SSL SQL Server. |