你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用包含基于密码的身份验证的服务主体

在创建服务主体时,需选择其使用的登录身份验证的类型。 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(也称为“服务主体 ID”、“用户名”或“代理人”)、tenantpassword。 下面是一个示例:

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,请在 bash 中使用 read -s 命令。

read -sp "Azure password: " AZ_PASS && echo && az login --service-principal -u <app-id> -p $AZ_PASS --tenant <tenant>

在 PowerShell 中使用 Get-Credential cmdlet。

$AzCred = Get-Credential -UserName <app-id>
az login --service-principal -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password --tenant <tenant>

后续步骤

在了解如何使用密码处理服务主体后,请继续执行下一步,了解如何将服务主体与基于证书的身份验证配合使用。