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


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

Дальнейшие шаги

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