Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:Azure SQL Database
Azure SQL Managed Instance
Ресурсы Azure SQL поддерживают программный доступ для приложений с помощью принципалов служб и управляемых удостоверений в Microsoft Entra ID (ранее известный как Azure Active Directory).
Поддержка субъектов-служб (Microsoft Entra приложений)
Эта статья относится к приложениям, зарегистрированным в Microsoft Entra ID. Использование учетных данных приложения для доступа к Azure SQL поддерживает принцип безопасности разделения обязанностей, что позволяет организациям настраивать точный доступ для каждого приложения, подключающегося к их базам данных. Управляемые удостоверения, специальная форма служебных главных субъектов, рекомендуются, поскольку они не требуют паролей и устраняют необходимость в управляемых разработчиком учетных данных.
Microsoft Entra ID дополнительно обеспечивает расширенные сценарии проверки подлинности, такие как 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 Managed Instance без взаимодействия с человеком. Субъекты-службы могут быть администратором Microsoft Entra для логического сервера SQL или управляемого экземпляра в составе группы или в качестве автономного удостоверения. Приложение может автоматизировать создание объектов Microsoft Entra в базе данных SQL или SQL Managed Instance, что позволяет полностью автоматизировать создание пользователя базы данных.
Разрешить учетным записям служб создание пользователей Microsoft Entra
При использовании приложений для доступа к Azure SQL создание пользователей Microsoft Entra и учетных записей требует разрешений, которые по умолчанию не назначаются субъектам-службам или управляемым удостоверениям. Эти разрешения включают возможность чтения данных о пользователях, группах и приложениях клиента из Microsoft Graph. Эти разрешения необходимы для того, чтобы SQL-движок мог проверить удостоверение, указанное в CREATE LOGIN или CREATE USER, и извлечь важные сведения, включая объект или идентификатор приложения удостоверения, которые используются для создания имени входа или пользователя.
Когда пользователь Microsoft Entra выполняет эти команды, приложение Azure SQL Microsoft использует делегированные разрешения для олицетворения вошедшего пользователя и выполнения запросов к Microsoft Graph с использованием его прав доступа. Этот процесс невозможен с учетными записями служб, так как приложение не может олицетворить другое приложение. Вместо этого SQL-движок пытается использовать свою идентификацию сервера, которая является управляемым удостоверением, назначенным управляемому экземпляру SQL, логическому серверу Azure SQL или рабочей области Azure Synapse. Удостоверение сервера должно существовать и иметь разрешения на запрос Microsoft Graph, иначе операции завершатся сбоем.
Следующие шаги объясняют, как назначить управляемое удостоверение серверу и предоставить ему разрешения Microsoft Graph, чтобы служебные участники могли создавать пользователей Microsoft Entra и учетные записи в базе данных.
Назначьте идентификатор сервера. Удостоверение сервера может быть назначаемое системой или назначаемое пользователем управляемое удостоверение. Дополнительные сведения см. в разделе Управляемые идентификаторы в Microsoft Entra для Azure SQL.
- Следующая команда PowerShell создает новый логический сервер, подготовленный с помощью управляемого удостоверения, назначаемого системой:
$newServerParams = @{ ResourceGroupName = '<resource group>' Location = '<Location name>' ServerName = '<Server name>' ServerVersion = '12.0' SqlAdministratorCredentials = (Get-Credential) AssignIdentity = $true } New-AzSqlServer @newServerParamsДополнительные сведения см. в команде New-AzSqlServer или New-AzSqlInstance для SQL Managed Instance.
- Для существующего логического сервера выполните следующую команду, чтобы добавить в него управляемое удостоверение, назначаемое системой:
$setServerParams = @{ ResourceGroupName = '<resource group>' ServerName = '<Server name>' AssignIdentity = $true } Set-AzSqlServer @setServerParamsДополнительные сведения см. в команде Set-AzSqlServer или Set-AzSqlInstance для SQL Managed Instance.
- Чтобы проверить, назначен ли идентификатор серверу, выполните команду Get-AzSqlServer, а для SQL Managed Instance — команду Get-AzSqlInstance.
Примечание.
Удостоверение сервера можно назначить с помощью REST API и команд CLI. Дополнительные сведения см. в разделе Создание сервера az sql, Обновление сервера az sql и Серверы — REST API.
Предоставьте разрешения на доступ учетной записи сервера для запроса Microsoft Graph. Это можно сделать несколькими способами: добавив удостоверение в роль Microsoft Entra Directory Readers, назначив удостоверению отдельные разрешения Microsoft Graph или добавив удостоверение в группу, которая обладает ролью Directory Readers.
Добавить идентификатор сервера в группу, предназначенную для назначения ролей
В рабочих средах рекомендуется, чтобы администратор клиента создал группу с возможностью назначения ролей и назначает ей роль читателя каталогов. Затем владельцы групп могут добавлять идентификаторы сервера в группу, получив эти разрешения. Это устраняет необходимость для администратора привилегированных ролей предоставлять разрешения каждой серверной идентичности, позволяя администраторам делегировать назначение разрешений владельцам группы в данной ситуации. Дополнительные сведения см. в разделе Directory Readers в Microsoft Entra ID для Azure SQL.
Назначение разрешений Microsoft Graph для идентификации сервера
Чтобы назначить удостоверению сервера индивидуальные разрешения Microsoft Graph, необходимо иметь роль администратора привилегированных ролей Microsoft Entra. Это рекомендуется вместо назначения роли читателя каталогов, потому что в этой роли содержатся разрешения, которые не требуются для удостоверения сервера. Назначение только разрешений на чтение Microsoft Graph ограничивает полномочия удостоверения сервера в пределах вашего арендатора и поддерживает принцип минимальных привилегий. Инструкции см. в Управляемые идентичности в Microsoft Entra для Azure SQL.
Добавьте удостоверение сервера в роль читателей каталогов
Чтобы добавить удостоверение сервера в роль Directory Readers, необходимо быть участником роли администратора привилегированных ролей Microsoft Entra Privileged Roles. В рабочих средах этот параметр не рекомендуется по двум причинам: роль читателя каталогов предоставляет больше разрешений, чем требует удостоверение сервера, и процесс назначения ролей по-прежнему требует утверждения администратора для каждого удостоверения сервера (в отличие от групп). Следуйте инструкциям SQL Managed Instance, доступным в статье Set Microsoft Entra admin (SQL Managed Instance).
Troubleshoot
При устранении неполадок может возникнуть следующая ошибка:
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 Managed Instance с помощью приложения Microsoft Entra, созданного в другом клиенте, завершается сбоем.
модуль Az.Sql 2.9.0 или более поздней версии требуется для задания приложения Microsoft Entra в качестве администратора Microsoft Entra для Azure SQL. Убедитесь, что вы обновлены до последнего модуля.
Подключение к Azure SQL с помощью учетной записи службы
Чтобы подключить приложение к Azure SQL Database с помощью субъекта-службы, вам потребуется:
Регистрация приложения в Microsoft Entra ID с идентификатором приложения (клиента) и секретом клиента или сертификатом. Для рабочих нагрузок используйте вместо этого управляемое удостоверение— управляемые удостоверения устраняют необходимость в учетных данных, управляемых разработчиком.
Пользователь автономной базы данных, сопоставленный с субъектом-службой. Подключитесь к администратору Microsoft Entra и выполните следующую команду:
CREATE USER [my-sql-app] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [my-sql-app];Замените
my-sql-appна отображаемое имя регистрации приложения. Назначьте соответствующие роли базы данных в зависимости от потребностей в доступе приложения.Строка подключения, указывающая
Active Directory Service Principalаутентификацию. Используйте идентификатор приложения (клиента) в качестве имени пользователя и секрета клиента в качестве пароля.
Полное пошаговое руководство, включая регистрацию приложений и настройку разрешений, см. в разделе Tutorial: создание Microsoft Entra пользователей с помощью приложений Microsoft Entra. См. примеры подключения для конкретного драйвера в разделе Подключение к Azure SQL с проверкой подлинности Microsoft Entra и SqlClient.