Sdílet prostřednictvím


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.

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 truesql 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, yesa no. Další informace naleznete v tématu Syntaxe připojovacího řetězce.

změna chování

Při nastavení na strictsql Server používá TDS 8.0 pro všechna data odesílaná mezi klientem a serverem.

Při nastavení na mandatory, truenebo yessql 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, falsenebo 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 falsea vlastnost TrustServerCertificate není zadána nebo je nastavena na null, truenebo 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.