Руководство по настройке проверки подлинности Microsoft Entra для SQL Server

Область применения: SQL Server 2022 (16.x)

В этой статье описывается пошаговый процесс настройки проверки подлинности с помощью идентификатора Microsoft Entra ID и демонстрирует использование различных методов проверки подлинности Microsoft Entra.

Примечание.

Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).

В этом руководстве описано следующее:

  • Создание и регистрация приложения Microsoft Entra
  • Предоставление разрешений приложению Microsoft Entra
  • Создание и назначение сертификата
  • Настройка проверки подлинности Microsoft Entra для SQL Server с помощью портал Azure
  • Создание имен для входа и пользователей
  • Подключение с поддерживаемым методом проверки подлинности

Необходимые компоненты

Предварительные требования для проверки подлинности

Примечание.

Расширенная функциональность реализована в Azure, чтобы разрешить автоматическое создание сертификата Azure Key Vault и приложения Microsoft Entra во время настройки администратора Microsoft Entra для SQL Server. Дополнительные сведения см. в руководстве . Использование автоматизации для настройки администратора Microsoft Entra для SQL Server.

  • Регистрация приложения Microsoft Entra для SQL Server. Регистрация экземпляра SQL Server в качестве приложения Microsoft Entra позволяет экземпляру запрашивать идентификатор Microsoft Entra и позволяет приложению Microsoft Entra проходить проверку подлинности от имени экземпляра SQL Server. Для регистрации приложений также требуется несколько разрешений, которые используются SQL Server для определенных запросов.

  • SQL Server использует сертификат для этой проверки подлинности, который хранится в Azure Key Vault (AKV). Агент Azure Arc загружает сертификат на узел экземпляра SQL Server.

Предупреждение

Подключение ions, прошедшие проверку подлинности идентификатором Microsoft Entra, всегда шифруются. Если SQL Server использует самозаверяющий сертификат, необходимо добавить trust server cert = true в строка подключения. Для подключений, прошедших проверку подлинности SQL Server и Windows, не требуется шифрование, но настоятельно рекомендуется.

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

  1. Перейдите к портал Azure, выберите "Регистрация> приложений с идентификатором>записи Майкрософт".
    1. Укажите имя. Пример в этой статье использует SQLServerCTP1.
    2. Выберите Поддерживаемые типы учетных записей и используйте параметр Учетные записи только в этом каталоге организации.
    3. Не устанавливайте универсальный код ресурса (URI) перенаправления
    4. Нажмите кнопку Зарегистрировать.

Просмотрите регистрацию приложения ниже:

Screenshot of registering application in the Azure portal.

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

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

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

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

    1. Установите флажок Application.Read.ALL
    2. Установите флажок Directory.AccessAsUser.All
    3. Установите флажок Group.Read.All
    4. Установите флажок User.Read.All
    5. Нажмите кнопку Добавить разрешения.
  3. Нажмите Предоставить согласие администратора.

Screenshot of application permissions in the Azure portal.

Примечание.

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

Создание и назначение сертификата

  1. Перейдите к порталу Azure, выберите Хранилища ключей и выберите хранилище ключей, которое требуется использовать или создать. Выберите Сертификаты>Создать/импортировать

    1. Для параметра Метода создания сертификата используйте команды Создать.

    2. Добавьте имя сертификата и тему.

    3. Рекомендуемый срок действия не должен превышать 12 месяцев. Можно оставить остальные значения по умолчанию.

    4. Нажмите кнопку создания.

    Screenshot of creating certificate in the Azure portal.

    Примечание.

    После создания сертификата может отобразиться сообщение о том, что он отключен. Обновите сайт и отобразите сертификат со значением "Включено".

  2. Перейдите к новому сертификату и выберите строку с последней версией сертификата. Выберите Загрузить в формате CER, чтобы сохранить открытый ключ сертификата.

    Screenshot of certificate in the Azure portal where you can view and download the certificate.

    Примечание.

    Это не обязательно делать на узле SQL Server. Вместо этого можно сделать это на клиенте, который будет обращаться к порталу Azure для выполнения следующего шага.

  3. В портал Azure перейдите к созданной выше регистрации приложения и выберите список сертификатов

    1. Выберите Отправить сертификат.
    2. Выберите открытый ключ (CER-файл), загруженный на последнем шаге.
    3. Выберите Добавить.

    Screenshot of certificate and secrets menu in the Azure portal.

  4. В портал Azure перейдите к экземпляру Azure Key Vault, где хранится сертификат, и выберите политики доступа в меню навигации.

    1. Нажмите кнопку создания.

    2. Для разрешений "Секрет" выберите " Получить " и "Список".

    3. Для разрешений сертификата выберите "Получить" и "Список".

    4. Выберите Далее.

    5. На главной странице найдите имя экземпляра Azure Arc, который является именем узла узла SQL Server.

      Screenshot of Azure Arc server resource in portal.

    6. Пропустить страницу приложения (необязательно), нажав кнопку "Далее" дважды или выбрав "Просмотр и создание".

      Убедитесь, что идентификатор объекта субъекта соответствует идентификатору субъекта управляемого удостоверения, назначенному экземпляру.

      Screenshot of Azure portal to review and create access policy.

      Чтобы подтвердить, перейдите на страницу ресурсов и выберите представление JSON в правом верхнем углу поля "Основные сведения" на странице "Обзор". Под удостоверениемвы найдете субъект-идентификатор

      Screenshot of portal control of JSON view of machine definition.

    7. Нажмите кнопку создания.

    Чтобы убедиться, что применены разрешения, необходимо выбрать "Создать ". Чтобы убедиться, что разрешения сохранены, обновите окно браузера и проверка, что строка для экземпляра Azure Arc по-прежнему присутствует.

    Screenshot of adding access policy to the key vault in the Azure portal.

Настройка проверки подлинности Microsoft Entra для SQL Server с помощью портал Azure

Примечание.

С помощью azure CLI, PowerShell или шаблона ARM для настройки администратора Microsoft Entra для SQL Server доступен.

  1. Перейдите к порталу Azure и выберите SQL Server — Azure Arc, а затем выберите экземпляр для узла SQL Server.

  2. Проверьте состояние ресурса SQL Server — Azure Arc и убедитесь в том, что он подключен, перейдя в меню Свойства. Дополнительные сведения см. в статье Проверка ресурсов SQL Server — Azure Arc.

  3. Выберите идентификатор Microsoft Entra и Purviewв разделе Параметры в меню ресурсов.

  4. Выберите "Задать Администратор", чтобы открыть область идентификатора Microsoft Entra ID и выбрать учетную запись для входа администратора для SQL Server.

  5. Выберите Сертификат, управляемый клиентом и Выбрать сертификат.

  6. Выберите "Изменить сертификат" и выберите экземпляр AKV и сертификат, созданный ранее в новой области.

  7. Выберите Регистрация приложения, управляемого клиентом.

  8. Выберите Изменить регистрацию приложения и выберите созданную ранее регистрацию приложения.

  9. Выберите Сохранить. Это отправляет запрос агенту сервера Arc, который настраивает проверку подлинности Microsoft Entra для этого экземпляра SQL Server.

    Screenshot of setting Microsoft Entra authentication in the Azure portal.

    Загрузка сертификатов и настройка параметров занимает несколько минут. После установки всех параметров и нажатия кнопки Сохранить на портале Azure может появиться следующее сообщение: SQL Server's Azure Arc agent is currently processing a request. Values below may be incorrect. Please wait until the agent is done before continuing Дождитесь подтверждения Saved successfullyпроцесса сохранения перед попыткой входа Microsoft Entra.

    Агент сервера Azure Arc может обновляться только после завершения предыдущего действия. Это означает, что сохранение новой конфигурации Microsoft Entra до завершения последнего может привести к сбою. Если при нажатии кнопки Сохранить вы увидите сообщение Сбой расширенного вызова, подождите 5 минут и повторите попытку.

    Примечание.

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

    Изменение администратора Microsoft Entra для экземпляра SQL Server происходит без перезапуска сервера после завершения процесса с агентом Azure Arc SQL Server. Чтобы новый администратор отображался в sys.server_principals, экземпляр SQL Server должен быть перезапущен, а до тех пор отображается старый администратор. Текущий администратор Microsoft Entra можно проверка в портал Azure.

Создание имен для входа и пользователей

После завершения операции агента Azure Arc на узле SQL Server учетная запись администратора, выбранная в меню идентификатора Microsoft Entra на портале, будет находиться sysadmin на экземпляре SQL Server. Войдите в SQL Server с учетной записью администратора Microsoft Entra, которая имеет sysadmin разрешения на сервере с помощью клиента, например SSMS или Azure Data Studio.

Примечание.

Для всех подключений к SQL Server, которые выполняются с проверкой подлинности Microsoft Entra, требуется зашифрованное подключение. Если администратор базы данных не настроил доверенный сертификат SSL/TLS для сервера, попытки входа, скорее всего, завершатся сбоем с сообщением Цепочка сертификатов выдана центром, который не является доверенным. Чтобы устранить эту проблему, настройте экземпляр SQL Server для использования сертификата SSL/TLS, которому доверяет клиент, или выберите сертификат доверенного сервера в разделе дополнительных свойств подключения. Дополнительные сведения см. в статье Включение зашифрованных соединений для ядра СУБД.

Создание синтаксиса входа

Тот же синтаксис для создания имен входа Microsoft Entra и пользователей на База данных SQL Azure и Управляемый экземпляр SQL Azure теперь можно использовать в SQL Server.

Примечание.

В SQL Server любая учетная запись с ALTER ANY LOGINALTER ANY USER разрешениями может создавать имена входа Или пользователи Microsoft Entra соответственно. Учетная запись не должна быть именем входа Microsoft Entra.

Чтобы создать имя входа для учетной записи Microsoft Entra, выполните следующую команду T-SQL в master базе данных:

CREATE LOGIN [principal_name] FROM EXTERNAL PROVIDER;

Для пользователей имя субъекта должно быть в формате user@tenant.com. В идентификаторе Microsoft Entra это имя участника-пользователя. Для всех других типов учетных записей, таких как группы или приложения Microsoft Entra, основное имя — это имя объекта Microsoft Entra.

Вот некоторые примеры:

-- login creation for Microsoft Entra user
CREATE LOGIN [user@contoso.com] FROM EXTERNAL PROVIDER;
GO
-- login creation for Microsoft Entra group
CREATE LOGIN [my_group_name] FROM EXTERNAL PROVIDER;
GO
-- login creation for Microsoft Entra application
CREATE LOGIN [my_app_name] FROM EXTERNAL PROVIDER;
GO

Чтобы получить список имен входа Microsoft Entra в master базе данных, выполните команду T-SQL:

SELECT * FROM sys.server_principals
WHERE type IN ('E', 'X');

Чтобы предоставить пользователю Microsoft Entra членство в sysadmin роли (напримерadmin@contoso.com, выполните следующие команды:master

CREATE LOGIN [admin@contoso.com] FROM EXTERNAL PROVIDER; 
GO
ALTER SERVER ROLE sysadmin ADD MEMBER [admin@contoso.com];
GO

Хранимая sp_addsrvrolemember процедура должна выполняться в качестве члена роли сервера SQL Server sysadmin .

Создание пользовательского синтаксиса

Вы можете создать пользователя базы данных из идентификатора Microsoft Entra как пользователя базы данных, связанного с субъектом-сервером (имя входа) или как автономного пользователя базы данных.

Чтобы создать пользователя Microsoft Entra из имени входа Microsoft Entra в базе данных SQL Server, используйте следующий синтаксис:

CREATE USER [principal_name] FROM LOGIN [principal_name];

Синтаксис principal_name совпадает с синтаксисом для имен входа.

Далее приводятся некоторые примеры.

-- for Azure AD user
CREATE USER [user@contoso.com] FROM LOGIN [user@contoso.com];
GO
-- for Azure AD group
CREATE USER [my_group_name] FROM LOGIN [my_group_name];
GO
-- for Azure AD application
CREATE USER [my_app_name] FROM LOGIN [my_app_name];
GO

Чтобы создать пользователя автономной базы данных Microsoft Entra, который не привязан к имени входа сервера, можно выполнить следующий синтаксис:

CREATE USER [principal name] FROM EXTERNAL PROVIDER;

Используйте имя группы Microsoft Entra или имя приложения Microsoft Entra, как <principal name> при создании пользователя базы данных Microsoft Entra из группы или приложения.

Далее приводятся некоторые примеры.

-- for Azure AD contained user
CREATE USER [user@contoso.com] FROM EXTERNAL PROVIDER;
GO
-- for Azure AD contained group
CREATE USER [my_group_name] FROM EXTERNAL PROVIDER;
GO
--for Azure AD contained application
CREATE USER [my_group_name] FROM EXTERNAL PROVIDER;
GO

Чтобы получить список пользователей, созданных в базе данных, выполните следующую команду T-SQL:

SELECT * FROM sys.database_principals;

По умолчанию новый пользователь базы данных получает разрешение Подключение. Все остальные разрешения SQL Server должны быть явно предоставлены авторизованными участниками.

Гостевые учетные записи Microsoft Entra

Синтаксис CREATE LOGIN и CREATE USER также поддерживает гостевых пользователей. Например, если testuser@outlook.com он приглашен в contoso.com клиент, его можно добавить как имя входа в SQL Server с тем же синтаксисом, что и создание любого другого пользователя Microsoft Entra или имени входа. При создании гостевых пользователей и имен входа используйте исходную электронную почту гостевой учетной записи, а не имя участника-пользователя в клиенте. В примерах outlook.com предоставляется, даже если учетная запись зарегистрирована в клиенте contoso.com .

Создание гостевого пользователя из существующего имени входа

CREATE USER [testuser@outlook.com] FROM LOGIN [testuser@outlook.com];

Создание гостевого пользователя как автономного пользователя

CREATE USER [testuser@outlook.com] FROM EXTERNAL PROVIDER;

Подключение с поддерживаемым методом проверки подлинности

SQL Server поддерживает несколько методов проверки подлинности Microsoft Entra:

  • По умолчанию.
  • Имя пользователя и пароль
  • Поддержка
  • Универсальная с многофакторной проверкой подлинности
  • Субъект-служба
  • Управляемое удостоверение
  • Маркер доступа

Используйте один из этих методов для подключения к экземпляру SQL Server. Дополнительные сведения см. в разделе проверки подлинности Microsoft Entra для SQL Server.

Пример проверки подлинности с помощью SSMS

Примечание.

Хотя идентификатор Microsoft Entra — это новое имя Azure Active Directory (Azure AD), чтобы предотвратить нарушение существующих сред, Azure AD по-прежнему остается в некоторых жестко закодированных элементах, таких как поля пользовательского интерфейса, поставщики подключений, коды ошибок и командлеты. В этой статье два имени являются взаимозаменяемыми.

Ниже приведен моментальный снимок страницы подключения SQL Server Management Studio (SSMS) с помощью метода проверки подлинности Azure Active Directory — универсального с MFA.

Screenshot SSMS showing the Connect to Server window.

Во время проверки подлинности база данных, в которой был создан пользователь, должна быть явным образом указана в SSMS. Разверните параметры >> Подключение свойства Подключение в базу данных: database_name

Дополнительные сведения см. в разделе "Использование многофакторной проверки подлинности Microsoft Entra".

Средства SQL Server, поддерживающие проверку подлинности Microsoft Entra для SQL Azure, также поддерживаются для SQL Server 2022 (16.x).

Расположение, в котором хранятся параметры идентификатора Microsoft Entra

Предупреждение

Параметры идентификатора Microsoft Entra настраиваются агентом Azure Arc и не должны быть перенастроены вручную.

В Linux параметры идентификатора Microsoft Entra хранятся в mssql-conf. Дополнительные сведения о параметрах конфигурации в Linux см. в разделе "Настройка SQL Server на Linux с помощью средства mssql-conf".

Известные проблемы

  • Обновление сертификата не распространяется:
    • После настройки проверки подлинности Microsoft Entra для SQL Server обновление сертификата в SQL Server — идентификатор Microsoft Entra ресурса Azure Arc и область Purview может не распространяться полностью. Это приведет к успешному сохранению, но старое значение по-прежнему будет отображаться. Чтобы обновить сертификат, выполните следующие действия:

      • Нажмите кнопку Удалить администратор.
      • Выберите Сохранить.
      • Выберите "Задать Администратор" и перенастройку проверки подлинности Microsoft Entra с помощью нового сертификата.
      • Выберите Сохранить.

См. также