Używanie jednostki usługi platformy Azure z uwierzytelnianiem opartym na hasłach

Podczas tworzenia jednostki usługi wybierz używany przez nią typ uwierzytelniania logowania. Istnieją dwa typy uwierzytelniania dostępne dla jednostek usługi platformy Azure: uwierzytelnianie oparte na hasłach i uwierzytelnianie oparte na certyfikatach. Uwierzytelnianie oparte na hasłach jest przydatne podczas poznawania jednostek usługi, ale zalecamy używanie uwierzytelniania opartego na certyfikatach dla aplikacji.

W tym kroku w samouczku wyjaśniono, jak używać hasła jednostki usługi w celu uzyskania dostępu do zasobu platformy Azure.

Tworzenie jednostki usługi zawierającej hasło

Domyślnym zachowaniem polecenia az ad sp create-for-rbac jest utworzenie jednostki usługi z losowym hasłem.

az ad sp create-for-rbac --name myServicePrincipalName \
                         --role reader \
                         --scopes /subscriptions/mySubscriptionId/resourceGroups/myResourceGroupName

Konsola wyjściowa:

{
  "appId": "myServicePrincipalId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myOrganizationTenantId"
}

Dane wyjściowe jednostki usługi z uwierzytelnianiem haseł obejmują password klucz. Upewnij się, że skopiujesz tę wartość — nie można jej pobrać. W przypadku utraty hasła zresetuj poświadczenia jednostki usługi.

Logowanie przy użyciu jednostki usługi przy użyciu hasła

Przetestuj poświadczenia i uprawnienia nowej jednostki usługi przez zalogowanie. Aby zalogować się przy użyciu jednostki usługi, musisz mieć wartość appId (znaną również jako "identyfikator jednostki usługi", "nazwa użytkownika" lub "assignee"), tenanti password. Oto przykład:

az login --service-principal \
         --username myServicePrincipalId \
         --password myServicePrincipalPassword \
         --tenant myOrganizationTenantID

Jeśli nie znasz elementu appId lub --tenant, pobierz go przy użyciu az ad sp list polecenia .

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

Jeśli testujesz w organizacji, która wymaga uwierzytelniania dwuskładnikowego, komunikat o błędzie "... Wymagane jest uwierzytelnianie interakcyjne..." jest wyświetlany. Alternatywnie należy użyć certyfikatu lub tożsamości zarządzanych.

Ważne

Jeśli chcesz uniknąć wyświetlania hasła w konsoli programu i używać az login go interaktywnie, użyj read -s polecenia w programie bash.

read -sp "Azure password: " AZ_PASS && echo && az login --service-principal -u <app-id> -p $AZ_PASS --tenant <tenant>

W programie PowerShell użyj Get-Credential polecenia cmdlet .

$AzCred = Get-Credential -UserName <app-id>
az login --service-principal -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password --tenant <tenant>

Następne kroki 

Teraz, gdy wiesz już, jak pracować z jednostkami usługi przy użyciu hasła, przejdź do następnego kroku, aby dowiedzieć się, jak używać jednostek usługi z uwierzytelnianiem opartym na certyfikatach.