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


Использование субъекта-службы 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>

Дальнейшие действия

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