你当前正在访问 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”、“用户名”或“代理人”)、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
,请在 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>
后续步骤
在了解如何使用密码处理服务主体后,请继续执行下一步,了解如何将服务主体与基于证书的身份验证配合使用。