Creare un'entità servizio di Azure con l'interfaccia della riga di comando Azure

Gli strumenti automatizzati che usano i servizi di Azure devono avere sempre autorizzazioni limitate per garantire che le risorse di Azure siano sicure. Pertanto, invece di avere applicazioni che accedono come utente con privilegi completi, Azure offre entità servizio. Un'entità servizio di Azure è un'identità creata per l'uso con applicazioni, servizi ospitati e strumenti automatizzati. Questa identità viene usata per accedere alle risorse.

In questa esercitazione apprenderai a:

  • Creare un'entità servizio
  • Accedere con un'entità servizio e una password
  • Accedere con un'entità servizio e un certificato
  • Gestire i ruoli delle entità servizio
  • Creare una risorsa di Azure usando un'entità servizio
  • Reimpostare le credenziali dell'entità servizio

Prerequisiti

  • Per creare un'entità servizio, in una sottoscrizione è necessario avere User Access Administrator o Role Based Access Control Administrator autorizzazioni o versioni successive. Per un elenco dei ruoli disponibili per il controllo degli accessi in base al ruolo di Azure, vedere Ruoli predefiniti di Azure.

Creare un'entità servizio

Usare il comando az ad sp create-for-rbac dell'interfaccia della riga di comando di Azure per creare un'entità servizio. Questo esempio non specifica un --name parametro, quindi viene creato automaticamente un nome contenente un timestamp.

az ad sp create-for-rbac

Console di output:

{
  "appId": "myAppId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myTentantId"
}

Se non si accettano convenzioni di denominazione delle risorse e si prevede di creare un ruolo e un ambito per la nuova entità servizio in un secondo momento, il az ad sp create-for-rbac comando senza parametri è una soluzione accettabile. Tuttavia, senza un ruolo e un ambito, la nuova entità servizio non ha accesso alle risorse. Esiste solo.

Quando si crea un'entità servizio senza parametri, completare anche questi passaggi:

Creare un'entità servizio con ruolo e ambito

Come procedura consigliata, assegnare sempre un'entità servizio specifica --role e --scopes quando si crea un'entità servizio. Seguire questa procedura:

  1. Determinare il ruolo corretto.

    Quando si determina il ruolo, usare sempre il principio dei privilegi minimi. Ad esempio, non concedere all'entità servizio le autorizzazioni per una sottoscrizione se l'entità contributor servizio deve accedere solo all'archiviazione di Azure all'interno di un gruppo di risorse. Prendere in considerazione un ruolo specializzato come collaboratore ai dati dei BLOB di archiviazione. Per un elenco completo dei ruoli disponibili nel controllo degli accessi in base al ruolo di Azure, vedere Ruoli predefiniti di Azure.

  2. Ottenere un valore per il parametro scopes.

    Trovare e copiare l'ID risorsa della risorsa di Azure a cui deve accedere la nuova entità servizio. Queste informazioni si trovano in genere nella pagina Proprietà o endpoint della portale di Azure di ogni risorsa. Di seguito sono riportati esempi comuni--scopes, ma si basano sull'IDrisorsa per un formato e un valore effettivi.

    Ambito Esempio
    Subscription /subscriptions/mySubscriptionID
    Resource group /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
    Macchina virtuale /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
    Archiviazione servizio file dell'account /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
    Data factory /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName

    Per altri esempi di ambito, vedere Informazioni sull'ambito per il controllo degli accessi in base al ruolo di Azure.

  3. Creare l'entità servizio.

    In questo esempio viene creata una nuova entità servizio denominata myServicePrincipalName1 con autorizzazioni di lettura per tutte le risorse nel gruppo di risorse RG1.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName1 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1
    

    Il --scopes parametro accetta un elenco delimitato da spazi di ambiti. In questo esempio viene creata una nuova entità servizio denominata myServicePrincipalName2 con autorizzazioni di lettura per tutte le risorse nel gruppo di risorse myRG1. Questa entità servizio ha anche le autorizzazioni di lettura per myVM che si trovano in myRG2.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName2 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG2/providers/Microsoft.Compute/virtualMachines/myVM
    

Se si decide di concedere troppe autorizzazioni o troppe autorizzazioni alla nuova entità servizio, modificare le autorizzazioni gestendo i ruoli dell'entità servizio.

Creare un'entità servizio usando le variabili

È anche possibile creare un'entità servizio usando le variabili:

# Bash script
let "randomIdentifier=$RANDOM*$RANDOM"
servicePrincipalName="msdocs-sp-$randomIdentifier"
roleName="azureRoleName"
subscriptionID=$(az account show --query id --output tsv)
# Verify the ID of the active subscription
echo "Using subscription ID $subscriptionID"
resourceGroup="myResourceGroupName"

echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup"
az ad sp create-for-rbac --name $servicePrincipalName \
                         --role $roleName \
                         --scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup

Per un elenco completo delle proprietà dell'entità servizio, usare az ad sp list e vedere Ottenere un'entità servizio esistente.

Avviso

Quando si crea un'entità servizio di Azure usando il az ad sp create-for-rbac comando , l'output include le credenziali che è necessario proteggere. Assicurarsi di non includere tali credenziali nel codice oppure archiviarle nel controllo del codice sorgente. In alternativa, è consigliabile usare le identità gestite, se disponibili, per evitare la necessità di usare le credenziali.

Passaggi successivi

Dopo aver appreso come creare un'entità servizio di Azure, procedere con il passaggio successivo per informazioni su come usare le entità servizio con l'autenticazione basata su password.