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)
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.
- Microsoft ADO.NET dla serwera SQL Server i usługi Azure SQL Database w wersji 5.1 lub nowszej
- sterownik ODBC dla programu SQL Server w wersji 18.1.2.1 lub nowszej
- sterownik Microsoft OLE DB dla programu SQL Server w wersji 19.2.0 lub nowszej
- sterownik JDBC firmy Microsoft dla programu SQL Server w wersji 11.2.0 lub nowszej
- sterowniki firmy Microsoft dla języka PHP dla programu SQL Server w wersji 5.10 lub nowszej
- sterownik SQL dla języka Python — pyodbc
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 true program 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 , yes i no . Aby uzyskać więcej informacji, zobacz Składnia parametrów połączenia.zmiana zachowania W przypadku ustawienia strict program 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 , true lub yes program 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 , false lub no połą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 , true lub 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. |