建立服務主體時,您可以選擇其所用的登入驗證類型。 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 cmdlet。
$AzCred = Get-Credential -UserName <app-id>
az login --service-principal -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password --tenant <tenant>
後續步驟
既然您已瞭解如何使用密碼來處理服務主體,請繼續進行下一個步驟,瞭解如何搭配憑證式驗證使用服務主體。