Udostępnij za pośrednictwem


TDS 8.0

Dotyczy: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed Instance

Sql Server 2022 (16.x), Azure SQL Database i Azure SQL Managed Instance obsługują tabelaryczny strumień danych (TDS) 8.0.

Protokół strumienia danych tabelarycznych (TDS) to protokół warstwy aplikacji używany przez klientów do nawiązywania połączenia z programem SQL Server. Program SQL Server używa protokołu Transport Layer Security (TLS) do szyfrowania danych przesyłanych przez sieć między wystąpieniem programu SQL Server i aplikacją kliencką.

TDS to bezpieczny protokół, ale w poprzednich wersjach programu SQL Server szyfrowanie może być wyłączone lub nie jest włączone. Aby spełnić standardy obowiązkowego szyfrowania podczas korzystania z programu SQL Server, wprowadzono iterację protokołu TDS: TDS 8.0.

Uzgadnianie protokołu TLS poprzedza teraz wszystkie komunikaty TDS, opakowujące sesję TDS w protokole TLS w celu wymuszania szyfrowania, co sprawia, że protokół TDS 8.0 jest zgodny z protokołem HTTPS i innymi protokołami internetowymi. Znacząco przyczynia się to do możliwości zarządzania ruchem TDS, ponieważ standardowe urządzenia sieciowe są teraz w stanie filtrować i bezpiecznie przekazywać zapytania SQL.

Kolejną korzyścią TDS 8.0 w porównaniu z poprzednimi wersjami TDS jest zgodność ze standardami TLS 1.3 oraz nadchodzącymi standardami TLS. Protokół TDS 8.0 jest również w pełni zgodny z protokołem TLS 1.2 i poprzednimi wersjami protokołu TLS.

Jak działa TDS

Protokół strumienia danych tabelarycznych (TDS) to protokół na poziomie aplikacji używany do transferu żądań i odpowiedzi między klientami i systemami serwerów baz danych. W takich systemach klient zazwyczaj ustanawia długotrwałe połączenie z serwerem. Po nawiązaniu połączenia przy użyciu protokołu na poziomie transportu komunikaty TDS są używane do komunikacji między klientem a serwerem.

Podczas trwania sesji TDS istnieją trzy fazy:

  • Inicjalizacja
  • Uwierzytelnianie
  • Wymiana danych

Szyfrowanie jest negocjowane w początkowej fazie, ale negocjacje TDS odbywa się za pośrednictwem nieszyfrowanego połączenia. Połączenie z programem SQL Server wygląda następująco w przypadku wcześniejszych wersji usługi TDS 8.0:

Uzgadnianie TCP ➡️ TDS przedlogin (tekst jawny) i odpowiedź (tekst jawny) ➡️ uzgadnianie TLS ➡️ uwierzytelnianie (zaszyfrowane) ➡️ wymiana danych (może być zaszyfrowana lub niezaszyfrowana)

Wraz z wprowadzeniem usługi TDS 8.0 połączenia programu SQL Server są następujące:

TCP handshake ➡️ TLS handshake ➡️ wstępne logowanie TDS (zaszyfrowane) i odpowiedź (zaszyfrowane) ➡️ uwierzytelnianie (zaszyfrowane) ➡️ wymiana danych (zaszyfrowane)

Ścisłe szyfrowanie połączeń

Aby użyć usługi TDS 8.0, program SQL Server 2022 (16.x) dodał strict jako dodatkowy typ szyfrowania połączenia ze sterownikami programu SQL Server (Encrypt=strict). Aby użyć typu szyfrowania połączeń strict, pobierz najnowszą wersję sterowników .NET, ODBC, OLE DB, JDBC, PHP i Python.

Aby zapobiec atakowi typu man-in-the-middle z szyfrowaniem połączenia strict, użytkownicy nie mogą ustawić opcji TrustServerCertificate na true ani ufać żadnemu certyfikatowi dostarczonemu przez serwer. Zamiast tego użytkownicy będą używać opcji HostNameInCertificate, aby określić certyfikat ServerName, który powinien być zaufany. Certyfikat dostarczony przez serwer musi przejść weryfikację certyfikatu.

Funkcje, które nie obsługują wymuszania ścisłego szyfrowania

Opcja Force Strict Encryption dodana z TDS 8.0 w konfiguracji sieci programu SQL Server wymusza, aby wszyscy klienci używali strict jako typu szyfrowania. Wszyscy klienci lub funkcje bez szyfrowania połączenia strict nie mogą nawiązać połączenia z programem SQL Server.

Następujące funkcje lub narzędzia nadal używają poprzedniej wersji sterowników, które nie obsługują protokołu TDS 8.0, a w związku z tym mogą nie działać z szyfrowaniem połączenia strict:

  • Grupy dostępności Always On
  • Zawsze włączone wystąpienie klastra trybu failover (FCI)
  • Replikacja programu SQL Server
  • Przesyłanie dzienników
  • narzędzie sqlcmd
  • bcp narzędzie
  • Usługa CEIP programu SQL Server
  • SQL Server Agent
  • Poczta bazy danych
  • Połączone serwery
  • Łącznik Polybase z programem SQL Server
  • Składnik zapisywania usługi VSS SQL

Dodatkowe zmiany właściwości szyfrowania parametrów połączenia

Następujące dodatki są dodawane do parametrów połączenia na potrzeby szyfrowania:

Słowo kluczowe Domyślny Opis
Encrypt false istniejące zachowanie

W przypadku trueprogram SQL Server używa szyfrowania TLS dla wszystkich danych wysyłanych między klientem a serwerem, jeśli serwer ma zainstalowany certyfikat. Rozpoznane wartości to true, false, yesi no. Aby uzyskać więcej informacji, zobacz Składnia parametrów połączenia.

zmiana zachowania

W przypadku ustawienia strictprogram SQL Server używa protokołu TDS 8.0 dla wszystkich danych wysyłanych między klientem a serwerem.

W przypadku ustawienia wartości mandatory, truelub yesprogram SQL Server używa protokołu TDS 7.x z szyfrowaniem TLS/SSL dla wszystkich danych wysyłanych między klientem a serwerem, jeśli serwer ma zainstalowany certyfikat.

W przypadku ustawienia wartości optional, falselub nopołączenie używa protokołu TDS 7.x i będzie szyfrowane tylko wtedy, gdy jest to wymagane przez program SQL Server.
TrustServerCertificate fałsz istniejące zachowanie

Ustaw wartość true, aby określić, że sterownik nie weryfikuje certyfikatu TLS/SSL serwera. Jeśli true, to certyfikat TLS/SSL serwera jest automatycznie uznawany za zaufany, gdy warstwa komunikacji jest szyfrowana przy użyciu protokołu TLS.

Jeśli false, sterownik weryfikuje certyfikat TLS/SSL serwera. Jeśli weryfikacja certyfikatu serwera zakończy się niepowodzeniem, sterownik zgłasza błąd i zamyka połączenie. Wartość domyślna to false. Upewnij się, że wartość przekazana do serverName dokładnie pasuje do nazwy Common Name (CN) lub DNS w Subject Alternate Name w certyfikacie serwera na potrzeby pomyślnego połączenia TLS/SSL.

zmiana zachowania sterownika Microsoft ODBC 18 dla programu SQL Server

Jeśli Encrypt jest ustawiona na strict, to ustawienie określa lokalizację certyfikatu do użycia na potrzeby weryfikacji certyfikatu serwera (dokładne dopasowanie). Sterownik obsługuje rozszerzenia plików PEM, DER i CER.

Jeśli Encrypt jest ustawiona na wartość true lub false, a właściwość TrustServerCertificate jest nieokreślona lub ustawiona na wartość null, truelub false, sterownik używa wartości właściwości ServerName w adresie URL połączenia jako nazwy hosta w celu zweryfikowania certyfikatu TLS/SSL programu SQL Server.
HostNameInCertificate null Nazwa hosta do użycia podczas weryfikowania certyfikatu TLS/SSL programu SQL Server. Jeśli właściwość HostNameInCertificate jest nieokreślona lub ustawiona na null, sterownik używa wartości właściwości ServerName jako nazwy hosta w celu zweryfikowania certyfikatu TLS/SSL programu SQL Server.