Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: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:
- Агент SQL Server
- служебная программа sqlcmd
- утилита bcp
- Средство записи VSS SQL
- Служба CEIP SQL
- Polybase
- Группы доступности AlwaysOn
- Экземпляр отказоустойчивого кластера AlwaysOn (FCI)
- Связанные серверы1
- Репликация транзакций1
- Слияние репликации1
- Репликация моментальных снимков1
- Доставка журналов1
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:
- 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 , который должен быть доверенным. Сертификат, предоставленный сервером, должен пройти проверку сертификата. Дополнительные сведения о проверке сертификатов см. в разделе "Требования к сертификату" для 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. |