Поделиться через


TDS 8.0

Область применения:SQL Server 2022 (16.x) База данных SQL Azure Управляемый экземпляр SQL Azure

SQL Server 2022 (16.x), База данных SQL Azure и Управляемый экземпляр SQL Azure поддерживают табличный поток данных (TDS) 8.0.

Протокол табличного потока данных (TDS) — это протокол уровня приложений, используемый клиентами для подключения к SQL Server. SQL Server использует TLS для шифрования данных, передаваемых через сеть между экземпляром SQL Server и клиентским приложением.

TDS — это безопасный протокол, но в предыдущих версиях SQL Server шифрование можно отключить или не включать. Для соответствия стандартам обязательного шифрования при использовании SQL Server было введено итерация протокола TDS: TDS 8.0.

Подтверждение TLS теперь предшествует любым сообщениям TDS, упаковав сеанс TDS в TLS для принудительного шифрования, выравнивая TDS 8.0 с HTTPS и другими веб-протоколами. Это улучшение значительно способствует управлению трафиком TDS, так как стандартные сетевые устройства теперь могут фильтровать и безопасно передавать запросы SQL.

Преимущество TDS 8.0 по сравнению с предыдущими версиями TDS — это его совместимость с TLS 1.3 и стандартами TLS. TDS 8.0 также полностью совместим с TLS 1.2 и предыдущими версиями TLS.

Принцип работы TDS

Протокол потока табличных данных (TDS) — это протокол уровня приложения, используемый для передачи запросов и ответов между клиентами и системами сервера базы данных. Клиентская система обычно устанавливает длительное подключение к серверу. После установки подключения с помощью протокола уровня транспорта происходит обмен сообщениями TDS между клиентом и сервером SQL.

Во время существования сеанса TDS существует три этапа:

  • Инициализация
  • Проверка подлинности
  • Обмен данными

Шифрование согласовывается на начальном этапе, однако согласование TDS происходит через незашифрованное подключение. Подключение SQL Server выглядит следующим образом для предыдущих версий к TDS 8.0:

➡️ Обмен данными TDS (cleartext) и ответ (cleartext) ➡️ ➡️ проверки подлинности (зашифрованных) ➡️ данных tls (может быть зашифрован или незашифрован)

С появлением TDS 8.0 соединения SQL Server будут следующими:

➡️ Подтверждение TCP-подтверждения TLS ➡️ предварительного журнала TDS (зашифровано) и ответ ➡️ (зашифрованная) проверка подлинности (зашифрованная) обмен данными (зашифрованная) (зашифрованная) обмен данными (зашифрованная) ➡️

Матрица совместимости для TDS, TLS, ОС и шифрования

Вы можете включить версии TLS 1.2 и TLS 1.3 на уровне ОС, что позволяет клиентским подключениям к SQL Server использовать несколько версий протоколов TDS (TDS 7.x и 8.0). В зависимости от версии ОС протокол TLS 1.2 и TLS 1.3 можно включить по умолчанию.

Только TDS 7.x поддерживает нешифрованное (необязательное) взаимодействие, TDS 8.0 не поддерживает это. TDS 7.x поддерживает шифрование с помощью TLS до версии 1.2. Для TDS 8.0 требуется шифрование— все это всегда шифруется с помощью TDS 8.0 (Encrypt=Strict). TDS 8.0 не требует минимальной версии TLS и поддерживает TLS 1.3. Поддержка TLS 1.3 зависит от версии операционной системы. В следующей таблице приведены различные сценарии с параметрами шифрования и соответствующими версиями TLS и TDS.

Шифрование
Опция
Версия TLS включена Версия ОС Ожидаемый
connection
результат
Примечания.
Строгий Только TLS 1.3 (или более поздней версии) Windows 11

Windows Server 2022 г. и более поздних версий
Success Согласованный протокол TLS 1.3; Триггер TDS 8.0 (Encrypt=Strict)
Строгий TLS 1.2 и TLS 1.3 Windows 11

Windows Server 2022 г. и более поздних версий
Success Согласованный протокол TLS 1.3; Триггер TDS 8.0 (Encrypt=Strict)
Строгий Только TLS 1.2 (или более ранние версии) Windows 11

Windows Server 2022 г. и более поздних версий
Success Согласованный протокол TLS 1.2; Триггер TDS 8.0 (Encrypt=Strict)
Строгий Только TLS 1.2 (или более ранние версии) Windows 10

Windows Server 2019 / 2016
Success Согласованный протокол TLS 1.2; Триггер TDS 8.0 (tls 1.3 недоступен)
Mandatory Только TLS 1.3 (или более поздней версии) Windows 11

Windows Server 2022 г. и более поздних версий
Failure "Encrypt=Mandatory" несовместимо с TLS 1.3 для TDS 8.0
Mandatory TLS 1.2 и TLS 1.3 Windows 11

Windows Server 2022 г. и более поздних версий
Success Согласованный протокол TLS 1.2; TDS 8.0 не активируется (Encrypt=Обязательный)
Mandatory Только TLS 1.2 (или более ранние версии) Windows 11

Windows Server 2022 г. и более поздних версий
Success Согласованный протокол TLS 1.2; TDS 8.0 не активируется (Encrypt=Обязательный)
Mandatory Только TLS 1.2 (или более ранние версии) Windows 10

Windows Server 2019 / 2016
Success Согласованный протокол TLS 1.2; TDS 8.0 не поддерживается в этой ОС (использует TDS 7.x)
Необязательно Только TLS 1.3 (или более поздней версии) Windows 11

Windows Server 2022 г. и более поздних версий
Failure Encrypt=необязательно (false) — это TDS 7.x, который несовместим с TLS 1.3.
Необязательно TLS 1.2 и TLS 1.3 Windows 11

Windows Server 2022 г. и более поздних версий
Success Согласованный протокол TLS 1.3; TDS 8.0 не активируется (Encrypt=Необязательный)
Необязательно Только TLS 1.2 (или более ранние версии) Windows 11

Windows Server 2022 г. и более поздних версий
Success Согласованный протокол TLS 1.2; TDS 8.0 не активируется (Encrypt=Необязательный)
Необязательно Только TLS 1.2 (или более ранние версии) Windows 10

Windows Server 2019 / 2016
Success Согласованный протокол TLS 1.2; необязательное шифрование; подключение может
успех без шифрования
Любое Только TLS 1.3 (или более поздней версии) Windows 10

Windows Server 2019 / 2016
Failure TLS 1.3 не поддерживается в этой ОС

Дополнительные сведения о том, как клиенты используют разные версии TDS, см. в разделе "Изменения в свойствах шифрования строки подключения ".

Поддержка SQL Server 2025

Предварительная версия SQL Server 2025 (17.x) предоставляет поддержку TDS 8.0 для следующих средств командной строки и функций SQL Server:

1Поддержка TDS 8.0 содержит критические изменения этих функций.

Строгое шифрование подключения

Чтобы использовать TDS 8.0, в SQL Server 2022 (16.x) был добавлен strict в качестве дополнительного параметра шифрования подключений в драйверах SQL Server (Encrypt=strict). Чтобы использовать strict тип шифрования подключения, скачайте последнюю версию драйверов .NET, ODBC, OLE DB, JDBC, PHP и Python:

Для предотвращения атаки «человек в середине» с использованием strict шифрования подключения пользователи не могут установить параметр TrustServerCertificate на true и разрешить любой сертификат, предоставленный сервером. Вместо этого пользователи будут использовать HostNameInCertificate параметр, чтобы указать сертификат ServerName , который должен быть доверенным. Сертификат, предоставленный сервером, должен пройти проверку сертификата. Дополнительные сведения о проверке сертификатов см. в разделе "Требования к сертификату" для SQL Server

Функции, не поддерживающие принудительное строгое шифрование

Параметр Force Strict Encryption , добавленный с TDS 8.0 в конфигурации сети SQL Server, заставляет всех клиентов использовать strict в качестве типа шифрования. Не удается подключиться к SQL Server любым клиентам или функциям без шифрования подключений strict .

Следующие функции или средства по-прежнему используют предыдущие версии драйверов, которые не поддерживают TDS 8.0, и, как это, может не работать с шифрованием strict подключения:

  • Почта базы данных

Дополнительные изменения в свойствах шифрования строки подключения

Следующие параметры добавляются в строки подключения для шифрования связи:

Ключевое слово По умолчанию. Описание
Encrypt ложный Предыдущие параметры строки подключения

Допустимые параметры
- trueили yes
- false, или no.
Дополнительные сведения см. в статье Синтаксис строки подключения. Когда trueSQL Server использует шифрование TLS 1.2 для всех данных, передаваемых между клиентом и сервером, если у сервера установлен сертификат.

Последние параметры строки подключения

Допустимые параметры
- strict
- , mandatory или true, или yes
- optional, или , или falseno.

Если задано значение strict, SQL Server использует TDS 8.0 для всех данных, передаваемых между клиентом и сервером.

Когда задано значение mandatory, true или yes, SQL Server использует TDS 7.x с шифрованием TLS/SSL для всех данных, передаваемых между клиентом и сервером, если на сервере установлен сертификат.

Если задано значение optional, false или no, подключение использует TDS 7.x и будет шифроваться только в том случае, если это требуется сервером SQL Server.
TrustServerCertificate ложный Предыдущий параметр строки подключения

Если задано true значение (не рекомендуется), драйвер не проверяет сертификат TLS/SSL сервера. Если trueсервер TLS/SSL-сертификат автоматически является доверенным (обход проверки) при шифровании уровня связи с помощью TLS.

Если значение — false, то драйвер выполнит проверку TLS-сертификата сервера. Если проверка сертификата сервера завершается ошибкой, в работе драйвера будет вызвана ошибка и подключение будет закрыто. Значение по умолчанию — false. Для успешного установления TLS/SSL-подключения передаваемое в serverName значение должно в точности совпадать с Common Name (CN) или DNS-именем в Subject Alternate Name сертификата сервера.

Изменение поведения драйвера ODBC Microsoft SQL Server версии 18 и более поздних

Если Encrypt задано значение strict, этот параметр указывает расположение сертификата, используемого для проверки сертификата сервера (точное соответствие). Драйвер поддерживает расширения ФАЙЛОВ PEM, DER и CER.

Если Encrypt задано truefalseTrustServerCertificateзначение или значение свойства не указано или задано значение , nullили truefalseдрайвер использует ServerName значение свойства в URL-адресе подключения в качестве имени узла для проверки TLS/SSL-сертификата SQL Server.
HostNameInCertificate null Имя узла используется для проверки TLS/SSL-сертификата SQL Server. HostNameInCertificate Если свойство не указано или задано, nullдрайвер использует ServerName значение свойства в качестве имени узла для проверки TLS/SSL-сертификата SQL Server.