Assegnare un accesso all'identità gestita a un ruolo applicazione usando l'interfaccia della riga di comando di Azure
Le identità gestite per le risorse di Azure forniscono ai servizi di Azure un'identità in Microsoft Entra ID. Funzionano senza bisogno di credenziali nel codice. I servizi di Azure usano questa identità per eseguire l'autenticazione ai servizi che supportano l'autenticazione di Microsoft Entra. I ruoli applicazione forniscono una forma di controllo degli accessi in base al ruolo e consentono a un servizio di implementare le regole di autorizzazione.
Nota
I token ricevuti dall'applicazione vengono memorizzati nella cache dall'infrastruttura sottostante, il che significa che le modifiche apportate ai ruoli dell'identità gestita possono richiedere tempo significativo per rendere effettive. Per altre informazioni, vedere Limitazione dell'uso di identità gestite per l'autorizzazione.
Questo articolo illustra come assegnare un'identità gestita a un ruolo applicazione esposto da un'altra applicazione usando l'interfaccia della riga di comando di Azure.
Prerequisiti
- Se non si ha familiarità con le identità gestite per le risorse di Azure, vedere la sezione sulla panoramica. Assicurarsi di conoscere la differenza tra identità assegnata dal sistema e identità gestita assegnata dall'utente.
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido per Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
Assegnare un accesso all'identità gestita al ruolo dell'app di un'altra applicazione
Abilitare l'identità gestita in una risorsa di Azure, ad esempio una macchina virtuale di Azure.
Trovare l'ID oggetto dell'entità servizio dell'identità gestita.
Per un'identità gestita assegnata dal sistema, è possibile trovare l'ID oggetto nella portale di Azure nella pagina Identità della risorsa. È anche possibile usare lo script seguente per trovare l'ID oggetto. Sarà necessario l'ID risorsa della risorsa creata nel passaggio 1, disponibile nella portale di Azure nella pagina Proprietà della risorsa.
resourceIdWithManagedIdentity="/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.Compute/virtualMachines/{my virtual machine name}" oidForMI=$(az resource show --ids $resourceIdWithManagedIdentity --query "identity.principalId" -o tsv | tr -d '[:space:]') echo "object id for managed identity is: $oidForMI"
Per un'identità gestita assegnata dall'utente, è possibile trovare l'ID oggetto dell'identità gestita nella portale di Azure nella pagina Panoramica della risorsa. È anche possibile usare lo script seguente per trovare l'ID oggetto. Sarà necessario l'ID risorsa dell'identità gestita assegnata dall'utente.
userManagedIdentityResourceId="/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{my managed identity name}" oidForMI=$(az resource show --id $userManagedIdentityResourceId --query "properties.principalId" -o tsv | tr -d '[:space:]') echo "object id for managed identity is: $oidForMI"
Creare una nuova registrazione dell'applicazione per rappresentare il servizio a cui l'identità gestita invierà una richiesta. Se l'API o il servizio che espone la concessione del ruolo app all'identità gestita ha già un'entità servizio nel tenant di Microsoft Entra, ignorare questo passaggio.
Trovare l'ID oggetto dell'entità servizio dell'applicazione di servizio. È possibile trovarla usando il portale di Azure. Passare a Microsoft Entra ID e aprire la pagina Applicazioni aziendali, quindi trovare l'applicazione e cercare l'ID oggetto. È anche possibile trovare l'ID oggetto dell'entità servizio in base al nome visualizzato usando lo script seguente:
appName="{name for your application}" serverSPOID=$(az ad sp list --filter "displayName eq '$appName'" --query '[0].id' -o tsv | tr -d '[:space:]') echo "object id for server service principal is: $serverSPOID"
Nota
I nomi visualizzati per le applicazioni non sono univoci, pertanto è necessario verificare di ottenere l'entità servizio dell'applicazione corretta.
In alternativa, è possibile trovare l'ID oggetto in base all'ID applicazione univoco per la registrazione dell'applicazione:
appID="{application id for your application}" serverSPOID=$(az ad sp list --filter "appId eq '$appID'" --query '[0].id' -o tsv | tr -d '[:space:]') echo "object id for server service principal is: $serverSPOID"
Aggiungere un ruolo dell'app all'applicazione creata nel passaggio 3. È possibile creare il ruolo usando il portale di Azure o Microsoft Graph. Ad esempio, è possibile aggiungere un ruolo app simile al seguente:
{ "allowedMemberTypes": [ "Application" ], "displayName": "Read data from MyApi", "id": "0566419e-bb95-4d9d-a4f8-ed9a0f147fa6", "isEnabled": true, "description": "Allow the application to read data as itself.", "value": "MyApi.Read.All" }
Assegnare il ruolo dell'app all'identità gestita. Per assegnare il ruolo dell'app, sono necessarie le informazioni seguenti:
managedIdentityObjectId
: ID oggetto dell'entità servizio dell'identità gestita, disponibile nel passaggio 2.serverServicePrincipalObjectId
: ID oggetto dell'entità servizio dell'applicazione server, disponibile nel passaggio 4.appRoleId
: l'ID del ruolo app esposto dall'app server, generato nel passaggio 5, nell'esempio l'ID ruolo dell'app è00000000-0000-0000-0000-000000000000
.
Eseguire lo script seguente per aggiungere l'assegnazione di ruolo. Si noti che questa funzionalità non è esposta direttamente nell'interfaccia della riga di comando di Azure e che in questo caso viene usato un comando REST:
roleguid="00000000-0000-0000-0000-000000000000" az rest -m POST -u https://graph.microsoft.com/v1.0/servicePrincipals/$oidForMI/appRoleAssignments -b "{\"principalId\": \"$oidForMI\", \"resourceId\": \"$serverSPOID\",\"appRoleId\": \"$roleguid\"}"
Passaggi successivi
- Panoramica delle identità gestite per le risorse di Azure
- Per abilitare l'identità gestita in una macchina virtuale di Azure, vedere Configurare identità gestite per risorse di Azure in una macchina virtuale tramite PowerShell.