Поделиться через


Учебное пособие: Включение аутентификации Microsoft Entra для SQL Server в Windows без Azure Arc

Применимо к: 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:

Получение сертификата

  1. Получите сертификат, используемый для SQL Server, и импортируйте его в хранилище сертификатов компьютера. Мы рекомендуем сертификат, подписанный центром сертификации.
    1. Используйте уникальное имя CN для сертификата, который не соответствует ни одному сертификату, установленному в хранилище сертификатов.

    2. Установите сертификат в хранилище сертификатов компьютера. Дополнительные сведения см. в разделе "Импорт сертификата" в локальное хранилище компьютеров.

    3. Добавьте Read разрешения для учетной записи службы SQL Server в сертификате.

      Снимок экрана: свойства разрешений сертификата.

Установить adal.dll

  1. Установите adal.dll для SQL Server. Эта библиотека необходима для подключения к вашему серверу SQL с проверкой подлинности Microsoft Entra. Вы можете получить adal.dll из последней установки Microsoft OLE DB Driver for SQL Server.

  2. После установки драйвера Microsoft OLE DB для SQL Server убедитесь, что adal.dll находится в папке C:\windows\system32.

  3. Кроме того, у вас должен быть раздел HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSADALSQL\TargetDir реестра со значением C:\windows\system32\adal.dll. Если она отсутствует, создайте ее.

    Снимок экрана: раздел реестра для adal.dll.

    Дополнительные сведения о реестре Windows см. в разделе "Сведения о реестре Windows" для расширенных пользователей.

Создание и регистрация приложения идентификатора Microsoft Entra

  • Перейдите на портал Azure, выберите Microsoft Entra ID, затем «Регистрации приложений» и «Новая регистрация».
    1. Укажите имя. Пример в этой статье использует SQLServerCTP1.
    2. Выберите Поддерживаемые типы учетных записей и используйте параметр Учетные записи только в этом каталоге организации.
    3. Не устанавливайте URI переадресации
    4. Нажмите кнопку Зарегистрировать.

Ознакомьтесь с регистрацией приложения ниже:

Снимок экрана: регистрация приложения в портал Azure.

Предоставление разрешений для приложения

Выберите только что созданное приложение, а в меню слева выберите Разрешения API.

  1. Выберите Добавить разрешение>Microsoft Graph>Разрешения приложения.

    1. Установите флажок Directory.Read.All
    2. Нажмите кнопку Добавить разрешения.

Или:

  1. Выберите Добавить разрешение>Microsoft Graph>Разрешения приложения.

    1. Установите флажок Application.Read.All

    2. Установите флажок Group.Read.All

    3. Установите флажок User.Read.All

    4. Нажмите кнопку Добавить разрешения.

  2. Нажмите Предоставить согласие администратора.

Снимок экрана: предоставление согласия на портале Azure.

Замечание

Чтобы предоставить согласие администратора указанным выше разрешениям, для учетной записи Microsoft Entra требуется роль администратора привилегированных ролей или более высокие разрешения.

Отправка сертификата

Отправьте сертификат, созданный в разделе «Получение сертификата», в формате или .cer в регистрацию приложения на портале Azure.

Снимок экрана: отправка сертификата для приложения на портале 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, которое не соответствует другим сертификатам в хранилище сертификатов.