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"), tenant
i 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.