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