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 используются для обмена данными между клиентом и сервером.
Во время существования сеанса TDS существует три этапа:
- Инициализация
- Проверка подлинности
- Обмен данными
Шифрование согласовывается на начальном этапе, однако согласование TDS происходит через незашифрованное подключение. Подключение SQL Server выглядит следующим образом для предыдущих версий к TDS 8.0:
➡️ Обмен данными TDS (cleartext) и ответ (cleartext) ➡️ ➡️ проверки подлинности (зашифрованных) ➡️ данных tls (может быть зашифрован или незашифрован)
С появлением TDS 8.0 соединения SQL Server будут следующими:
➡️ Подтверждение TCP-подтверждения TLS ➡️ предварительного журнала TDS (зашифровано) и ответ ➡️ (зашифрованная) проверка подлинности (зашифрованная) обмен данными (зашифрованная) (зашифрованная) обмен данными (зашифрованная) ➡️
Строгое шифрование подключения
Чтобы использовать TDS 8.0, SQL Server 2022 (16.x) добавлен strict
в качестве дополнительного типа шифрования подключений к драйверам SQL Server (Encrypt=strict
). Чтобы использовать strict
тип шифрования подключения, скачайте последнюю версию драйверов .NET, ODBC, OLE DB, JDBC, PHP и Python.
- Microsoft ADO.NET для SQL Server и База данных SQL Azure версии 5.1 или более поздней
- Драйвер ODBC для SQL Server версии 18.1.2.1 или более поздней
- Microsoft OLE DB Driver for SQL Server версии 19.2.0 или более поздней
- Microsoft JDBC Driver for SQL Server версии 11.2.0 или более поздней
- Драйверы Майкрософт для PHP для SQL Server версии 5.10 или более поздней
- Драйвер SQL Python — pyodbc
Чтобы предотвратить атаку "человек в середине" с strict
шифрованием подключения, пользователи не могут задать TrustServerCertificate
параметр true
и доверять любому сертификату, предоставленному сервером. Вместо этого пользователи будут использовать HostNameInCertificate
параметр, чтобы указать сертификат ServerName
, который должен быть доверенным. Сертификат, предоставленный сервером, должен пройти проверку сертификата.
Функции, не поддерживающие принудительное строгое шифрование
Параметр Force Strict Encryption
, добавленный с TDS 8.0 в конфигурации сети SQL Server, заставляет всех клиентов использовать strict
в качестве типа шифрования. Не удается подключиться к SQL Server любым клиентам или функциям без шифрования подключений strict
.
Следующие функции или средства по-прежнему используют предыдущие версии драйверов, которые не поддерживают TDS 8.0, и, как это, может не работать с шифрованием strict
подключения:
- Группы доступности AlwaysOn
- Экземпляр отказоустойчивого кластера AlwaysOn (FCI)
- Репликация SQL Server
- Доставка журналов
- Служебная программа sqlcmd
- bcp, программа
- Служба CEIP SQL Server
- Агент SQL Server
- Database Mail
- Связанные серверы
- Соединитель Polybase для SQL Server
Дополнительные изменения в свойствах шифрования строки подключения
В строки подключения для шифрования добавляются следующие дополнения:
Ключевое слово | По умолчанию. | Description |
---|---|---|
Encrypt |
false | Существующее поведение Когда задано значение true , SQL Server использует шифрование TLS для всех данных, передаваемых между клиентом и сервером, если на сервере установлен сертификат Допустимые значения: true , false , yes и no . Дополнительные сведения см. в статье Синтаксис строки подключения.Изменение поведения Если задано значение 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 |
false | Существующее поведение Установите значение true , чтобы драйвер не проверял TLS/SSL-сертификат сервера. Если значение равно true , TLS/SSL-сертификат сервера автоматически считается доверенным, когда для шифрования уровня связи используется TLS.Если значение — false , то драйвер выполнит проверку TLS-сертификата сервера. Если проверка сертификата сервера завершается ошибкой, в работе драйвера будет вызвана ошибка и подключение будет закрыто. Значение по умолчанию — false . Для успешного установления TLS/SSL-подключения передаваемое в serverName значение должно в точности совпадать с Common Name (CN) или DNS-именем в Subject Alternate Name сертификата сервера.Изменение поведения microsoft ODBC Driver 18 для SQL Server Если Encrypt задано значение strict , этот параметр указывает расположение сертификата, используемого для проверки сертификата сервера (точное соответствие). Драйвер поддерживает расширения ФАЙЛОВ PEM, DER и CER.Если Encrypt задано TrustServerCertificate true false значение или значение свойства не указано или задано значение , true или null false драйвер использует ServerName значение свойства в URL-адресе подключения в качестве имени узла для проверки TLS/SSL-сертификата SQL Server. |
HostNameInCertificate |
NULL | Имя узла используется для проверки TLS/SSL-сертификата SQL Server. HostNameInCertificate Если свойство не указано или задано, null драйвер использует ServerName значение свойства в качестве имени узла для проверки TLS/SSL-сертификата SQL Server. |