Introduzione a Azure attribute-based access control (Azure ABAC)

Attribute-based access control (ABAC), attualmente in Preview, è un sistema di autorizzazione che concede l’accesso alle risorse di Azure in base agli attributi associati ai security principal (utenti e applicazioni). Con il controllo degli accessi in base al ruolo è possibile concedere ad una security identity l’accesso a una risorsa in base agli attributi.

La gestione dell’accesso per le risorse cloud è una funzione essenziale per qualsiasi organizzazione che usa il cloud. Il controllo degli accessi in base al ruolo di Azure (Role Based Access Control o RBAC, che in inglese si pronuncia R-Back) consente di gestire gli utenti autorizzati ad accedere alle risorse di Azure, le operazioni che possono eseguire su tali risorse e le aree a cui hanno accesso.

Nonostante in Azure ci siano decine di ruoli predefiniti, capaci di soddisfare la maggior parte delle esigenze di gestione, è possibile anche creare altri 5.000 ruoli personalizzati. Analogamente ai ruoli predefiniti, è possibile assegnare ruoli personalizzati a utenti, gruppi ed entità servizio in ambito management group, sottoscrizione e gruppo di risorse. In più i ruoli personalizzati possono essere condivisi tra sottoscrizioni che considerano attendibile la stessa directory di Azure AD. Per maggior informazioni potete leggere la mia guida Creare ruoli personalizzati in Azure Role Based Access Control (RBAC) – ICT Power

Azure ABAC si basa sul RBAC di Azure, aggiungendo le condizioni di assegnazione dei ruoli in base agli attributi nel contesto di azioni specifiche. Una role assignment condition è un controllo aggiuntivo che è possibile aggiungere facoltativamente all’assegnazione di ruolo per fornire un controllo di accesso più granulare. Una condizione filtra le autorizzazioni inattiva concesse come parte della definizione del ruolo e dell’assegnazione di ruolo.

 

Prerequisiti per l’utilizzo di Attribute-based access control (ABAC)

Per poter utilizzare Attribute-based access control (ABAC) è necessario rispettare dei prerequisiti, tutti elencati alla pagina Prerequisites for Azure role assignment conditions (preview) | Microsoft Learn. Assciuratevi quindi di leggere la pagina e di apportate le modifiche richieste al vostro tenant di Azure AD.

In particolare, bisogna avere una licenza Azure AD Premium P1 oppure P2.

Figura 1: Per utilizzare Attribute-based access control (ABAC) è necessario avere una licenza Azure AD Premium

Dal portale di Azure collegatevi ad Azure AD e selezionate la voce Custom security attributes (preview). Se il pulsante Add Attribute Set non è selezionabile, vuol dire che l’utente con cui siete collegati non dispone dei privilegi di Attribute Definition Administrator.

Figura 2: Il pulsante Add Attribute Set non è selezionabile perché l’utente con cui siete collegati non dispone dei privilegi di Attribute Definition Administrator

Procedete quindi ad assegnare all’utente che si occuperà di amministrare gli oggetti di Azure AD il ruolo di Attribute Definition Administrator.

Figura 3: Assegnazione all’utente del ruolo di Attribute Definition Administrator

Figura 4: Ruolo di Attribute Definition Administrator assegnato all’utente

Ritornate nella schermata di Azure AD, nella voce Custom security attributes (Preview) e vedrete che adesso il pulsante Add Attibute Set sarà abilitato.

Figura 5: il pulsante Add Attibute Set è abilitato

Cliccando sul pulsante potrete dare un nome al vostro Set di Attributi.

Figura 6: Nome del Set di attributi

Figura 7: Set di attributi creato

Dopo aver creato il set di attributi potete definirne il contenuto. Cliccando sul nome del set (nel mio caso Progetto) potrete aggiungere gli attributi, da utilizzare successivamente.

Figura 8: Aggiunta degli attributi per il set appena creato

Create il vostro attributo (nel mio caso ICTPower), date una descrizione, scegliete il tipo di dato (boolean, integer oppure string) e se volete aggiungete dei valori predefiniti.

Figura 9: Creazione di un nuovo attributo

Figura 10: Attibuto creato all’interno del set di attributi

Una volta creati i set di attributi e i loro relativi attributi, siete pronti per poterli assegnare.

 

Assegnazione degli attributi

È possibile assegnare gli attributi a utenti di Azure AD, ad applicazioni e finanche a risorse di Azure. Nel mio caso l’attributo verrà assegnato ad un utente.

Selezionate l’utente in Azure AD e cliccate sulla voce Custom security attribute (preview). Se non vi appare il pulsante Add Assignement vuol dire che l’utente con cui siete collegati non dispone dei privilegi di Attribute assignment Administrator.

Figura 11: L’utente con cui siete collegati non dispone dei privilegi di Attribute assignement Administrator

Procedete quindi ad assegnare all’utente con cui state gestendo il portale il ruolo di Attribute Assignment Administrator.

Figura 12: Assegnazione del ruolo di Attribute Assignment Administrator all’unte che sta gestendo Azure AD

Figura 13: Assegnazione del ruolo di Attribute Assignment Administrator completata

Se adesso selezionate l’utente di Azure AD a cui volete assegnare il Custom security Attribute (Preview), il pulsante Add assignment sarà disponibile.

Figura 14: Pulsante Add Assigment disponibile

Procedete ad assegnare all’utente gli attributi che ritenete necessari e che avete creato in precedenza.

Figura 15: Assegnazione del Custom Security Attribute effettuata con successo

Maggiori informazioni sull’aggiunta e sulla rimozione dei Custom Security Attribute sono disponibili alla pagina Assign or remove custom security attributes for a user (Preview) – Azure Active Directory – Microsoft Entra | Microsoft Learn

 

Utilizzo degli attributi per filtrare gli accessi – Role assignment condition

Una Role assignment condition è un controllo aggiuntivo che è possibile aggiungere facoltativamente all’assegnazione di ruolo per fornire un controllo di accesso più granulare. Una condizione filtra le autorizzazioni inattiva concesse come parte della definizione del ruolo e dell’assegnazione di ruolo. Ad esempio, è possibile aggiungere una condizione che richiede che un oggetto disponga di un tag specifico per leggere l’oggetto. Non è possibile negare esplicitamente l’accesso alle risorse specifiche usando le condizioni.

Esistono tre vantaggi principali per l’uso delle condizioni di assegnazione dei ruoli:

  • Fornire un controllo di accesso con granularità più fine : è possibile scrivere condizioni per filtrare tali autorizzazioni per un controllo di accesso più granulare. È anche possibile aggiungere condizioni ad azioni specifiche. Ad esempio, è possibile concedere a Nicola l’accesso in lettura ai BLOB nella sottoscrizione solo se i BLOB vengono contrassegnati come Project=ICTPower.
  • Aiutare a ridurre il numero di assegnazioni di ruolo : ogni sottoscrizione di Azure ha attualmente un limite di assegnazione di ruolo. Esistono scenari che richiedono migliaia di assegnazioni di ruolo. Tutte queste assegnazioni di ruolo devono essere gestite. In questi scenari è possibile aggiungere potenzialmente condizioni per usare un numero significativo di assegnazioni di ruolo.
  • Usare attributi che hanno un significato aziendale specifico : le condizioni consentono di usare attributi che hanno un significato aziendale specifico per l’utente nel controllo di accesso. Alcuni esempi di attributi sono nome progetto, fase di sviluppo software e livelli di classificazione. I valori di questi attributi di risorsa sono dinamici e cambiano quando gli utenti si spostano tra team e progetti.

I Security Custom Attribute possono essere utilizzati, insieme al Role Based Access Control, per filtrare meglio gli accessi alle risorse.

Nell’esempio che vi propongo ho intenzione di assegnare alcuni privilegi di utilizzo di un Azure Storage Account ad un gruppo di utenti e successivamente limitare di quel gruppo solo alcuni utenti con particolari attributi.

Dopo aver selezionato lo Storage Account dal portale di Azure, ho cliccato sul nodo Access Control (IAM) e ho dato il ruolo di Storage Blob Data Contributor al gruppo ICTPower Crew, all’interno del quale si trova anche l’utente Nicola Ferrini, a cui abbiamo assegnato prima i custom security attribute.

Figura 16: Modifica degli accessi allo Storage Account utilizzando Access Control (IAM)

Figura 17: Assegnazione del ruolo di Storage Blob Data Contributor

Figura 18: Selezione del gruppo ICTPower Crew

Figura 19: Ruolo di Storage Blob Data Contributor assegnato al gruppo di Azure AD chiamato ICTpower Crew

Come si può vedere dalla figura sopra, accanto al ruolo di Storage Blob Data Contributor è disponibile la voce Add, che permette di rifinire i privilegi e di poter definire delle condizioni in base ai Custom Security Attribute.

Figura 20: Selezione delle azioni da consentire

Create a questo punto un’espressione che, se è vera, permetterà l’accesso e le azioni definite sopra solo a chi soddisfa le condizioni previste.

Io ho deciso di permettere alcune azioni sui dati solo agli utenti del gruppo che hanno il Custom Security attribute scelto. In questo modo, di tutti gli utenti abilitati al ruolo (ICTPower Crew) solo l’utente Nicola Ferrini potrà effettuare le azioni indicate.

Figura 21: Creazione di un’espressione che, se è vera, permetterà l’accesso e le azioni definite sopra solo a chi soddisfa le condizioni previste.

Figura 22: Salvataggio delle condizioni impostate

Dal portale di Azure sarà poi possibile in qualsiasi momento visualizzare e modificare le condizioni applicate al ruolo.

Figura 23: In qualsiasi momento è possibile visualizzare e modificare le condizioni applicate al ruolo

Conclusioni

Grazie ad Azure attribute-based access control (ABAC), che si basa sul Role Base Access Control (RBAC) di Azure è possibile utilizzare le condizioni di assegnazione dei ruoli in base agli attributi nel contesto di azioni specifiche. Di fatto questo permette di fornire un controllo di accesso con granularità più fine, Aiutare a ridurre il numero di assegnazioni di ruolo e usare attributi che hanno un significato aziendale specifico per l’utente nel controllo di accesso.

Per approfondimenti vi rimando alla lettura della pagina What is Azure attribute-based access control (Azure ABAC)? (preview) | Microsoft Learn