Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо:SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
azure Synapse Analytics Analytics
Platform System (PDW)
Внимание
SQL Server Native Client (SNAC) не поставляется с:
- SQL Server 2022 (16.x) и более поздних версий
- SQL Server Management Studio 19 и более поздних версий
Собственный клиент SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для разработки новых приложений.
Для новых проектов используйте один из следующих драйверов:
Сведения о SQLNCLI, которые поставляется в качестве компонента SQL Server ядро СУБД (версии 2012–2019), см. в этом исключении жизненного цикла поддержки.
SQL Server всегда шифрует сетевые пакеты, связанные со входом в систему. Если сертификат не был подготовлен на сервере при запуске, SQL Server создает самозаверяющий сертификат, используемый для шифрования пакетов входа.
Самозаверяющие сертификаты не гарантируют безопасность. Зашифрованное подтверждение основывается на диспетчере NT LAN Manager (NTLM). Необходимо подготовить проверяемый сертификат в SQL Server для безопасного подключения. Протокол TLS можно защитить только с помощью проверки сертификата.
Приложения также могут запрашивать шифрование всего сетевого трафика с помощью ключевых слов строки подключения или свойств подключения. Ключевыми словами являются "Encrypt" для ODBC и OLE DB при использовании строки поставщика со IDbInitialize::Initialize
строкой поставщика или "Использовать шифрование для данных" для ADO и OLE DB при использовании строки инициализации с IDataInitialize
. Это также можно настроить с помощью диспетчера конфигурации SQL Server с помощью параметра принудительного шифрования протоколов , а также путем настройки клиента для запроса зашифрованных подключений. По умолчанию шифрование всего сетевого трафика для подключения требует, чтобы сертификат был подготовлен на сервере. Задав клиенту доверие к сертификату на сервере, вы уязвимы для атак с помощью злоумышленника в середине. При развертывании проверяемого сертификата на сервере убедитесь, что параметры клиента о доверии сертификату FALSE
будут изменены.
Сведения о ключевых словах строка подключения см. в разделе "Использование ключевых слов строки подключения" с собственным клиентом SQL Server.
Чтобы включить шифрование для использования, если сертификат не подготовлен на сервере, диспетчер конфигурации SQL Server можно использовать для задания параметров шифрования протокола Принудительного шифрования и сертификата сервера доверия . В этом случае шифрование использует самозаверяющий сертификат сервера без проверки, если на сервере не был подготовлен проверяемый сертификат.
Приложения также могут использовать ключевое слово или связанный TrustServerCertificate
с ним атрибут подключения, чтобы гарантировать, что шифрование происходит. Параметры приложения никогда не сокращают уровень безопасности, заданный диспетчером конфигурации клиента SQL Server, но могли бы укрепить его. Например, если принудительное шифрование протокола не задано для клиента, приложение может запросить шифрование. Чтобы гарантировать шифрование, даже если сертификат сервера не подготовлен, приложение может запросить шифрование и TrustServerCertificate
. Однако если TrustServerCertificate
в конфигурации клиента не включена, сертификат подготовленного сервера по-прежнему требуется. В следующей таблице описываются все случаи:
Параметр «Принудительное шифрование протокола» на клиенте | Параметр «Доверять сертификату сервера» на клиенте | Строка соединения или атрибут соединения «Шифрование/использовать шифрование для данных» | Строка соединения или атрибут соединения «Надежный сертификат сервера» | Результат |
---|---|---|---|---|
нет | Н/П | Нет (по умолчанию) | Пропущено | Шифрование отсутствует. |
нет | Н/П | Да | Нет (по умолчанию) | Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем. |
нет | Н/П | Да | Да | Шифрование производится всегда, однако при этом может быть использован самозаверяющий сертификат сервера. |
Да | нет | Пропущено | Пропущено | Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем. |
Да | Да | Нет (по умолчанию) | Пропущено | Шифрование производится всегда, однако при этом может быть использован самозаверяющий сертификат сервера. |
Да | Да | Да | Нет (по умолчанию) | Шифрование применяется только при наличии подтверждаемого сертификата сервера, в противном случае попытка подключения завершается сбоем. |
Да | Да | Да | Да | Шифрование производится всегда, однако при этом может быть использован самозаверяющий сертификат сервера. |
Внимание
В приведенной выше таблице представлено только краткое описание поведения системы в различных конфигурациях. Для безопасного подключения убедитесь, что клиенту и серверу требуется шифрование. Кроме того, убедитесь, что сервер имеет проверяемый сертификат, а TrustServerCertificate
параметр на клиенте установлен FALSE
.
Поставщик OLE DB для собственного клиента SQL Server
Поставщик OLE DB собственного SSPROP_INIT_TRUST_SERVER_CERTIFICATE
клиента SQL Server поддерживает шифрование без проверки путем добавления свойства инициализации источника данных, реализованного в наборе DBPROPSET_SQLSERVERDBINIT
свойств. Кроме того, добавлено новое ключевое слово TrustServerCertificate
строки подключения. Он принимает yes
или no
значения; no
является значением по умолчанию. При использовании компонентов службы он принимает true
или false
значения; false
по умолчанию.
Дополнительные сведения о усовершенствованиях DBPROPSET_SQLSERVERDBINIT
набора свойств см. в разделе "Инициализация" и "Свойства авторизации" (поставщик OLE DB собственного клиента).
Драйвер ODBC для собственного клиента SQL Server
Драйвер ODBC собственного клиента SQL Server поддерживает шифрование без проверки путем добавления функций SQLSetConnectAttr и SQLGetConnectAttr.
SQL_COPT_SS_TRUST_SERVER_CERTIFICATE
добавлено для принятия или SQL_TRUST_SERVER_CERTIFICATE_YES
SQL_TRUST_SERVER_CERTIFICATE_NO
, если SQL_TRUST_SERVER_CERTIFICATE_NO
используется значение по умолчанию. Кроме того, добавлено новое ключевое слово TrustServerCertificate
строки подключения. Он принимает yes
или no
значения; no
является значением по умолчанию.