Шифрование и проверка сертификатов в OLE DB

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)

Скачать драйвер OLE DB

SQL Server всегда шифрует сетевые пакеты, связанные со входом в систему. Если сертификат не был подготовлен на сервере при запуске, SQL Server создает самозаверяющий сертификат, который используется для шифрования пакетов входа.

Самозаверяющие сертификаты не гарантируют безопасность. Зашифрованное подтверждение основывается на диспетчере NT LAN Manager (NTLM). Настоятельно рекомендуется предоставить SQL Server подтверждаемый сертификат для безопасного подключения. Протокол TLS можно защитить только с помощью проверки сертификата.

Приложения могут также запрашивать шифрование всего сетевого трафика путем использования ключевых слов строк соединения или свойств соединения. Ключевыми словами являются "Encrypt" для OLE DB при использовании строки поставщика с методом IDbInitialize::Initialize или "Use Encryption for Data" для ADO и OLE DB при использовании строки инициализации с интерфейсом IDataInitialize. Шифрование также можно настроить на клиентском компьютере в реестре с помощью параметра принудительного шифрования протокола. Дополнительные сведения см. в разделе "Параметры реестра". По умолчанию для шифрования всего трафика соединения требуется, чтобы на сервере присутствовал сертификат. Настроив на сервере доверие клиента к сертификату, вы можете стать уязвимыми для атак типа "злоумышленник в середине". При развертывании подтверждаемого сертификата на сервере в параметрах клиента измените доверие сертификату, установив значение FALSE.

Сведения о ключевых словах строки подключения см. в этой статье.

Для включения шифрования, которое будет использоваться при отсутствии сертификата на сервере, можно установить параметры реестра клиента Force Protocol Encryption и Trust Server Certificate. В этом случае шифрование использует самозаверяющий сертификат сервера без проверки, если на сервере не подготовлен проверяемый сертификат.

Шифрование и реакция на проверку сертификатов

Параметры приложения никогда не снижают уровень безопасности в реестре, но могут укрепить его. Дополнительные сведения см. в разделе "Параметры реестра". Например, если параметр Force Protocol Encryption не установлен для клиента, приложение может само запросить шифрование. Чтобы гарантировать применение шифрования, даже если сертификат сервера не был предоставлен, приложение может запросить шифрование и включение параметра TrustServerCertificate. Однако, даже если в конфигурации клиента не включен параметр TrustServerCertificate, сертификат сервера все равно потребуется.

В версии 19 OLE DB Driver for SQL Server представлены критические изменения в интерфейсах API, связанных с шифрованием. Дополнительные сведения см. в разделе об изменениях свойств шифрования.

Основной номер версии 19

В следующей таблице описана оценка параметров шифрования:

Параметр «Принудительное шифрование протокола» на клиенте Строка соединения или атрибут соединения «Шифрование/использовать шифрование для данных» Результирующее шифрование
0 Нет/необязательно Необязательно
0 Да/обязательно (по умолчанию) Обязательно
0 Strict Strict
1 Нет/необязательно Обязательный
1 Да/обязательно (по умолчанию) Обязательный
1 Strict Strict
2 Пропущено Strict

В следующей таблице описаны результирующее шифрование и проверка:

Шифрование Параметр «Доверять сертификату сервера» на клиенте Строка соединения или атрибут соединения «Надежный сертификат сервера» Результат
Необязательно Неприменимо Неприменимо Шифрование выполняется только для пакетов LOGIN.
Обязательно 0 Пропущено Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем.
Обязательный 1 Нет (по умолчанию) Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем.
Обязательный 1 Да Шифрование производится всегда, однако при этом может использоваться самозаверяющий сертификат сервера.
Strict Неприменимо Неприменимо Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем.

Внимание

В приведенной выше таблице представлено только краткое описание поведения системы в различных конфигурациях. Чтобы обеспечить безопасное подключение, убедитесь, что клиент и сервер требуют шифрования (для конфигурации на стороне сервера см. раздел "Настройка параметров шифрования в SQL Server"). Также убедитесь, что у сервера есть подтверждаемый сертификат и что параметр TrustServerCertificate на клиенте имеет значение FALSE.

Примечание.

Начиная с версии 19.2 драйвера OLE DB, подключения TDS 8.0 можно настроить для использования TLS 1.3. Дополнительные сведения см. в разделе поддержки TLS 1.3.

Основной номер версии 18 с новыми методами проверки подлинности

В версиях 18.x.x для повышения безопасности при использовании таких новых ключевых слов строки подключения, как Проверка подлинности или Маркера доступа (или их соответствующих свойств), драйвер переопределяет значение шифрования по умолчанию, установив для него yes. Переопределение происходит во время инициализации объекта источника данных. Если шифрование устанавливается перед инициализацией с помощью любых средств, значение учитывается и не переопределяется.

Примечание.

В приложениях объектов ADO и приложениях, которые получают интерфейс IDBInitialize через IDataInitialize::GetDataSource, основной компонент, реализующий интерфейс, явно устанавливает для шифрования значение по умолчанию no. В результате новые свойства или ключевые слова проверки подлинности учитывают этот параметр и значение шифрования не переопределяется. Поэтому рекомендуется, чтобы эти приложения явно настраивали Use Encryption for Data=true для переопределения значения по умолчанию.

Для повышения безопасности новые методы проверки подлинности учитывают параметр TrustServerCertificate (и его соответствующие ключевые слова и свойства строки подключения) независимо от параметра шифрования клиента. В результате сертификат сервера проверяется по умолчанию. Драйвер следующим образом определяет, следует ли проверять сертификат сервера:

Параметр «Доверять сертификату сервера» на клиенте Строка соединения или атрибут соединения «Надежный сертификат сервера» Проверка сертификата
0 Нет (по умолчанию) Да
0 Да Да
1 Нет (по умолчанию) Да
1 Да No

В следующей таблице описана оценка параметров шифрования:

Параметр «Принудительное шифрование протокола» на клиенте Строка соединения или атрибут соединения «Шифрование/использовать шифрование для данных» Результирующее шифрование
0 Нет (по умолчанию) No
0 Да Да
1 Нет (по умолчанию) Да
1 Да Да

В следующей таблице описаны результирующее шифрование и проверка:

Результирующее шифрование Проверка сертификата Результат
No No Шифрование выполняется только для пакетов LOGIN.
No Да Шифрование пакетов LOGIN применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем.
Да No Шифрование всего трафика производится всегда, но при этом может использоваться самозаверяющий сертификат сервера.
Да Да Шифрование всего трафика применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем.

Основной номер версии 18 с устарелыми методами проверки подлинности

В следующей таблице описаны результаты шифрования и проверки для устаревших методов проверки подлинности:

Параметр «Принудительное шифрование протокола» на клиенте Параметр «Доверять сертификату сервера» на клиенте Строка соединения или атрибут соединения «Шифрование/использовать шифрование для данных» Строка соединения или атрибут соединения «Надежный сертификат сервера» Результат
0 Неприменимо Нет (по умолчанию) Неприменимо Шифрование выполняется только для пакетов LOGIN.
0 Неприменимо Да Нет (по умолчанию) Шифрование всего трафика применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем.
0 Неприменимо Да Да Шифрование всего трафика производится всегда, но при этом может использоваться самозаверяющий сертификат сервера.
1 0 Пропущено Пропущено Шифрование всего трафика применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем.
1 1 Нет (по умолчанию) Неприменимо Шифрование всего трафика производится всегда, но при этом может использоваться самозаверяющий сертификат сервера.
1 1 Да Нет (по умолчанию) Шифрование всего трафика применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем.
1 1 Да Да Шифрование всего трафика производится всегда, но при этом может использоваться самозаверяющий сертификат сервера.

См. также

Возможности драйвера OLE DB для SQL Server
Свойства инициализации и авторизации
строки Подключение ion ключевое слово
Отличия основных номеров версии
Параметры реестра