Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: SQL Server 2022 (16.x) и более поздних версий.
В этой статье описывается проверка подлинности с помощью идентификатора Microsoft Entra без настройки Azure Arc для локальных версий SQL Server 2022 и более поздних версий. Проверка подлинности Microsoft Entra — это облачная служба управления удостоверениями, которая обеспечивает безопасный доступ к базам данных SQL Server. В этом руководстве описан процесс настройки проверки подлинности Microsoft Entra для SQL Server в Windows без Azure Arc.
Замечание
Microsoft Entra ID ранее был известен как Azure Active Directory (Azure AD).
В этом руководстве вы узнаете, как:
- Добавьте сертификат для SQL Server.
- Установка adal.dll, используемая для подключения к SQL Server.
- Создайте и зарегистрируйте приложение Идентификатора Microsoft Entra.
- Предоставьте разрешения для приложения.
- Отправьте сертификат в приложение.
- Добавьте значения реестра, чтобы включить проверку подлинности Microsoft Entra для SQL Server.
Предпосылки
- Локальная версия SQL Server 2022 или более поздняя.
- Активный клиент Microsoft Entra ID.
- Эта настройка использует регистрацию приложения для связывания SQL Server с идентификатором Microsoft Entra. Следуйте инструкциям по регистрации приложения в идентификаторе Microsoft Entra.
- Убедитесь, что SQL Server имеет сетевое подключение к Azure, в частности, к следующей службе и адресам идентификатора Microsoft Entra:
- login.windows.net.
- login.microsoftonline.com.
- graph.microsoft.com.
- graph.windows.net.
- database.windows.net.
- Полный список IP-адресов и URL-адресов не требуется, но можно найти в статье, URL-адреса и диапазоны IP-адресов Microsoft 365.
Получение сертификата
- Получите сертификат, используемый для SQL Server, и импортируйте его в хранилище сертификатов компьютера. Мы рекомендуем сертификат, подписанный центром сертификации.
Используйте уникальное имя CN для сертификата, который не соответствует ни одному сертификату, установленному в хранилище сертификатов.
Установите сертификат в хранилище сертификатов компьютера. Дополнительные сведения см. в разделе "Импорт сертификата" в локальное хранилище компьютеров.
Добавьте
Read
разрешения для учетной записи службы SQL Server в сертификате.
Установить adal.dll
Установите adal.dll для SQL Server. Эта библиотека необходима для подключения к вашему серверу SQL с проверкой подлинности Microsoft Entra. Вы можете получить adal.dll из последней установки Microsoft OLE DB Driver for SQL Server.
После установки драйвера Microsoft OLE DB для SQL Server убедитесь, что adal.dll находится в папке
C:\windows\system32
.Кроме того, у вас должен быть раздел
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSADALSQL\TargetDir
реестра со значениемC:\windows\system32\adal.dll
. Если она отсутствует, создайте ее.Дополнительные сведения о реестре Windows см. в разделе "Сведения о реестре Windows" для расширенных пользователей.
Создание и регистрация приложения идентификатора Microsoft Entra
- Перейдите на портал Azure, выберите Microsoft Entra ID, затем «Регистрации приложений» и «Новая регистрация».
- Укажите имя. Пример в этой статье использует SQLServerCTP1.
- Выберите Поддерживаемые типы учетных записей и используйте параметр Учетные записи только в этом каталоге организации.
- Не устанавливайте URI переадресации
- Нажмите кнопку Зарегистрировать.
Ознакомьтесь с регистрацией приложения ниже:
Предоставление разрешений для приложения
Выберите только что созданное приложение, а в меню слева выберите Разрешения API.
Выберите Добавить разрешение>Microsoft Graph>Разрешения приложения.
- Установите флажок Directory.Read.All
- Нажмите кнопку Добавить разрешения.
Или:
Выберите Добавить разрешение>Microsoft Graph>Разрешения приложения.
Установите флажок Application.Read.All
Установите флажок Group.Read.All
Установите флажок User.Read.All
Нажмите кнопку Добавить разрешения.
Нажмите Предоставить согласие администратора.
Замечание
Чтобы предоставить согласие администратора указанным выше разрешениям, для учетной записи Microsoft Entra требуется роль администратора привилегированных ролей или более высокие разрешения.
Отправка сертификата
Отправьте сертификат, созданный в разделе «Получение сертификата», в формате или .cer
в регистрацию приложения на портале Azure.
Добавление значений реестра для включения проверки подлинности Microsoft Entra для SQL Server
Чтобы активировать аутентификацию Microsoft Entra для SQL Server, обновите раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL<version-number>.<instance-name>\MSSQLServer\FederatedAuthentication
следующими значениями. Пример пути к разделу реестра для SQL Server 2022 — HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\FederatedAuthentication
.
Предупреждение
Серьёзные проблемы могут возникнуть, если вы неправильно измените реестр, используя редактор реестра или другой метод. Эти проблемы могут потребовать переустановки операционной системы. Корпорация Майкрософт не может гарантировать, что эти проблемы удастся решить. Вносите изменения в реестр на свой страх и риск.
-
FederatedAuthentication
Если ключ не существует, создайте его со всеми приведенными ниже значениями. - Первые пять записей, перечисленных, необходимо обновить со значениями из приложения, созданного в предыдущем разделе. Остальные записи — это значения по умолчанию.
- Имя
<sql-server-certificate-name>
сертификата, созданного в разделе Получение сертификата и загруженного в Azure. - Это
<application-client-id>
идентификатор клиента приложения, созданного в разделе Создание и регистрация приложения Идентификатора Microsoft Entra. Дополнительные сведения о поиске идентификатора клиента см. в разделе "Идентификатор клиента". - Идентификатор
<tenant-id>
клиента из клиента Azure. Идентификатор клиента можно найти на портале Azure в разделе Microsoft Entra ID>Обзор.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL<version-number>.<instance-name>\MSSQLServer\FederatedAuthentication]
"AADCertSubjectName"="<sql-server-certificate-name>"
"AADTenantSpecificSQLServicePrincipalCertSubjectName"="<sql-server-certificate-name>"
"ClientId"="<application-client-id>"
"AADTenantSpecificSQLServicePrincipalClientId"="<application-client-id>"
"PrimaryAADTenant"="<tenant-id>"
"AADChannelMaxBufferedMessageSize"="200000"
"AADGraphEndPoint"="graph.windows.net"
"AADGroupLookupMaxRetryAttempts"="10"
"AADGroupLookupMaxRetryDuration"="30000"
"AADGroupLookupRetryInitialBackoff"="100"
"AuthenticationEndpoint"="login.microsoftonline.com"
"CacheMaxSize"="300"
"FederationMetadataEndpoint"="login.windows.net"
"GraphAPIEndpoint"="graph.windows.net"
"IssuerURL"="https://sts.windows.net/"
"MsGraphEndPoint"="graph.microsoft.com"
"OnBehalfOfAuthority"="https://login.windows.net/"
"SendX5c"="false"
"ServicePrincipalName"="https://database.windows.net/"
"ServicePrincipalNameForArcadia"="https://sql.azuresynapse.net"
"ServicePrincipalNameForArcadiaDogfood"="https://sql.azuresynapse-dogfood.net"
"ServicePrincipalNameNoSlash"="https://database.windows.net"
"STSURL"="https://login.windows.net/"
"ClientCertBlackList"=""
Дополнительные сведения о реестре Windows, включая резервное копирование, редактирование и восстановление разделов реестра, см. в разделе "Сведения о реестре Windows" для расширенных пользователей.
Проверка подлинности
После настройки сервера и изменения значений реестра проверка подлинности Microsoft Entra должна быть функциональной. Проверьте настройку, создав имена входа с помощью следующих команд T-SQL:
CREATE LOGIN [<[email protected]>] FROM EXTERNAL PROVIDER
Общие проблемы
Возможны следующие ошибки:
Keyset does not exist (AdalDll) with error code: 21
Эта ошибка может возникнуть из-за проблем с разрешениями на сертификат. Убедитесь, что у учетной записи службы SQL Server есть Read
права на сертификат. Если проблема сохраняется, убедитесь, что сертификат имеет уникальное имя CN, которое не соответствует другим сертификатам в хранилище сертификатов.