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