Субъекты-службы Microsoft Entra с помощью SQL Azure

Применимо к: База данных SQL Azure Управляемый экземпляр SQL Azure

Ресурсы SQL Azure поддерживают программный доступ для приложений с помощью субъектов-служб и управляемых удостоверений в идентификаторе Microsoft Entra (ранее — Azure Active Directory).

Поддержка субъектов-служб (приложения Microsoft Entra)

Эта статья относится к приложениям, зарегистрированным в идентификаторе Microsoft Entra. Использование учетных данных приложения для доступа к SQL Azure поддерживает принцип безопасности разделения обязанностей, позволяя организациям настраивать точный доступ для каждого приложения, подключающегося к их базам данных. Управляемые удостоверения, специальная форма субъектов-служб, рекомендуется, так как они без пароля и устраняют потребность в учетных данных, управляемых разработчиком.

Идентификатор Microsoft Entra также включает расширенные сценарии проверки подлинности, такие как OAuth 2.0 on-Behalf-Of Flow (OBO). OBO позволяет приложениям запрашивать учетные данные пользователя вошедшего пользователя в сценарии, когда приложения сами не должны предоставлять доступ к базе данных без делегированных разрешений.

Дополнительные сведения о приложениях Microsoft Entra см. в разделе "Объекты приложения и субъекта-службы" в идентификаторе Microsoft Entra ID и создании субъекта-службы Azure с помощью Azure PowerShell.

Создание пользователей Microsoft Entra с помощью субъектов-служб

Поддержка этой функции полезна в процессах автоматизации приложений Microsoft Entra, где субъекты Microsoft Entra создаются и поддерживаются в База данных SQL или Управляемый экземпляр SQL без взаимодействия с человеком. Субъекты-службы могут быть администратором Microsoft Entra для логического сервера SQL или управляемого экземпляра как часть группы или как автономное удостоверение. Приложение может автоматизировать создание объекта Microsoft Entra в База данных SQL или Управляемый экземпляр SQL, что позволяет полностью автоматизировать создание пользователя базы данных.

Включение субъектов-служб для создания пользователей Microsoft Entra

При использовании приложений для доступа к SQL Azure создание пользователей и имен входа Microsoft Entra требует разрешений, которые не назначены субъектам-службам или управляемым удостоверениям по умолчанию: возможность чтения пользователей, групп и приложений в клиенте из Microsoft Graph. Эти разрешения необходимы для проверки удостоверения, указанного в CREATE LOGIN обработчике SQL, и CREATE USERизвлечения важных сведений, включая объект удостоверения или идентификатор приложения, который используется для создания имени входа или пользователя.

Когда пользователь Microsoft Entra выполняет эти команды, приложение Microsoft SQL Azure использует делегированные разрешения для олицетворения пользователя, выполнившего вход, и запрашивает Microsoft Graph с помощью своих разрешений. Этот поток невозможен с субъектами-службами, так как приложение не может олицетворить другое приложение. Вместо этого подсистема SQL пытается использовать его удостоверение сервера, которое является основным управляемым удостоверением, назначенным управляемому экземпляру SQL, логическому серверу SQL Azure или рабочей области Azure Synapse. Удостоверение сервера должно существовать и иметь разрешения запроса Microsoft Graph или сбой операций.

В следующих шагах объясняется, как назначить управляемое удостоверение серверу и назначить ему разрешения Microsoft Graph, чтобы разрешить субъектам-службам создавать пользователей Microsoft Entra и имена входа в базе данных.

  1. Назначьте удостоверение сервера. Удостоверение сервера может быть назначаемое системой или назначаемое пользователем управляемое удостоверение. Дополнительные сведения см. в разделе "Управляемые удостоверения" в Microsoft Entra для SQL Azure.

    • Следующая команда PowerShell создает новый логический сервер, подготовленный с помощью управляемого удостоверения, назначаемого системой:
    New-AzSqlServer -ResourceGroupName <resource group> -Location <Location name> -ServerName <Server name> -ServerVersion "12.0" -SqlAdministratorCredentials (Get-Credential) -AssignIdentity
    

    Дополнительные сведения см. в описании команды New-AzSqlServer или команды New-AzSqlInstance для Управляемого экземпляра SQL.

    • Для существующего логического сервера выполните следующую команду, чтобы добавить в него управляемое удостоверение, назначаемое системой:
    Set-AzSqlServer -ResourceGroupName <resource group> -ServerName <Server name> -AssignIdentity
    

    Дополнительные сведения см. в описании команды Set-AzSqlServer или команды Set-AzSqlInstance для Управляемого экземпляра SQL.

    Примечание.

    Удостоверение сервера можно назначить с помощью rest API и команд CLI. Дополнительные сведения см. в разделе Создание сервера az sql, Обновление сервера az sql и Серверы — REST API.

  2. Предоставьте разрешения удостоверения сервера для запроса Microsoft Graph. Это можно сделать несколькими способами: добавив удостоверение в роль читателей каталогов Microsoft Entra, назначив удостоверение отдельным разрешениям Microsoft Graph или добавив удостоверение в группу, назначаемую ролями, которая имеет роль читателя каталогов:

    • Добавление удостоверения сервера в группу с возможностью назначения ролей

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

    • Назначение разрешений Microsoft Graph удостоверениям сервера

      Чтобы назначить отдельные разрешения Microsoft Graph удостоверениям сервера, необходимо иметь роль глобального администратора Microsoft Entra или администратора привилегированных ролей. Это рекомендуется для назначения роли читателя каталогов, так как в роли, которую не требуется удостоверению сервера, есть разрешения. Назначение только отдельных разрешений на чтение Microsoft Graph ограничивает разрешения удостоверения сервера в клиенте и поддерживает принцип наименьших привилегий. Инструкции см. в разделе "Управляемые удостоверения" в Microsoft Entra для SQL Azure.

    • Добавление удостоверения сервера в роль читателей каталогов

      Чтобы добавить удостоверение сервера в роль читателей каталогов, необходимо быть членом роли глобального администратора Microsoft Entra или администратора привилегированных ролей. В рабочих средах этот параметр не рекомендуется по двум причинам: роль читателя каталогов предоставляет больше разрешений, чем требует удостоверение сервера, и процесс назначения ролей по-прежнему требует утверждения администратора для каждого удостоверения сервера (в отличие от групп). Следуйте инструкциям Управляемый экземпляр SQL, доступным в статье "Настройка администратора Microsoft Entra(Управляемый экземпляр SQL)".

Устранение неполадок

При устранении неполадок может возникнуть следующая ошибка:

Msg 33134, Level 16, State 1, Line 1
Principal 'test-user' could not be resolved.
Error message: 'Server identity is not configured. Please follow the steps in "Assign an Azure AD identity to your server and add Directory Reader permission to your identity" (https://aka.ms/sqlaadsetup)'

Эта ошибка означает, что удостоверение сервера не было создано или не было назначено разрешения Microsoft Graph. Выполните действия, чтобы назначить удостоверение логическому серверу и назначить разрешение читателя каталогов удостоверению логического сервера.

Ограничения

  • Субъекты-службы не могут проходить проверку подлинности по границам клиентов. Попытка получить доступ к База данных SQL или Управляемый экземпляр SQL с помощью приложения Microsoft Entra, созданного в другом клиенте, завершается сбоем.

  • Модуль Az.Sql 2.9.0 или более поздней версии требуется для установки приложения Microsoft Entra в качестве администратора Microsoft Entra для SQL Azure. Убедитесь, что вы обновлены до последнего модуля.