TDS 8.0

Si applica a: sql server 2022 (16.x) database SQL di Azure Istanza gestita di SQL di Azure

SQL Server 2022 (16.x), database SQL di Azure e Istanza gestita di SQL di Azure supportano TDS (Tabular Data Stream) 8.0.

Il protocollo TDS (Tabular Data Stream) è un protocollo del livello applicazione usato dai client per connettersi a SQL Server. SQL Server usa Transport Layer Security (TLS) per crittografare i dati trasmessi attraverso una rete tra un'istanza di SQL Server e un'applicazione client.

TDS è un protocollo sicuro, ma nelle versioni precedenti di SQL Server la crittografia potrebbe essere disattivata o non abilitata. Per soddisfare gli standard di crittografia obbligatoria durante l'uso di SQL Server, è stata introdotta un'iterazione del protocollo TDS: TDS 8.0.

L'handshake TLS precede ora tutti i messaggi TDS, che esegue il wrapping della sessione TDS in TLS per applicare la crittografia, rendendo TDS 8.0 allineato con HTTPS e altri protocolli Web. Questo contribuisce in modo significativo alla gestibilità del traffico TDS, poiché le appliance di rete standard sono ora in grado di filtrare e passare in modo sicuro le query SQL.

Un altro vantaggio per TDS 8.0 rispetto alle versioni precedenti di TDS è la compatibilità con TLS 1.3 e gli standard TLS da venire. TDS 8.0 è anche completamente compatibile con TLS 1.2 e versioni precedenti di TLS.

Funzionamento di TDS

Il protocollo TDS (Tabular Data Stream) è un protocollo a livello di applicazione usato per il trasferimento di richieste e risposte tra client e sistemi server di database. In questi sistemi, il client stabilisce in genere una connessione di lunga durata con il server. Dopo aver stabilito la connessione usando un protocollo a livello di trasporto, i messaggi TDS vengono usati per comunicare tra il client e il server.

Durante la durata della sessione TDS, esistono tre fasi:

  • Inizializzazione
  • Autenticazione
  • Scambio di dati

La crittografia viene negoziata durante la fase iniziale, ma la negoziazione TDS avviene su una connessione non crittografata. La connessione SQL Server è simile alla seguente per le versioni precedenti a TDS 8.0:

Scambio di dati TLS handshake ➡️ TDS prelogin (cleartext) e risposta (cleartext) ➡️ TLS handshake ➡️ authentication (encrypted) ➡️ (potrebbe essere crittografato o non crittografato)

Con l'introduzione di TDS 8.0, le connessioni di SQL Server sono le seguenti:

Handshake TLS handshake ➡️ ➡️ TDS prelogin (crittografato) e scambio di dati di autenticazione (crittografata) e risposta (crittografato) ➡️ ➡️

Crittografia della connessione rigorosa

Per usare TDS 8.0, SQL Server 2022 (16.x) aggiunto strict come tipo di crittografia di connessione aggiuntivo ai driver di SQL Server (Encrypt=strict). Per usare il strict tipo di crittografia della connessione, scaricare la versione più recente dei driver .NET, ODBC, OLE DB, JDBC, PHP e Python.

Per evitare un attacco man-in-the-middle con strict crittografia della connessione, gli utenti non sono in grado di impostare l'opzione TrustServerCertificatetrue su e considerare attendibile qualsiasi certificato fornito dal server. Gli utenti userebbero invece l'opzione HostNameInCertificate per specificare il certificato ServerName che deve essere considerato attendibile. Il certificato fornito dal server deve superare la convalida del certificato.

Funzionalità che non supportano l'uso forzato della crittografia strict

L'opzione Force Strict Encryption aggiunta con TDS 8.0 in Configurazione di rete di SQL Server forza l'uso strict di tutti i client come tipo di crittografia. I client o le funzionalità senza la crittografia della strict connessione non riescono a connettersi a SQL Server.

Le funzionalità o gli strumenti seguenti usano ancora la versione precedente dei driver che non supportano TDS 8.0 e, di conseguenza, potrebbero non funzionare con la crittografia della strict connessione:

  • Gruppi di disponibilità AlwaysOn
  • Istanza del cluster di failover AlwaysOn
  • Replica SQL Server
  • Log shipping
  • Utilità sqlcmd
  • utilità bcp
  • Servizio Analisi utilizzo software di SQL Server
  • SQL Server Agent
  • Posta elettronica database
  • Server collegati
  • Connettore Polybase a SQL Server

Modifiche aggiuntive alle proprietà di crittografia stringa di connessione

Le aggiunte seguenti vengono aggiunte alle stringa di connessione per la crittografia:

Parola chiave Default Descrizione
Encrypt false Comportamento esistente
Quando true, SQL Server usa la crittografia TLS per tutti i dati inviati tra il client e il server se il server dispone di un certificato installato. I valori riconosciuti sono true, false, yes e no. Per altre informazioni, vedere sintassi delle stringhe di Connessione ion.

Modifica del comportamento
Se impostato su strict, SQL Server usa TDS 8.0 per tutti i dati inviati tra il client e il server.

Se impostato su mandatory, trueo yes, SQL Server usa TDS 7.x con crittografia TLS/SSL per tutti i dati inviati tra il client e il server se il server dispone di un certificato installato.

Se impostato su optional, falseo no, la connessione usa TDS 7.x e verrà crittografata solo se richiesto da SQL Server.
TrustServerCertificate false Comportamento esistente
Impostare su true per specificare che il driver non convalida il certificato TLS/SSL del server. Se true, il certificato TLS/SSL del server viene considerato automaticamente attendibile quando il livello di comunicazione viene crittografato tramite TLS.

Se false, il driver convalida il certificato TLS/SSL del server. Se la convalida del certificato del server ha esito negativo, il driver genera un errore e chiude la connessione. Il valore predefinito è false. Assicurarsi che il valore passato a corrisponda esattamente al serverNameCommon Name (CN) nome DNS o nel Subject Alternate Name nel certificato del server affinché una connessione TLS/SSL abbia esito positivo.

Modifica del comportamento per Microsoft ODBC Driver 18 per SQL Server
Se Encrypt è impostato su strict, questa impostazione specifica il percorso del certificato da usare per la convalida del certificato server (corrispondenza esatta). Il driver supporta estensioni di file PEM, DER e CER.

Se Encrypt è impostato su true o falsee la TrustServerCertificate proprietà non è specificata o impostata su null, trueo false, il driver usa il valore della ServerName proprietà nell'URL di connessione come nome host per convalidare il certificato TLS/SSL di SQL Server.
HostNameInCertificate Null Nome host da usare per la convalida del certificato TLS/SSL di SQL Server. Se la proprietà HostNameInCertificate non è specificata o impostata su null, il driver usa il valore della ServerName proprietà come nome host per convalidare il certificato TLS/SSL di SQL Server.