Проверка подлинности в рабочей области с помощью субъекта-службы
Иногда выполнять интерактивную аутентификацию или вход от имени пользователя нецелесообразно (например, если вы хотите отправлять задания из веб-службы, другой рабочей роли или автоматизированной системы). Один из вариантов — настройка управляемого удостоверения. Другой вариант — использование субъекта-службы. Именно ему посвящена эта статья.
Предварительное условие: создайте субъект-службу и секрет приложения
Чтобы выполнять аутентификацию от имени субъекта-службы, сначала нужно создать этот субъект-службу.
Чтобы создать субъект-службу, назначить права доступа и создать учетные данные, выполните следующие действия:
-
Примечание.
Вам не нужно настраивать URI.
- После создания запишите значения Идентификатор приложения (клиент) и Идентификатор каталога (арендатор).
Создайте учетные данные, чтобы входить от имени приложения:
- В разделе параметров приложения выберите Сертификаты и секреты.
- В разделе Секреты клиента выберите Создать секрет.
- Предоставьте описание и период действия, затем щелкните Добавить.
- Скопируйте значение этого секрета и немедленно сохраните его в надежном месте, ведь больше вы его не увидите.
Предоставьте этому субъекту-службе разрешения на доступ к рабочей области:
- Откройте портал Azure.
- В поле поиска введите имя группы ресурсов, в которой вы создали рабочую область. Выберите группу ресурсов, когда она появится в результатах.
- На странице обзорных сведений для группы ресурсов щелкните Управление доступом (IAM).
- Выберите Добавить назначение ролей.
- Найдите и выберите созданный субъект-службу.
- Присвойте ему роль Участник или Владелец.
Примечание.
Создать назначение роли для группы ресурсов или рабочей области может владелец или администратор доступа пользователей в области назначения роли. Если у вас нет разрешений на создание субъекта-службы в вашей подписке, запросите разрешение у владельца или администратора подписки Azure.
Если у вас есть разрешения только на уровне группы ресурсов или рабочей области, можно создать субъект-службу с ролью участника следующим образом:
az ad sp create-for-rbac --role Contributor --scopes /subscriptions/<SUBSCRIPTION-ID>
Аутентификация от имени субъекта-службы
Вариант 1. Использование переменных среды. Учетные данные по умолчанию, используемые при создании объекта Workspace
, — это DefaultAzureCredential, который будет пытаться выполнить несколько типов проверки подлинности.
Первый из них — EnvironmentCredential, с помощью которого вы передаете учетные данные субъекта-службы через следующие переменные среды:
- AZURE_TENANT_ID — идентификатор арендатора субъекта-службы. Также называется идентификатором каталога.
- AZURE_CLIENT_ID — идентификатор клиента субъекта-службы.
- AZURE_CLIENT_SECRET — один из секретов клиента субъекта-службы.
Вариант 2. Использование ClientSecretCredential. Передайте ClientSecretCredential во время создания объекта Workspace
или задайте свойство credentials
.
from azure.identity import ClientSecretCredential
tenant_id = os.environ["AZURE_TENANT_ID"]
client_id = os.environ["AZURE_CLIENT_ID"]
client_secret = os.environ["AZURE_CLIENT_SECRET"]
credential = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
workspace.credentials = credential
Примечание.
Метод workspace.login()
является нерекомендуемым и больше не требуется. При первом вызове службы будет предпринята попытка выполнить проверку подлинности с использованием учетных данных, переданных в конструкторе Workspace
или его свойстве credentials
. Если учетные данные не были переданы, DefaultAzureCredential попробует использовать несколько методов проверки подлинности.