Share via


搭配密碼型驗證使用 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 (也稱為「服務主體識別碼」、「使用者名稱」或「被指派者」)、 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 ,請使用 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>

後續步驟

既然您已瞭解如何使用密碼來處理服務主體,請繼續進行下一個步驟,瞭解如何搭配憑證式驗證使用服務主體。