Megosztás:


TDS 8.0

A következőkre vonatkozik: Az SQL Server 2022 (16.x) és újabb verziói az Azure SQL DatabaseAzure SQL Managed InstanceSQL-adatbázist a Microsoft Fabricben

Az SQL Server 2022 (16.x), az Azure SQL Database és az Azure SQL Managed Instance támogatja a táblázatos adatfolyam (TDS) 8.0-s verziójának támogatását.

A Táblázatos adatfolyam (TDS) protokoll egy alkalmazásréteg protokoll, amelyet az ügyfelek az SQL Serverhez való csatlakozáshoz használnak. Az SQL Server a Transport Layer Security (TLS) használatával titkosítja az SQL Server egy példánya és egy ügyfélalkalmazás között hálózaton keresztül továbbított adatokat.

A TDS egy biztonságos protokoll, de az SQL Server korábbi verzióiban a titkosítás kikapcsolható vagy nem engedélyezett. Az SQL Server használata során a kötelező titkosítási szabványoknak való megfelelés érdekében bevezettük a TDS protokoll iterációját: TDS 8.0.

A TLS kézfogás most már megelőzi a TDS-üzeneteket, a TDS-munkamenetet a TLS-ben tördelve kényszeríti a titkosítást, és a TDS 8.0-t a HTTPS-hez és más webes protokollokhoz igazítja. Ez a fejlesztés jelentősen hozzájárul a TDS-forgalom kezelhetőségéhez, mivel a standard hálózati berendezések mostantól képesek szűrni és biztonságosan átengedni az SQL-lekérdezéseket.

A TDS 8.0 előnye a korábbi TDS-verziókhoz képest az, hogy kompatibilis a TLS 1.3-val és a TLS szabványokkal. A TDS 8.0 teljes mértékben kompatibilis a TLS 1.2-vel és a korábbi TLS-verziókkal is.

A TDS működése

A Tabular Data Stream (TDS) protokoll egy alkalmazásszintű protokoll, amely a kérések és válaszok ügyfelek és adatbázis-kiszolgáló rendszerek közötti átvitelére szolgál. Az ügyfélrendszer általában hosszú élettartamú kapcsolatot létesít a kiszolgálóval. Miután létrejött a kapcsolat egy átviteli szintű protokoll használatával, a rendszer TDS-üzeneteket cserél az ügyfél és az SQL Server közötti kommunikációra.

A TDS-munkamenet élettartama alatt három fázis van:

  • Inicializálás
  • Hitelesítés
  • Adatcsere

A titkosítás egyeztetése a kezdeti fázisban történik, de a TDS-egyeztetés titkosítatlan kapcsolaton keresztül történik. Az SQL Server-kapcsolat így néz ki a TDS 8.0 korábbi verzióihoz:

TCP-kézfogás ➡️ TDS előbejelentkezés (szöveges formátum) és válasz (szöveges formátum) ➡️ TLS-kézfogás ➡️ hitelesítés (titkosított) ➡️ adatcsere (lehet titkosított vagy nem titkosított)

A TDS 8.0 bevezetésével az SQL Server-kapcsolatok a következők:

TCP handshake ➡️ TLS handshake ➡️ TDS prelogin (titkosított) és válaszadás (titkosított) ➡️ hitelesítés (titkosított) ➡️ adatcsere (titkosított)

Kompatibilitási mátrix tDS, TLS, operációs rendszer és titkosítási beállításokhoz

A TLS 1.2 és a TLS 1.3 verziót is engedélyezheti operációsrendszer-szinten, így az SQL Serverrel létesített ügyfélkapcsolatok több TDS-protokollverziót (TDS 7.x és 8.0) is használhatnak. Az operációs rendszer verziójától függően a TLS 1.2 és a TLS 1.3 alapértelmezés szerint engedélyezve lehet.

Csak a TDS 7.x támogatja a nem titkosított (nem kötelező) kommunikációt, a TDS 8.0 ezt nem támogatja. A TDS 7.x az 1.2-es verzióig támogatja a TLS használatával történő titkosítást. A TDS 8.0 titkosítást igényel – minden titkosítva van a TDS 8.0-val (Encryption=Strict). A TDS 8.0-nak nincs minimális TLS-verziókövetelménye, és támogatja a TLS 1.3-at. A TLS 1.3 támogatása az operációs rendszer verziójától függ. Az alábbi táblázat a különböző forgatókönyveket foglalja össze a titkosítási lehetőségekkel, valamint a megfelelő TLS- és TDS-verziókkal.

Titkosít
option
TLS-verzió engedélyezve Operációs rendszer verziója Várt
kapcsolat
eredmény
Jegyzetek
Szigorú Csak TLS 1.3 (vagy újabb) Windows 11

2022-Windows Server és újabb verziók
Success TLS 1.3 tárgyalásos; TDS 8.0 aktiválva (Encrypt=Strict)
Szigorú TLS 1.2 és TLS 1.3 Windows 11

2022-Windows Server és újabb verziók
Success TLS 1.3 tárgyalásos; TDS 8.0 aktiválva (Encrypt=Strict)
Szigorú Csak TLS 1.2 (vagy korábbi) Windows 11

2022-Windows Server és újabb verziók
Success TLS 1.2 tárgyalásos; TDS 8.0 aktiválva (Encrypt=Strict)
Szigorú Csak TLS 1.2 (vagy korábbi) Windows 10

Windows Server 2019 / 2016
Success TLS 1.2 tárgyalásos; TDS 8.0 aktiválva (A TLS 1.3 nem érhető el)
Mandatory Csak TLS 1.3 (vagy újabb) Windows 11

2022-Windows Server és újabb verziók
Failure Az Encrypt=Kötelező beállítás nem kompatibilis a TLS 1.3-mal a TDS 8.0 esetében.
Mandatory TLS 1.2 és TLS 1.3 Windows 11

2022-Windows Server és újabb verziók
Success TLS 1.2 tárgyalásos; A TDS 8.0 nincs aktiválva (Encrypt=Kötelező)
Mandatory Csak TLS 1.2 (vagy korábbi) Windows 11

2022-Windows Server és újabb verziók
Success TLS 1.2 tárgyalásos; A TDS 8.0 nincs aktiválva (Encrypt=Kötelező)
Mandatory Csak TLS 1.2 (vagy korábbi) Windows 10

Windows Server 2019 / 2016
Success TLS 1.2 tárgyalásos; A TDS 8.0 nem támogatott ezen az operációs rendszeren (TDS 7.x-et használ)
Opcionális Csak TLS 1.3 (vagy újabb) Windows 11

2022-Windows Server és újabb verziók
Failure A Encrypt=Optional (Nem kötelező, hamis) a TDS 7.x, amely nem kompatibilis a TLS 1.3-mal.
Opcionális TLS 1.2 és TLS 1.3 Windows 11

2022-Windows Server és újabb verziók
Success TLS 1.3 tárgyalásos; A TDS 8.0 nincs aktiválva (Encrypt=Optional)
Opcionális Csak TLS 1.2 (vagy korábbi) Windows 11

2022-Windows Server és újabb verziók
Success TLS 1.2 tárgyalásos; A TDS 8.0 nincs aktiválva (Encrypt=Optional)
Opcionális Csak TLS 1.2 (vagy korábbi) Windows 10

Windows Server 2019 / 2016
Success TLS 1.2 megállapodott; az titkosítás nem kötelező; a kapcsolat lehetséges
titkosítás nélkül is sikeres
Bármely Csak TLS 1.3 (vagy újabb) Windows 10

Windows Server 2019 / 2016
Failure A TLS 1.3 nem támogatott ezen az operációs rendszeren

További információ arról, hogyan használják az ügyfelek a különböző TDS-verziókat, tekintse meg a kulcsszavak használatát a kapcsolati sztring titkosítási tulajdonságainak módosítása szakaszban.

AZ SQL Server 2025 támogatása

Az SQL Server 2025 (17.x) TDS 8.0-támogatást nyújt a következő parancssori eszközökhöz és SQL Server-funkciókhoz:

1A TDS 8.0 támogatása kompatibilitástörő változásokat vezet be ezen funkciókban.

Szigorú kapcsolattitkosítás

A TDS 8.0 használatának érdekében az SQL Server 2022 (16.x) a kapcsolat titkosításának további lehetőségeként hozzáadta a strict és az SQL Server-illesztőprogramokhoz (Encrypt=strict). A kapcsolattitkosítási strict típus használatához töltse le a .NET, ODBC, OLE DB, JDBC, PHP és Python illesztőprogramok legújabb verzióját:

A középtámadás megelőzése érdekében a kapcsolat titkosításával a felhasználók nem állíthatják be az strict opciót TrustServerCertificate-re, és nem engedélyezhetik a szerver által biztosított bármely tanúsítványt. Ehelyett a felhasználók a HostNameInCertificate opciót használják annak a tanúsítványnak a megadására, amelyet meg kell bízni ServerName. A kiszolgáló által megadott tanúsítványnak át kell adnia a tanúsítványérvényesítést. A tanúsítványérvényesítésről további információt az SQL Server tanúsítványkövetelményei című témakörben talál.

A kapcsolati sztring titkosítási tulajdonságainak további módosítása

A kapcsolati sztringekhez a következő lehetőségek vannak hozzáadva a kommunikáció titkosításához:

Kulcsszó Alapértelmezett Leírás
Encrypt téves Korábbi kapcsolati sztringbeállítások

Az érvényes beállítások a következők:
- truevagy yes
- , false vagy no.
További információ: Kapcsolati sztring szintaxisa. Amikor trueaz SQL Server TLS 1.2 titkosítást használ az ügyfél és a kiszolgáló között kicserélt összes adathoz, ha a kiszolgáló rendelkezik telepített tanúsítvánnyal.

A legújabb kapcsolati sztring beállításai

Az érvényes beállítások a következők:
- strict
- mandatory, vagy true, vagy yes
- optional, vagy false.no

Ha be van állítva, az strictSQL Server a TDS 8.0-t használja az ügyfél és a kiszolgáló közötti összes adatcseréhez.

Ha mandatory, true vagy yes van beállítva, a SQL Server a TDS 7.x és TLS/SSL titkosítást használja az ügyfél és a kiszolgáló között küldött összes adathoz, ha a kiszolgálón telepítve van egy tanúsítvány.

Ha optional, false vagy no értékre van állítva, a kapcsolat TDS 7.x-et fog használni, és csak akkor lesz titkosítva, ha az SQL Server megköveteli.
TrustServerCertificate téves Korábbi kapcsolati karakterlánc beállítás

Ha be van true állítva (nem ajánlott), az illesztőprogram nem ellenőrzi a kiszolgáló TLS/SSL-tanúsítványát. Ha truea kiszolgáló TLS-/SSL-tanúsítványa automatikusan megbízható (az ellenőrzés megkerülése), amikor a kommunikációs réteg TLS használatával van titkosítva.

Ha false, az illesztőprogram ellenőrzi a kiszolgáló TLS/SSL-tanúsítványát. Ha a kiszolgálótanúsítvány érvényesítése sikertelen, az illesztőprogram hibát jelez, és bezárja a kapcsolatot. Az alapértelmezett érték a false. Győződjön meg arról, hogy az átadott serverName érték pontosan egyezik a Common Name (CN) kiszolgálótanúsítványban megadott Subject Alternate Name vagy DNS-névvel ahhoz, hogy a TLS/SSL-kapcsolat sikeres legyen.

A Microsoft SQL Server ODBC Driver 18 és újabb verziójának viselkedésének módosítása

Ha Encrypt be van állítva strict, ez a beállítás határozza meg a kiszolgálótanúsítvány-ellenőrzéshez használni kívánt tanúsítvány helyét (pontos egyezés). Az illesztőprogram támogatja a PEM, DER és CER fájlkiterjesztéseket.

Ha a Encrypt tulajdonság true vagy false értékre van állítva, és a TrustServerCertificate tulajdonság nincs megadva, vagy null, true vagy false értékre van állítva, akkor az illesztő a kapcsolati URL ServerName tulajdonságértékét használja állomásnévként az SQL Server TLS/SSL-tanúsítvány ellenőrzéséhez.
HostNameInCertificate null Az SQL Server TLS/SSL-tanúsítvány érvényesítéséhez használandó állomásnév. Ha a HostNameInCertificate tulajdonság nincs meghatározva vagy be van állítva null, az illesztőprogram a ServerName tulajdonság értékét használja állomásnévként az SQL Server TLS/SSL-tanúsítvány érvényesítéséhez.