TDS 8.0
platí pro: SQL Server 2022 (16.x) azure SQL Databaseazure SQL Managed Instance
SQL Server 2022 (16.x), Azure SQL Database a Azure SQL Managed Instance podporují tabulkový datový stream (TDS) 8.0.
Protokol Tabulkového datového streamu (TDS) je protokolem aplikační vrstvy, který klienti používají pro připojení k SQL Serveru. SQL Server používá protokol TLS (Transport Layer Security) k šifrování dat přenášených přes síť mezi instancí SQL Serveru a klientskou aplikací.
TDS je zabezpečený protokol, ale v předchozích verzích SQL Serveru může být šifrování vypnuté nebo nepovoleno. Pro splnění standardů povinného šifrování při používání SQL Serveru byla zavedena iterace protokolu TDS: TDS 8.0.
Metoda handshake protokolu TLS teď předchází všem zprávám TDS, které zabalí relaci TDS do protokolu TLS, aby se vynucovala šifrování, aby TDS 8.0 odpovídalo https a dalším webovým protokolům. To výrazně přispívá ke správě provozu TDS, protože standardní síťová zařízení teď můžou filtrovat a bezpečně předávat dotazy SQL.
Další výhodou TDS 8.0 oproti předchozím verzím TDS je kompatibilita s protokolem TLS 1.3 a přichází standardy TLS. TDS 8.0 je také plně kompatibilní s protokolem TLS 1.2 a předchozími verzemi PROTOKOLU TLS.
Jak TDS funguje
Protokol TDS (Tabular Data Stream) je protokol na úrovni aplikace používaný k přenosu požadavků a odpovědí mezi klienty a databázovými serverovými systémy. V takových systémech klient obvykle vytváří dlouhodobé připojení k serveru. Po navázání připojení pomocí protokolu na úrovni přenosu se zprávy TDS používají ke komunikaci mezi klientem a serverem.
Během životnosti relace TDS existují tři fáze:
- Inicializace
- Autentizace
- Výměna dat
Šifrování se vyjedná během počáteční fáze, ale vyjednávání TDS probíhá přes nešifrované připojení. Připojení k SQL Serveru vypadá takto pro předchozí verze TDS 8.0:
TCP handshake ➡️ TDS prelogin (čistý text) a odpověď (čistý text) ➡️ TLS handshake ➡️ autentizace (šifrovaná) ➡️ výměna dat (může být šifrovaná nebo nešifrovaná)
Při zavedení TDS 8.0 jsou připojení SQL Serveru následující:
TCP handshake ➡️ TLS handshake ➡️ TDS prelogin (šifrovaný) a odpověď (šifrovaná) ➡️ autentizace (šifrovaná) ➡️ výměna dat (šifrovaná)
Striktní šifrování připojení
Chcete-li použít TDS 8.0, systém SQL Server 2022 (16.x) přidal strict
jako další typ šifrování připojení k ovladačům SQL Server (Encrypt=strict
). Pokud chcete použít typ šifrování připojení strict
, stáhněte si nejnovější verzi ovladačů .NET, ODBC, OLE DB, JDBC, PHP a Python.
- Microsoft ADO.NET pro SQL Server a Azure SQL Database verze 5.1 nebo novější
- ovladač ODBC pro SQL Server verze 18.1.2.1 nebo novější
- ovladač Microsoft OLE DB pro SQL Server verze 19.2.0 nebo novější
- ovladač Microsoft JDBC pro SQL Server verze 11.2.0 nebo novější
- ovladače Microsoftu pro PHP pro SQL Server verze 5.10 nebo vyšší
- ovladač SQL Pythonu – pyodbc
Aby se zabránilo útoku typu man-in-the-middle použitím šifrování připojení strict
, uživatelé nemůžou nastavit možnost TrustServerCertificate
na true
a důvěřovat jakémukoliv certifikátu, který server poskytl. Místo toho by uživatelé použili možnost HostNameInCertificate
k určení ServerName
certifikátu, který by měl být důvěryhodný. Certifikát poskytnutý serverem musí projít ověřením certifikátu.
Funkce, které nepodporují vynucení striktního šifrování
Možnost Force Strict Encryption
přidaná s TDS 8.0 v konfiguraci sítě SQL Serveru vynutí, aby všichni klienti jako typ šifrování používali strict
. Všem klientům nebo funkcím bez šifrování připojení strict
se nepodaří připojit k SQL Serveru.
Následující funkce nebo nástroje stále používají předchozí verzi ovladačů, které nepodporují TDS 8.0, a proto nemusí fungovat s šifrováním připojení strict
:
- Skupiny dostupnosti AlwaysOn
- Instance clusteru s podporou převzetí služeb při selhání AlwaysOn (FCI)
- Replikace SQL Serveru
- Přenos protokolů logování
- nástroj sqlcmd
- nástroj bcp
- Služba SQL Server CEIP
- Agent SQL Serveru
- Databázová pošta
- Propojené servery
- Konektor PolyBase k SQL Serveru
- Zapisovač SQL VSS
Další změny vlastností šifrování připojovacího řetězce
Do připojovacích řetězců pro šifrování se přidají následující dodatky:
Klíčové slovo | Výchozí | Popis |
---|---|---|
Encrypt |
nepravda |
existujícího chování Při true sql Server používá šifrování TLS pro všechna data odesílaná mezi klientem a serverem, pokud má server nainstalovaný certifikát. Rozpoznané hodnoty jsou true , false , yes a no . Další informace naleznete v tématu Syntaxe připojovacího řetězce.změna chování Při nastavení na strict sql Server používá TDS 8.0 pro všechna data odesílaná mezi klientem a serverem.Při nastavení na mandatory , true nebo yes sql Server používá TDS 7.x s šifrováním TLS/SSL pro všechna data odesílaná mezi klientem a serverem, pokud má server nainstalovaný certifikát.Pokud je nastavena hodnota optional , false nebo no , připojení používá TDS 7.x a bude zašifrováno pouze v případě, že to vyžaduje SQL Server. |
TrustServerCertificate |
false |
Existující chování Nastavte true a určete, že ovladač neověřuje certifikát TLS/SSL serveru. Pokud true , serverový certifikát TLS/SSL je při šifrování komunikační vrstvy pomocí protokolu TLS automaticky důvěryhodný.Pokud false , ovladač ověří certifikát TLS/SSL serveru. Pokud ověření certifikátu serveru selže, ovladač vyvolá chybu a ukončí připojení. Výchozí hodnota je false . Ujistěte se, že hodnota předaná serverName přesně odpovídá názvu Common Name (CN) nebo DNS v Subject Alternate Name v certifikátu serveru pro úspěšné připojení TLS/SSL.Změna chování ovladače Microsoft ODBC 18 pro SQL Server Pokud je Encrypt nastavena na strict , toto nastavení určuje umístění certifikátu, který se má použít pro ověření certifikátu serveru (přesná shoda). Ovladač podporuje přípony souborů PEM, DER a CER.Pokud je Encrypt nastavena na true nebo false a vlastnost TrustServerCertificate není zadána nebo je nastavena na null , true nebo false , ovladač použije hodnotu vlastnosti ServerName na adrese URL připojení jako název hostitele k ověření certifikátu TLS/SSL SQL Serveru. |
HostNameInCertificate |
null | Název hostitele, který se má použít při ověřování certifikátu TLS/SSL SQL Serveru. Pokud je vlastnost HostNameInCertificate nezadaná nebo nastavená na null , ovladač použije hodnotu vlastnosti ServerName jako název hostitele k ověření certifikátu TLS/SSL SQL Serveru. |