Partager via


TDS 8.0

S’applique à : SQL Server 2022 (16.x) et versions ultérieures d’Azure SQL Database Azure SQLManaged InstanceSQL 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 :

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 :

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.