Condividi tramite


Usare un'entità servizio di Azure con l'autenticazione basata su password

Quando si crea un'entità servizio, si sceglie il tipo di autenticazione per l'accesso che verrà usata dall'entità. Esistono due tipi di autenticazione disponibili per le entità servizio di Azure: autenticazione basata su password e autenticazione basata su certificati. L'autenticazione basata su password è utile quando si apprendono le entità servizio, ma è consigliabile usare l'autenticazione basata su certificati per le applicazioni.

Questo passaggio dell'esercitazione illustra come usare una password dell'entità servizio per accedere a una risorsa di Azure.

Creare un'entità servizio contenente una password

Il comportamento predefinito di az ad sp create-for-rbac consiste nel creare un'entità servizio con una password casuale.

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

Console di output:

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

L'output per un'entità servizio con autenticazione della password include la chiave password. Assicurarsi di copiare questo valore perché non può essere recuperato. Se si perde la password, reimpostare le credenziali dell'entità servizio.

Accedere con un'entità servizio usando una password

Testare le credenziali e le autorizzazioni della nuova entità servizio eseguendo l'accesso. Per accedere con un'entità servizio, è necessario appId (noto anche come "ID entità servizio", "username" o "assignee"), tenante password. Ecco un esempio:

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

Se non si conosce appId o --tenant, recuperarlo usando il az ad sp list comando .

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

Se si esegue il test in un'organizzazione che richiede l'autenticazione a due fattori, il messaggio di errore "... È necessaria l'autenticazione interattiva..." viene visualizzato. In alternativa, usare un certificato o identità gestite.

Importante

Se si vuole evitare di visualizzare la password nella console e si usa az login in modo interattivo, usare il read -s comando in bash.

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

In PowerShell usare il cmdlet Get-Credential.

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

Passaggi successivi

Ora che si è appreso come usare le entità servizio usando una password, procedere con il passaggio successivo per informazioni su come usare le entità servizio con l'autenticazione basata su certificati.