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


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

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

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

Примечание.

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

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

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

Предпосылки

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

Примечание.

Вы можете использовать Azure для автоматического создания сертификата Azure Key Vault и приложения Microsoft Entra при настройке администратора Microsoft Entra для сервера. Дополнительные сведения см. в руководстве Использование автоматизации для настройки администратора 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.

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

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

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

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

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

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

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

Выберите только что созданное приложение, а в меню слева выберите Разрешения 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. Нажмите Предоставить согласие администратора.

Снимок экрана разрешений приложения на портале Azure.

Примечание.

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

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

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

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

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

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

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

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

    Примечание.

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

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

    Снимок экрана сертификата в портале Azure, где можно просмотреть и скачать сертификат.

    Примечание.

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

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

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

    Снимок экрана: меню сертификатов и секретов в портал Azure.

  4. На портале Azure получите идентификатор объекта компьютера Azure Arc.

    1. В разделе Ресурсы Azure Arc>выберите компьютер.

    2. В обзоренайдите представление JSON.

    3. В разделе Identityскопируйте значение principalId.

      Снимок экрана: управление порталом JSON-представления описания машины.

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

    Ваш интерфейс зависит от конфигурации доступа к хранилищу ключей:

    Чтобы использовать управление доступом на основе ролей Azure (рекомендуется):

    1. Добавьте следующие роли к вашему ресурсу.

      • Пользователь сертификата Key Vault
      • Пользователь секретов Хранилища ключей
    2. Проверьте роли в этом местоположении.

      снимок экрана добавления ролей IAM в Azure Key Vault.

    Для использования политики доступа Vault:

    1. Выберите политики доступа в меню навигации.

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

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

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

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

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

      снимок экрана ресурса сервера Azure Arc на портале.

    7. Выберите Проверка + создание.

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

      Снимок экрана: портал Azure для просмотра и создания политики доступа.

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

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

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

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

Примечание.

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

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

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

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

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

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

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

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

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

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

    Снимок экрана настройки проверки подлинности Microsoft Entra в портале Azure.

    Загрузка сертификатов и настройка параметров занимает несколько минут. После установки всех параметров и нажатия кнопки Сохранить на портале 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 минут и повторите попытку.

    Примечание.

    После того как администратору Microsoft Entra будет предоставлена роль sysadmin, изменение администратора 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 LOGIN или ALTER 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;

По умолчанию новая база данных имеет разрешение Connect. Все остальные разрешения 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 ID — это новое имя для Azure Active Directory (Azure AD), чтобы избежать нарушения существующих сред, Azure AD по-прежнему остается в некоторых жестко прописанных элементах, таких как поля пользовательского интерфейса, поставщики подключений, коды ошибок и командлеты. В этой статье два имени являются взаимозаменяемыми.

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

Снимок экрана: SSMS с окном

Во время проверки подлинности база данных, в которой был создан пользователь, должна быть явным образом указана в 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 - Azure Arc в панели идентификатор Microsoft Entra и область Purview может не распространяться полностью. Это приведет к успешному сохранению, но старое значение по-прежнему будет отображаться. Чтобы обновить сертификат, выполните следующие действия:

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

См. также