Использование субъекта-службы Azure с проверкой подлинности на основе паролей
При создании субъекта-службы вы задаете используемый им тип аутентификации для входа. Для субъектов-служб Azure доступно два типа проверки подлинности: проверка подлинности на основе паролей и проверка подлинности на основе сертификатов. Проверка подлинности на основе паролей рекомендуется использовать при изучении субъектов-служб, но мы рекомендуем использовать проверку подлинности на основе сертификатов для приложений.
В этом руководстве объясняется, как использовать пароль субъекта-службы для доступа к ресурсу Azure.
Создание субъекта-службы, содержащего пароль
Поведение по умолчанию az ad sp create-for-rbac — создание субъекта-службы со случайным паролем.
az ad sp create-for-rbac --name myServicePrincipalName \
--role reader \
--scopes /subscriptions/mySubscriptionId/resourceGroups/myResourceGroupName
Выходная консоль:
{
"appId": "myServicePrincipalId",
"displayName": "myServicePrincipalName",
"password": "myServicePrincipalPassword",
"tenant": "myOrganizationTenantId"
}
Выходные данные для субъекта-службы с аутентификацией на основе пароля включают ключ password
. Обязательно скопируйте это значение, так как его нельзя получить повторно. Если вы потеряли пароль, сбросьте учетные данные субъекта-службы.
Вход с помощью субъекта-службы с помощью пароля
Войдите, чтобы протестировать разрешения и учетные данные нового субъекта-службы. Чтобы войти с помощью субъекта-службы, вам потребуется appId
(также известный как "идентификатор субъекта-службы", "имя пользователя" или "назначаемый"), tenant
а также password
. Ниже приведен пример:
az login --service-principal \
--username myServicePrincipalId \
--password myServicePrincipalPassword \
--tenant myOrganizationTenantID
Если вы не знаете или appId
--tenant
извлеките его с помощью az ad sp list
команды.
spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:appId}" --output tsv)
tenantID=$(az ad sp list --display-name myServicePrincipalName --query "[].{tenant:appOwnerOrganizationId}" --output tsv)
echo "Using appId $spID in tenant $tenantID"
az login --service-principal \
--username $spID \
--password {paste your password here} \
--tenant $tenantID
Если вы тестируете в организации, требующей двухфакторной проверки подлинности, сообщение об ошибке "... Требуется интерактивная проверка подлинности..." отображается. В качестве альтернативы используйте сертификат или управляемые удостоверения.
Важно!
Если вы хотите избежать отображения пароля в консоли и интерактивного использования az login
, используйте read -s
команду в bash
.
read -sp "Azure password: " AZ_PASS && echo && az login --service-principal -u <app-id> -p $AZ_PASS --tenant <tenant>
В PowerShell используйте командлет Get-Credential
.
$AzCred = Get-Credential -UserName <app-id>
az login --service-principal -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password --tenant <tenant>
Дальнейшие действия
Теперь, когда вы узнали, как работать с субъектами-службами с помощью пароля, перейдите к следующему шагу, чтобы узнать, как использовать субъекты-службы с проверкой подлинности на основе сертификатов.