Come utilizzare le managed identity per gestire l’accesso alle risorse Azure

Le Managed identity per le risorse Azure sono una funzionalità di Azure Active Directory che permette di effettuare l’autenticazione a qualsiasi servizio che supporta l’autenticazione di Azure AD senza dover gestire le credenziali.

Attualmente i servizi che supportano Managed identities for Azure resources sono:

  • API Management
  • Application Gateway
  • Azure App Configuration
  • Azure App Services
  • Azure Arc enabled Kubernetes
  • Azure Arc enabled servers
  • Azure Automanage
  • Azure Automation
  • Azure Batch
  • Azure Blueprints
  • Azure Cache for Redis
  • Azure Container Apps
  • Azure Container Instance
  • Azure Container Registry
  • Azure Cognitive Services
  • Azure Data Box
  • Azure Data Explorer
  • Azure Data Factory
  • Azure Data Lake Storage Gen1
  • Azure Data Share
  • Azure DevTest Labs
  • Azure Event Grid
  • Azure Event Hubs
  • Azure Image Builder
  • Azure Import/Export
  • Azure Kubernetes Service (AKS)
  • Azure Load Testing
  • Azure Logic Apps
  • Azure Log Analytics cluster
  • Azure Machine Learning Services
  • Azure Managed Disk
  • Azure Media services
  • Azure Monitor
  • Azure Policy
  • Microsoft Purview
  • Azure Resource Mover
  • Azure Site Recovery
  • Azure Search
  • Azure Service Bus
  • Azure Service Fabric
  • Azure SignalR Service
  • Azure Spring Apps
  • Azure SQL
  • Azure SQL Managed Instance
  • Azure Stack Edge
  • Azure Static Web Apps
  • Azure Stream Analytics
  • Azure Synapse
  • Azure VM image builder
  • Azure Virtual Machine Scale Sets
  • Azure Virtual Machines
  • Azure Web PubSub Service

Tipi di identità gestita

Sono disponibili due tipi di identità gestite:

  • Assegnata dal sistema. Alcuni servizi di Azure consentono di abilitare un’identità gestita direttamente in un’istanza del servizio (service principal). Quando si abilita un’identità gestita assegnata dal sistema viene creata un’identità in Azure AD. L’identità viene associata al ciclo di vita di quell’istanza del servizio. Quando la risorsa viene eliminata, Azure elimina automaticamente anche l’identità. Per impostazione predefinita, solo questa specifica risorsa di Azure può usare questa identità per richiedere token ad Azure AD.
  • Assegnata dall’utente. È anche possibile creare un’identità gestita come risorsa di Azure autonoma. È possibile creare un’identità gestita assegnata dall’utente e assegnarla a una o più istanze di un servizio di Azure. Le identità gestite assegnate dall’utente vengono gestite separatamente rispetto alle risorse che le usano.

Quali operazioni è possibile eseguire usando le identità gestite?

Le risorse che supportano le identità gestite assegnate dal sistema consentono di:

  • Abilitare o disabilitare le identità gestite a livello di risorsa.
  • Usare il controllo degli accessi in base al ruolo per concedere le autorizzazioni.
  • Visualizzare le operazioni di creazione, lettura, aggiornamento ed eliminazione (CRUD) nei log attività di Azure.
  • Visualizzare l’attività di accesso nei log di accesso di Azure AD.

Se invece si sceglie un’identità gestita assegnata dall’utente:

  • È possibile creare, leggere, aggiornare ed eliminare le identità.
  • È possibile usare le assegnazioni di ruolo controllo degli accessi in base al ruolo per concedere le autorizzazioni.
  • Le identità gestite assegnate dall’utente possono essere usate in più di una risorsa.
  • Le operazioni CRUD sono disponibili per la revisione nei log attività di Azure.
  • Visualizzare l’attività di accesso nei log di accesso di Azure AD.

Creazione di una system-assigned managed identity

In questa guida faccio vedere come creare una system-assigned managed identity associata ad una macchina virtuale e a questa identità assegnerò alcuni permessi sulla sottoscrizione Azure.

Dal portale di Azure, selezionate la VM a cui volete associare la system-assigned managed identity e dal nodo Identity potrete verificare che è possibile assegnare sia system-assigned che user-assigned managed identity.

Figura 1: È possibile assegnare una user-assigned managed identity alla VM

In questa guida vi mostro come creare una system-assigned managed identity. Cliccate sulla scheda System asssigned e portate a ON la funzionalità. Confermate con Save e quindi con Yes.

Figura 2: Abilitazione di una system assigned managed identity associata alla VM

La creazione della system-assigned managed identity dura pochi secondi.

Figura 3: System assigned managed identity creata in Azure AD

In Azure AD potete verificare che è tata creata la nuova identità selezionando il nodo Enterprise Applications e visualizzando l’application type corretto (Managed Identities), come mostrato in figura.

Figura 4: La system assigned managed identity è visibile in Azure AD

Assegnazione dei permessi alla managed identity

Per assegnare i permessi alla managed identity potete utilizzare il nodo Access control (IAM) della risorsa a cui volete che vengano concessi. In questo caso ho cliccato direttamente sul pulsante Azure role assignment dalla scheda Identity della VM.

Seguendo il wizard ho poi preceduto all’assegnazione dei permessi alla managed identity potete, come mostrato nelle figure sotto:

Figura 5: Assegnazione dei permessi alla managed identity

Figura 6: Scelta dello scope a cui assegnare i permessi

Figura 7: Scelta dei permessi da assegnare

Figura 8: Permessi assegnati alla managed identity

Per utilizzare Azure RBAC (Role Based Access Control) per assegnare i permessi di accesso ad una Managed Identity vi basterà navigare fino alla risorsa desiderata di cui volete modificare il controllo degli accessi e dal nodo Access control (IAM) potete effettuare il role assignment desiderato>, scegliendo di concedere l’accesso non ad un utente o un gruppo ma ad una identità gestita, come mostrato nella figura sotto:

Figura 9: I permessi possono essere assegnati con la modalità RBAC utilizzando il nodo Access control (IAM) della risorsa Azure da configurare

Per verificare che adesso, dall’interno della VM, sarà possibile operare con i permessi concessi (io ho concesso la lettura di tutti gli oggetti della sottoscrizione), ho semplicemente installato il modulo di Azure AD e ho utilizzato il comando Connect-AzAccount -Identity per collegarmi alla sottoscrizione. Non mi è stato chiesto nessun tipo di autenticazione (non è apparso nessun popup che mi chiedeva le credenziali di accesso) e sono riuscito a leggere l’elenco di tutte le VM con il comando Get-AzVM, come mostrato nella figura sotto:

Figura 10: La connessione è avvenuta senza prompt di autenticazione e con i “privilegi” della VM

Creazione di una user assigned managed identity

La user assigned managed identity è una risorsa di Azure che è gestibile direttamente dal portale di Azure. Vi basterà cercare la voce Managed Identities dalla barra di ricerca e seguire il wizard di creazione, come mostrato nelle figure sotto:

Figura 11: Creazione di un Managed identity dal portale di Azure

Figura 12: Inserimento delle informazioni per la creazione della Managed identity

Figura 13: Managed identity creata

Figura 14: Esempio di associazione di una User-asigned managed identity ad una VM di Azure

Conclusioni

Le identità gestite sono utili grazie alla gestione automatica delle identità dei workload che eseguono l’autenticazione in Azure Active Directory: le applicazioni ottengono i token da Azure AD senza la necessità di gestire le credenziali e le password all’interno del codice dell’applicazione. È possibile assegnare questi ruoli di identità all’interno di altre risorse che supportano l’autenticazione di Azure AD per ottenere l’accesso a tali risorse. Questo elimina l’attività manuale di gestione delle credenziali all’interno del codice delle applicazioni o dei carichi di lavoro, riducendo la possibilità di eventuali perdite di password e aumentando di fatto la sicurezza delle nostre applicazioni.