Condividi tramite


Usare un servizio principale di Azure con autenticazione basata su password

Quando si crea un principale del servizio, si sceglie il tipo di autenticazione di accesso che utilizza. 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 i principali di servizio, ma raccomandiamo l'uso dell'autenticazione basata su certificato per le applicazioni.

Questo passaggio della guida illustra come usare una password del principale del 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 service principal con autenticazione tramite password include la chiave password. Assicurarsi di copiare questo valore. Non è possibile recuperarlo. Se perdi la password, reimposta le credenziali principali del servizio.

Accedere con un'entità servizio usando una password

Testare le credenziali e le autorizzazioni del nuovo principale del servizio effettuando l'accesso. Per accedere con un'entità servizio, è necessario l'appId (noto anche come "ID entità servizio", "username" o "assignee"), tenant e password. Ecco un esempio:

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

Se non si conosce appId o --tenant, recuperalo utilizzando il comando 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

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.