Condividi tramite


Creare un service principal di Azure con Azure CLI

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 principali di servizio. Un principale del 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 si apprenderà come:

  • Creare un principale servizio
  • Accedere utilizzando un principal del servizio e una password
  • Accedere con un principale del servizio e un certificato
  • Gestire i ruoli dei principali del servizio
  • Creare una risorsa di Azure usando un principal di servizio
  • Reimpostare le credenziali dell'entità servizio principale

Prerequisiti

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

Creare un principale servizio

Usare il comando az ad sp create-for-rbac di Azure CLI per creare un principal di 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:

Annotazioni

Se il tuo account non ha l'autorizzazione per creare un service principal, az ad sp create-for-rbac restituirà un messaggio di errore contenente "Privilegi insufficienti per completare l'operazione". Contatta l'amministratore di Microsoft Entra per creare un principale del servizio.

In una directory di Microsoft Entra ID in cui l'impostazione utente Gli utenti possono registrare applicazioni è stata impostata su No, è necessario essere membri di uno dei seguenti ruoli predefiniti di Microsoft Entra ID, che hanno l'azione microsoft.directory/applications/createAsOwner o microsoft.directory/applications/create:

Per altre informazioni sulle impostazioni utente in Microsoft Entra ID, vedere Limitare gli utenti che possono creare applicazioni.

Creare un principale del servizio con ruolo e ambito

Come buona pratica, assegnate sempre un principale del servizio specifico --role e --scopes quando create un principale del servizio. Segui questi passaggi:

  1. Determinare il ruolo corretto.

    Quando si determina il ruolo, usare sempre il principio dei privilegi minimi. Ad esempio, non concedere all'entità di servizio contributor le autorizzazioni per una sottoscrizione se l'entità di servizio deve accedere solo all'archiviazione di Azure all'interno di un gruppo di risorse. Prendere in considerazione un ruolo specializzato come contributore ai dati dei BLOB di archiviazione. Per un elenco completo dei ruoli disponibili in Azure RBAC, 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 del portale di Azure di ogni risorsa. Di seguito sono riportati esempi comuni--scopes, ma fate riferimento al vostro ID Risorsa per un formato e un valore effettivi.

    Ambito Esempio
    Abbonamento /subscriptions/mySubscriptionID
    Gruppo di risorse /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
    Macchina virtuale /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
    Servizio di file dell'account di archiviazione /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
    Fabbrica di dati /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName

    Per altri esempi di ambito, vedere Comprendere l'ambito per RBAC 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 scopi. 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 decidi di aver concesso troppe poche o troppe autorizzazioni al nuovo principale del servizio, modifica le autorizzazioni gestendo i ruoli del principale del servizio.

Creare un'entità servizio usando le variabili

È anche possibile creare un principale del 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.

Avvertimento

Quando si crea un principale del servizio di Azure usando il comando az ad sp create-for-rbac, l'output include credenziali che devono essere protette. 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.