在创建服务主体时,需选择其使用的登录身份验证的类型。 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”、“用户名”或“被分配者 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
cmdlet。
$AzCred = Get-Credential -UserName <app-id>
az login --service-principal -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password --tenant <tenant>
后续步骤
了解如何使用密码处理服务主体后,请继续执行下一步,了解如何将服务主体与基于证书的身份验证配合使用。