Azure Policy: gestire e proteggere le risorse nel cloud di Azure

Le Azure Policy sono strumenti cruciali nell’ambito di Microsoft Azure perché aiutano a implementare e mantenere gli standard di conformità e a garantire l’aderenza alle policy aziendali all’interno dell’ambiente cloud. Queste policy sono essenzialmente delle regole o dei criteri che possono essere definiti per governare le risorse nell’ambiente Azure.

Utilizzando le Azure Policy gli amministratori possono controllare e gestire vari aspetti come la configurazione e l’uso delle risorse, l’ottimizzazione dei costi, la sicurezza e la conformità alle normative. Per esempio possono imporre regole che limitano la creazione di risorse solo in determinate regioni geografiche di Azure per rispettare le leggi sulla sovranità dei dati (avete già letto il mio articolo Microsoft Cloud for Sovereignty: il servizio per innovare il settore pubblico e non solo – ICT Power?) o possono assicurarsi che tutte le risorse siano etichettate correttamente per una migliore gestione e reportistica.

La creazione e l’assegnazione di policy in Azure avviene tramite il portale Azure, Azure PowerShell o Azure CLI. Un amministratore può creare una policy personalizzata o utilizzare i template forniti da Azure. Dopo la creazione, le policy possono essere assegnate a sottoscrizioni, gruppi di risorse o singole risorse.

Un aspetto cruciale delle Azure Policy è la loro capacità di valutare lo stato delle risorse esistenti e segnalare eventuali non conformità rispetto alle policy stabilite. Ciò aiuta gli amministratori a identificare e risolvere rapidamente le violazioni delle policy. Inoltre, le Azure Policy possono essere configurate per eseguire automaticamente determinate azioni quando vengono rilevate risorse non conformi, come la correzione automatica o l’invio di notifiche.

Le Azure Policy sono fondamentali per mantenere un ambiente cloud sicuro, conforme e ottimizzato. Forniscono una visibilità dettagliata e un controllo su come le risorse vengono utilizzate in Azure, consentendo agli amministratori di imporre regole e standard che allineano l’uso del cloud con gli obiettivi aziendali e le normative vigenti.

Azure Policy e Role-Based Access Control (RBAC)

Le Azure Policy e il Role-Based Access Control (RBAC) in Microsoft Azure rappresentano due aspetti fondamentali della gestione e della sicurezza nell’ambiente cloud, ma con finalità e funzionalità distinte. Azure Policy si concentra sulla conformità delle risorse e sulla loro gestione configurativa. Questo strumento permette agli amministratori di stabilire regole o criteri che governano come le risorse in Azure devono essere configurate e gestite. Queste policy possono imporre, ad esempio, limitazioni sulla tipologia di risorse che possono essere create, su dove possono essere allocate (ad esempio, in specifiche regioni geografiche per rispettare leggi sulla sovranità dei dati), o su come devono essere configurate per essere conformi alle policy aziendali e alle normative vigenti. Un aspetto importante delle Azure Policy è la capacità di valutare continuamente le risorse esistenti e segnalare eventuali non conformità, fornendo così una panoramica dettagliata sullo stato di conformità delle risorse nell’ambiente Azure.

Dall’altro lato, RBAC è un meccanismo di sicurezza che gestisce chi ha l’accesso alle risorse in Azure e cosa possono fare con queste risorse. RBAC consente agli amministratori di assegnare permessi specifici a utenti, gruppi e identità di servizio. Questi permessi sono raggruppati in “ruoli”, e ogni ruolo definisce un insieme di azioni che l’utente può eseguire, come la possibilità di visualizzare, creare, modificare o eliminare risorse. RBAC è uno strumento essenziale per garantire il principio del “minimo privilegio”, assicurando che gli utenti abbiano solo il livello di accesso necessario per svolgere i loro compiti, riducendo così il rischio di accessi non autorizzati o dannosi all’interno dell’ambiente cloud.

Volendo riassumere i concetti esposti, mentre le Azure Policy sono orientate a garantire che le risorse in Azure siano configurate e gestite in conformità con le regole aziendali e le normative, il RBAC è focalizzato sulla sicurezza e sul controllo degli accessi, determinando chi può fare cosa all’interno dell’ambiente Azure. Questa distinzione è cruciale per comprendere come entrambi gli strumenti, lavorando in sinergia, contribuiscano a creare un ambiente cloud sicuro, conforme e ottimizzato. La loro complementarità è fondamentale per una gestione efficace delle risorse e degli accessi in Azure, consentendo agli amministratori di avere un controllo completo e flessibile sull’ambiente cloud.

Creazione di una Azure Policy

Per creare una nuova Azure Policy collegatevi al portale di Microsoft Azure e cercate Policy nella barra di ricerca. Nella scheda Overview di Azure Policy troverete una panoramica completa e dettagliata dello stato delle vostre policy in Azure. Questa scheda è progettata per fornire una visione immediata del grado di conformità delle risorse di Azure alle policy stabilite. Troverete informazioni come la percentuale e il numero di risorse conformi e non conformi, che vi offrono un’idea chiara di quanto le risorse all’interno del vostro ambiente Azure stiano aderendo alle policy impostate.

Inoltre, la scheda Overview può includere una rappresentazione visiva, come grafici o tabelle, che mostrano la distribuzione delle conformità e non conformità. Questo vi aiuta a identificare rapidamente aree che richiedono attenzione o miglioramento. Potresti anche trovare riepiloghi delle policy più recentemente modificate o aggiunte e dettagli sulle azioni intraprese a seguito delle valutazioni delle policy.

In Azure Policy ci sono diverse policy predefinite fornite da Microsoft. Queste policy predefinite sono progettate per coprire una vasta gamma di scenari comuni di governance, conformità e gestione delle risorse in Azure. L’obiettivo è fornire agli utenti un punto di partenza per implementare rapidamente best practice di gestione delle risorse e conformità normativa senza la necessità di creare policy personalizzate da zero.

Le policy predefinite possono includere regole per:

  • Garantire la conformità con standard e normative specifiche, come il General Data Protection Regulation (GDPR) o altre normative sulla protezione dei dati.
  • Imporre l’uso di determinate configurazioni di sicurezza, come la forzatura di specifici tipi di crittografia o la configurazione di reti virtuali.
  • Controllare le dimensioni, i tipi e le regioni delle risorse per ottimizzare i costi e l’efficienza operativa.
  • Monitorare e applicare standard aziendali per la denominazione, il tagging e la classificazione delle risorse.

Le policy predefinite di Azure sono utili perché possono essere rapidamente assegnate alle sottoscrizioni o ai gruppi di risorse. Questo permette agli amministratori di Azure di applicare controlli e governance su larga scala senza dover passare attraverso il processo di scrittura e test di nuove policy da zero. Tuttavia, è anche possibile personalizzare o creare policy specifiche per esigenze particolari che non sono coperte dalle policy predefinite. Questo fornisce flessibilità e controllo per gestire l’ambiente cloud in modo che si allinei con le specifiche necessità aziendali e i requisiti normativi.

Figura 1: Scheda Overview di Azure Policy

Nella scheda Compliance di Azure Policy troverete una panoramica dettagliata della conformità delle vostre risorse Azure rispetto alle policy implementate. Questa scheda è essenziale per comprendere come le risorse in Azure si allineano con le policy stabilite e per identificare le aree che necessitano di attenzione o correzione. Viene fornita una valutazione complessiva della conformità, che include una visione globale di come le risorse si adattano alle varie policy e iniziative assegnate a livello di sottoscrizione o gruppo di risorse.

Questa sezione fornisce informazioni cruciali per gli amministratori, consentendo loro di identificare rapidamente le risorse che violano le policy e che richiedono interventi. Inoltre, potreste vedere un riepilogo delle policy e delle iniziative con una ripartizione delle conformità, fornendo così una visione chiara di quali aree stiano rispettando le aspettative e quali necessitano di maggiore supervisione.

Figura 2: Scheda Compliance di Azure Policy

Azure Policy Definitions

Le policy definitions di Azure Policy sono regole o criteri che definiscono specifici requisiti di configurazione o conformità per le risorse di Azure. Queste definizioni sono fondamentali per la governance dell’ambiente cloud in Azure, permettendo agli amministratori di specificare come le risorse devono essere configurate e gestite per aderire a standard aziendali, normative e best practice di sicurezza.

Una policy definition descrive le condizioni sotto cui è applicata e l’effetto desiderato se tali condizioni sono riscontrate. Ad esempio, può specificare che tutte le macchine virtuali devono avere determinate impostazioni di sicurezza o che certi tipi di risorse debbano essere distribuiti solo in specifiche regioni geografiche. Azure valuta le risorse rispetto alle policy definitions assegnate, prendendo azioni appropriate come definito nella policy.

Le policy definitions possono essere di diversi tipi, come audit, che registra violazioni ma non impedisce azioni, e deny, che blocca attivamente la creazione o modifica di risorse non conformi. Inoltre, esistono opzioni per la creazione automatica di risorse mancanti o la correzione di configurazioni non conformi, aumentando la gestione e l’automazione. Possono essere create personalizzando i modelli forniti da Azure o scrivendo definizioni completamente nuove. Questo permette un alto grado di personalizzazione e flessibilità, consentendo agli amministratori di costruire un ambiente cloud che rispetti le linee guida aziendali e i requisiti normativi, ottimizzato per le specifiche esigenze operative e di business.

Le definizioni delle policy in Azure Policy devono essere scritte in un formato specifico conosciuto come JSON (JavaScript Object Notation). JSON è un formato leggero per lo scambio di dati, ampiamente utilizzato per rappresentare strutture di dati. Utilizzando JSON, le definizioni delle policy in Azure Policy possono descrivere in modo chiaro e strutturato le regole, le condizioni e gli effetti desiderati per la gestione delle risorse Azure.

Una definizione di policy in JSON include solitamente diverse sezioni chiave:

  • “properties”: Include informazioni sulla policy, come il suo nome visualizzato (displayName), una descrizione (description) e la regola effettiva della policy (policyRule).
  • “policyRule”: Questa è la parte centrale della definizione della policy, dove si specificano le condizioni (“if”) e l’azione da intraprendere (“then”) se le condizioni sono soddisfatte. Ad esempio, si potrebbe specificare un’azione di “deny” se una risorsa non è conforme.

Qui di seguito c’è un esempio di policy definition

Questo formato consente di definire policy complesse e dettagliate in modo chiaro e strutturato, facilitando la creazione, la comprensione e la gestione delle policy in un ambiente Azure. È importante notare che la scrittura delle definizioni delle policy in JSON richiede una comprensione del formato JSON e delle specifiche di Azure Policy. Maggiori informazioni sono disponibili alla pagina Dettagli della struttura delle definizioni dei criteri – Azure Policy | Microsoft Learn

Effetti di una Azure Policy Definition

Gli effetti di una Azure Policy Definition determinano quale azione viene intrapresa quando una risorsa viene valutata rispetto alla policy e definiscono il comportamento della policy; inoltre sono cruciali per il controllo di come le risorse in Azure vengono gestite e monitorate. Gli effetti che potete assegnare a una policy definition sono:

  • Deny: Impedisce la creazione o la modifica di risorse che non sono conformi alla policy. Se una risorsa non rispetta i criteri definiti nella policy, l’azione che tenta di creare o modificare la risorsa verrà bloccata.
  • Audit: Invece di bloccare le azioni, l’effetto Audit registra un evento nel registro di Azure quando viene rilevata una non conformità. Questo è utile per monitorare e raccogliere informazioni sulle risorse che non sono conformi senza impedire le loro operazioni.
  • Append: Aggiunge ulteriori campi o configurazioni alle risorse durante la creazione o la modifica. È utilizzato per garantire che le risorse abbiano specifiche impostazioni o tag richiesti.
  • DeployIfNotExists: Viene utilizzato per distribuire automaticamente una risorsa o una configurazione se non esiste già. È utile per garantire che determinate configurazioni di base siano presenti in tutte le risorse pertinenti.
  • Disabled: Quando un effetto è impostato su Disabled, la policy è disattivata. Questo può essere utile per testare una policy o tenerla in standby senza rimuoverla completamente.
  • Modify: Utilizzato per modificare le risorse esistenti per portarle in conformità con la policy. Questo effetto può aggiornare determinate proprietà di una risorsa esistente.

Questi effetti offrono un controllo granulare sulla gestione delle risorse di Azure, consentendovi di imporre policy che vanno dalla semplice registrazione di eventi alla prevenzione attiva della creazione di risorse non conformi. La scelta dell’effetto appropriato dipenderà dagli obiettivi specifici della tua policy e dalle esigenze di gestione e conformità della vostra azienda.

Creazione di una Policy Definition

Per creare una nuova Policy Definition cliccate su Definitions nel zona Authoring e fate clic su + Policy Definition.

Figura 3: Azure Policy Definitions

Nella scheda Basics del wizard di creazione di una nuova Azure Policy vi verrà chiesto di fornire dettagli di base come il Nome della policy, una Descrizione che spiega lo scopo della policy e la Category per aiutarvi a organizzare e successivamente trovare le vostre policy. Nel wizard è presente un editor integrato che vi permetterà di inserire la definizione della policy in formato JSON.

Io ho deciso di creare una nuova Azure Policy definition che non permette che vengano create macchine virtuali di una certa dimensione (Standard E). Qui di seguito è mostrato il codice JSON che ho inserito nell’editor grafico:

Figura 4: Scheda Basics del wizard di creazione di una nuova Azure Policy Definition

Per la creazione delle Azure policy è anche possibile fare riferimento alle sample policy definitions from GitHub che trovate alla pagina GitHub – Azure/azure-policy: Repository for Azure Resource Policy built-in definitions and samples e che vi possono aiutare a creare le definizioni per le policy. Questi esempi rappresentano un’ampia gamma di scenari comuni e best practices per la gestione e la governance delle risorse in Azure. Utilizzando questi esempi potete avere un eccellente punto di partenza per cominciare a lavorare con le Azure Policy o state cercando di implementare uno scenario di governance specifico. Offrono anche un’opportunità significativa di apprendimento su come sono strutturate le policy di Azure.

Questi esempi fungono anche da template personalizzabili, permettendo agli utenti di adattarli alle esigenze specifiche della loro organizzazione. Coprono una varietà di scenari, dalla sicurezza alla conformità normativa, dall’ottimizzazione dei costi alla governance delle risorse. E in più sono gratuiti

Figura 5: Sample policy definitions from GitHub

Assegnazione della Azure Policy definition

Una volta creata la Azure Policy Definition (oppure utilizzando una definition già esistente) sarà possibile assegnarla. L’assegnazione è il mezzo attraverso cui una policy definition specifica viene applicata a una determinata area del vostro ambiente Azure, come una sottoscrizione, un gruppo di risorse, o una singola risorsa. Quando assegnate una policy, state dicendo ad Azure di applicare le regole definite in quella policy alle risorse nell’ambito scelto.

Figura 6: Assegnazione della Azure Policy Definition

Nella scheda Basics del wizard di assegnazione della Azure Policy definition scegliete, come già scritto più volte, di applicare la policy a tutta la sottoscrizione Azure oppure a gruppi di risorse specifici all’interno della sottoscrizione. È anche possibile escludere alcune risorse. Io ho deciso di assegnare la policy all’intera sottoscrizione.

Figura 7: Scheda Basics del wizard di assegnazione della Azure Policy definition

Nella scheda Advanced del wizard di assegnazione della Azure Policy definition troverete opzioni avanzate che offrono un maggiore controllo su come la policy verrà applicata e gestita. In particolar modo io ho utilizzato il Resource Selector (preview) per filtrare la location dove si troveranno le risorse da controllare tramite policy e ho inserito la region Italy North. Trovo la funzionalità del resource selector davvero comoda per assegnare le policy in maniera molto più granulare.

Figura 8: Scheda Advanced del wizard di assegnazione della Azure Policy definition

Eventualmente potete anche aggiungere degli override, che permettono di cambiare l’effetto della policy senza modificarne le definition.

Figura 9: Scheda Advanced del wizard di assegnazione della Azure Policy definition

Proseguite nel wizard e modificate gli altri parametri secondo le vostre esigenze. Fate clic su Create nella scheda Review + create per completare l’assegnazione della Azure Policy Definition.

Figura 10: Completamento del wizard di assegnazione della Azure Policy definition

L’assegnazione della Azure Policy è praticamente immediata, ma potrebbero volerci alcuni minuti (5-15 minuti) per vederne gli effetti, come anche evidenziato dal messaggio di notifica.

Figura 11: Assegnazione della Azure Policy definition completata

Dopo qualche secondo, l’assegnazione sarà visibile nel portale di Azure, come mostrato nella figura sotto:

Figura 12:L”assegnazione è visibile nel portale di Azure

Test di funzionamento

D’ora in poi, ogni volta che verrà creata una VM nella sottoscrizione e decideremo di crearla nella regione Italy North, la macchina virtuale non potrà essere creata con nessuna delle dimensioni disponibili per la famiglia E Standard. Provo quindi a creare una nuova VM inserendo i parametri mostrati nella figura sotto:

Figura 13: Creazione di una nuova VM della famiglia E nella region Italy North

Nel momento in cui viene effettuato il Review prima della creazione della Azure VM, la Azure Policy che abbiamo assegnato ci impedirà di creare la VM con le configurazioni che abbiamo proibito, come mostrato in figura:

Figura 14: La creazione della VM è impedita dalla Azure Policy

Cosa succede se vengono ingaggiate due Azure Policy?

Quando due o più Azure Policy si trovano in situazioni in cui i loro criteri si intersecano o si influenzano a vicenda, possono verificarsi vari scenari, a seconda della specifica natura e configurazione delle policy. Ecco alcuni dei possibili risultati:

  • Conflitto: Se due policy avessero effetti che si contraddicono, potrebbe verificarsi un conflitto. Ad esempio, una policy potrebbe richiedere che tutte le risorse vengano create in una specifica regione, mentre un’altra potrebbe negare la creazione di risorse in quella regione. In questo caso, le azioni sugli oggetti target potrebbero essere bloccate a causa del conflitto.
  • Cumulativo o sovrapposizione: In alcuni casi, gli effetti di diverse policy possono essere cumulativi. Ad esempio, una policy potrebbe richiedere che tutte le macchine virtuali abbiano un determinato tag, mentre un’altra potrebbe imporre requisiti di sicurezza. Se una macchina virtuale viene creata o modificata, entrambe le policy saranno valutate e applicate se necessario.
  • Priorità e ordine di valutazione: Azure Policy non ha un concetto esplicito di priorità. Tutte le policy assegnate vengono valutate. Se non c’è un conflitto diretto, tutte le policy applicabili verranno considerate. Tuttavia, l’ordine in cui vengono applicati gli effetti non è garantito, a meno che non ci sia una dipendenza logica tra le policy.
  • Policy di Auditing: Se entrambe le policy sono di tipo audit, entrambe registreranno la non conformità indipendentemente l’una dall’altra. Ciò può essere utile per tenere traccia di diverse normative o requisiti di conformità.
  • Policy disabilitate: Se una delle policy è disabilitata, essa non avrà alcun effetto, lasciando che l’altra policy operi come previsto.

È importante quindi pianificare e testare attentamente le policy in scenari complessi per assicurarsi che interagiscano come desiderato. Inoltre, la revisione periodica delle policy assegnate e dei loro effetti può aiutare a identificare potenziali conflitti o sovrapposizioni e ad assicurare che l’ambiente Azure rimanga gestito in modo efficace e conforme alle politiche aziendali e alle normative.

In questo secondo esempio creerò una nuova Azure Policy definition che obbliga ad utilizzare il prefisso LAB per il nome delle macchine virtuali. È molto comune, infatti, che si voglia rispettare una naming convention per le risorse per poterle individuare più facilmente. Nel mio esempio mi sono limitato solo al nome della VM e non al nome delle altre risorse che la costituiscono (ad esempio la scheda di rete, il disco, l’eventuale IP pubblico, ecc.).

Figura 15: Creazione di una nuova Azure Policy definition

Procedo quindi con l’assegnazione della Azure Policy definition ad un particolare gruppo di risorse che si trova nella mia sottoscrizione.

Figura 16: Assegnazione della Azure Policy definition

Si noti che questa volta non ho assegnazione la Azure Policy definition all’intera sottoscrizione, ma ho limitato l’assegnazione ad un solo Resource Group.

Figura 17: La Azure Policy definition è assegnata ad un Resource group

Procedete nel wizard e modificate i parametri come richiesto. Fate clic su Create nella schermata finale per completare l’assegnazione della Azure Policy definition.

Figura 18: Completamento del wizard di assegnazione della Azure Policy definition

Dopo qualche secondo, l’assegnazione sarà visibile nel portale di Microsoft Azure.

Figura 19: L’assegnazione della policy è visibile nel portale di Microsoft Azure

Test di funzionamento

Vediamo ora cosa succede se tento di creare una VM della famiglia E nel Resource group a cui è stata assegnata la seconda policy e non utilizzo la convenzione dei nomi imposta.

Figura 20: Creazione di una nuova VM con parametri che coinvolgono diverse policy

Come ho scritto prima, gli effetti di diverse policy possono essere cumulativi. Il wizard i creazione della nuova VM, infatti, fallisce e gli errori riportano i conflitti con entrambe le policy che abbiamo creato. La prima impedisce che vengano create macchine della famiglia E (ed è stata applicata a tutta la sottoscrizione), mentre la seconda chiede di rispettare una naming convention per il nome della VM (che abbiamo applicato ad un singolo resource group). Nella figura sotto si vede chiaramente quali policy sono state ingaggiate.

Figura 21: Gli errori riportano i conflitti con entrambe le policy

Remediation nelle Azure Policy

La remediation nelle Azure Policy è un processo attraverso il quale le risorse non conformi possono essere automaticamente corrette per allinearle alle policy assegnate. Quando una policy viene valutata e una risorsa non è conforme, la remediation si attiva per modificare o aggiornare quella risorsa in modo che soddisfi i criteri stabiliti dalla policy. Questo processo è particolarmente utile per mantenere la conformità e l’integrità delle configurazioni in un ambiente dinamico.

Può essere utilizzata per aggiornare configurazioni perché, se le impostazioni di configurazione di una risorsa non sono conformi ai requisiti di una policy, la remediation può modificare queste impostazioni per portarle in linea con i criteri della policy. Oppure può essere utilizzata per creare risorse mancanti perché, se una policy richiede che una specifica risorsa o configurazione sia presente (come una particolare regola di sicurezza o una configurazione di rete) e questa manca, la remediation può attivare la creazione di quella risorsa o configurazione.

La remediation nelle Azure Policy, oltre che essere configurata per essere eseguita automaticamente, può essere attivata manualmente da un amministratore. Questo fornisce agli amministratori di Azure la flessibilità di scegliere come e quando le risorse dovrebbero essere corrette, consentendo loro di mantenere il controllo sul processo di gestione e di garantire che le modifiche siano appropriate e sicure per l’ambiente che stanno gestendo.

Ho deciso di utilizzare una Azure Policy esistente che si chiama Add a tag to resources e di applicarla alle risorse già esistenti. Al momento dell’assegnazione deciderò di attivare la remediation automatica. Questa modalità è davvero interessante perché grazie alle Azure Policy sono in grado di validare anche la conformità di risorse già esistenti (quindi non solo al momento della lora creazione) e di applicare le modifiche necessarie per la compliance aziendale.

Figura 22: Scelta della Azure Policy Definition

Come si può vedere dalla figura sotto, questa Azure Policy definition ha come effetto Modify.
L’azione Modify consente di modificare automaticamente le risorse esistenti per portarle in conformità con i requisiti specificati nella policy. È un’opzione potente che può essere utilizzata per assicurare che le risorse in Azure aderiscano a specifiche best practices, linee guida aziendali o normative senza dover intervenire manualmente per apportare le modifiche necessarie.

Figura 23: Assegnazione della Azure Policy Definition

Ho assegnato la Azure Policy Definition ad un particolare gruppo di risorse della mia sottoscrizione e ho cambiato il nome all’assegnazione, in modo tale da renderlo più riconoscibile.

Figura 24: Scheda Basics del wizard di assegnazione della Azure Policy definition

Nella scheda Parameters ho configurato i TAG come richiesto. Quando questa policy verrà assegnata modificherà i TAG esistenti con quelli indicati, oppure se i TAG non ci sono verranno aggiunti.

Figura 25: Scheda Parameters del wizard di assegnazione della Azure Policy definition

Nella scheda Remediation ho specificato di voler creare un remediation task. La creazione di un remediation task nel wizard di assegnazione della Azure Policy è un processo che vi permette di definire e configurare compiti di remediation per correggere automaticamente le risorse non conformi in Azure. Questo passaggio è fondamentale per garantire che le vostre risorse rispettino i criteri definiti nelle policy.

Se la policy include un’azione di remediation come DeployIfNotExists o Modify il portale offre automaticamente l’opzione per configurare un task di remediation.

Ho anche deciso di creare una system assigned managed identity, che sarà utilizzata per fornire all’assegnazione della policy le credenziali necessarie per eseguire azioni sulle risorse di Azure. Quando create o assegnate una policy che richiede azioni di remediation, come l’aggiunta di tag o la modifica delle configurazioni di una risorsa, la policy deve avere i permessi necessari per eseguire queste azioni.

In alternativa potete anche assegnare una User assigned managed identity che avrete creato in precedenza. Vi rimando alla lettura della mia guida Come utilizzare le managed identity per gestire l’accesso alle risorse Azure – ICT Power per approfondire i concetti relativi alle managed identity.

Figura 26: Scheda Remediation del wizard di assegnazione della Azure Policy definition

Proseguite nel wizard e fate cli c su Create nella schermata finale per completare l’assegnazione della Azure Policy definition.

Figura 27: Completamento del wizard di assegnazione della Azure Policy definition

Nel giro di qualche secondo l’assegnazione creata sarà visibile nel portale di Azure.

Figura 28: L’assegnazione creata è visibile nel portale di Azure

Anche la Remediation sarà visibile nel portale di Azure.

Figura 29: Remediation creata e visibile nel portale di Azure

Nella scheda Remediations Tasks vedrete anche il task che è stato creato. Inizialmente è in modalità Evaluating e poi nel giro di qualche minuto verrà eseguito e saranno apportate le modifiche previste dalla Azure Policy. Nel mio caso verranno aggiunti i TAG mancanti ad una serie di risorse che sono state precedentemente create.

Figura 30: IL Remediation task è in modalità Evaluating

Cliccando sulla scheda Policy to remediate potremo lanciare il task per effettuare la Remediaton
manualmente se fosse necessario. In realtà basterà aspettare qualche minuto per l’esecuzione automatica, perché grazie all’utilizzo della Managed Identity ci sono tutti i diritti per l’0esecuzione automatica della remediation.

Figura 31: Risorse che sono interessate dalla Remediation e che è possibile rimediare manualmente

La system assigned managed identity associata alla Azure Policy che è stata creata ha automaticamente ricevuto i privilegi di Contributor solo per il gruppo di risorse a cui la Azure Policy è stata assegnata, come veniva mostrato nel wizard. A onor del vero, il nome visualizzato dell’identità non coincide con il nome dell’assegnazione della policy (policy assignment) e potrebbe rendere molto meno identificabili le managed identity.

Figura 32: Privilegi assegnati alla System assigned managed identity utilizzata per i remediation task della Azure policy

Test di funzionamento

Dal portale è sempre possibile vedere lo stato delle policy, utilizzando il nodo Compliance. Come si può vedere dalla figura sotto, la valutazione della conformità della Azure Policy assegnata non è ancora stata avviata. Basterà attendere qualche minuto (5-15 minuti).

Figura 33: Compliance delle Azure Policy

Cliccando sulla assegnazione della Azure Policy di proprio interesse sarà possibile recuperare maggiori informazioni. Come si può vedere dalla figura sotto, ci sono diverse risorse che non sono compliant.

Figura 34: Informazioni relative alla compliance della Azure Policy

Effettivamente la VM e le altre risorse contenute nel resource group a cui abbiamo assegnato al Azure Policy non hanno TAG assegnati, come si può vedere dalla figura sotto.

Figura 35: La VM non ha TAG assegnati

Nel giro di qualche minuto la policy verrà applicata e alle risorse interessate dalla policy verrà assegnato il TAG che abbiamo impostato.

Figura 36: Il remediation task ha assegnato il TAG alla VM

Dal portale di Azure sarà sempre possibile verificare lo stato dei Remediation Task, che come si può vedere dalla figura sotto, adesso riporta lo stato Complete.

Figura 37: Il Remediation Task è stato applicato con successo

Cliccando sul remediation task si potranno ottenere maggiori dettagli.

Figura 38: Il Remediation Task è stato applicato con successo e tutte le risorse risultano aggiornate

Gestione delle Initiative Definition

Le Initiative Definitions in Azure Policy sono una raccolta di policy definitions che vengono raggruppate per ottenere un obiettivo di conformità. Quando lavorate con Azure Policy, le singole policy definitions permettono di implementare specifici controlli o regole di gestione delle risorse. Tuttavia, in molti casi, è necessario applicare un insieme di policy per affrontare un obiettivo di governance o di conformità più ampio. Qui entrano in gioco le initiative definitions, che consentono di raggruppare più policy definitions correlate in un’unica entità gestionale.

Per esempio, se un’organizzazione vuole garantire la conformità con uno standard di sicurezza specifico come il GDPR o il NIST, potrebbe essere necessario implementare diverse policy individuali che controllano aspetti diversi delle risorse di Azure, come la crittografia dei dati, la configurazione delle reti e la gestione degli accessi. Invece di assegnare ciascuna di queste policy individualmente, si possono raggruppare tutte le policy rilevanti in una initiative definition. Questo non solo semplifica il processo di assegnazione e gestione delle policy, ma aiuta anche a ottenere una visione più chiara dello stato di conformità complessivo rispetto a quel particolare standard.

Quando create o assegnate una initiative definition, potete scegliere da una varietà di policy definitions esistenti che corrispondono ai vostri requisiti. Una volta assegnata, la valutazione della conformità di Azure prenderà in considerazione tutte le policy incluse nella initiative. Sarai quindi in grado di vedere un report di conformità che riflette lo stato di tutte le policy incluse nella initiative, semplificando la comprensione di quali aree sono conformi e quali richiedono attenzione.

Per creare una nuova Initiative definition selezionate il nodo Definitions e fate clic su + Initiative definition.

Figura 39: Creazione di una nuova Initiative definition

Nella scheda Basics inserite i parametri richiesti, selezionando la location, il nome e la descrizione dell’iniziativa, esattamente come avete fatto per le policy definition.

Figura 40: Scheda Basics del wizard di creazione di una nuova Initiative definition

Nella scheda Policies del wizard scegliete le policy definitons che volete aggiungere all’iniziativa, scegliendole tra quelle Built-In e quelle Custom create da voi.

Figura 41: Scheda Policies del wizard di creazione di una nuova Initiative definition

Figura 42: Scheda Policies del wizard di creazione di una nuova Initiative definition

I Groups rappresentano una modalità organizzativa per raggruppare insieme diverse policy definitions all’interno della stessa initiative. Questa funzionalità è particolarmente utile quando un’iniziativa comprende un gran numero di policy definitions e si desidera organizzarle in modo logico per semplificare la gestione e la comprensione.

In pratica, creare gruppi all’interno di una initiative vi permette di categorizzare e strutturare le policy in base a vari criteri, come il tipo di risorsa a cui si applicano, l’obiettivo specifico della policy (ad esempio, sicurezza, conformità, costo), o qualsiasi altro raggruppamento logico che abbia senso per la vostra azienda. Questo aiuta a mantenere la initiative chiara e gestibile, specialmente quando si tratta di iniziative complesse con molte policy.

Per esempio, in un’iniziativa incentrata sulla conformità agli standard di sicurezza, potreste avere un gruppo di policy dedicate alla crittografia, un altro gruppo per le policy che gestiscono l’accesso e la sicurezza delle identità e un ulteriore gruppo per le policy relative alla configurazione della rete. Ciascun gruppo conterrà le policy definitions pertinenti a quella specifica area di focus.

La creazione di gruppi all’interno delle initiative definitions aiuta anche durante la fase di revisione e di reporting della conformità. Potete visualizzare facilmente lo stato di conformità per ciascun gruppo di policy, rendendo più semplice identificare aree specifiche che richiedono attenzione o miglioramento.

Figura 43: Scheda Groups del wizard di creazione di una nuova Initiative definition

Gli Initiative Parameters sono variabili utilizzate per passare valori specifici alle policy definitions incluse nell’iniziativa. Questi parametri offrono flessibilità e riutilizzabilità, permettendovi di personalizzare come le policy individuali all’interno della initiative vengono applicate senza dover modificare direttamente le definizioni di ciascuna policy.

I parametri nelle initiative funzionano in modo simile ai parametri nelle singole policy definitions, ma con un ambito più ampio. Quando create una initiative, potete definire un set di parametri che possono essere poi utilizzati da una o più policy incluse nell’iniziativa. Questo approccio centralizzato alla gestione dei parametri rende più semplice e meno soggetto a errori il processo di assegnazione e configurazione delle policy.

Per esempio, supponiamo che abbiate un’iniziativa che include diverse policy relative alla sicurezza delle risorse di Azure, e molte di queste policy richiedono di specificare un particolare tag di sicurezza o un livello di crittografia. Invece di inserire questi valori in ogni singola policy, potete definire i parametri rilevanti a livello di iniziativa e poi passarli alle policy appropriate. Questo significa che, se in futuro doveste cambiare il valore del tag di sicurezza o del livello di crittografia, potreste farlo aggiornando il parametro nell’iniziativa, anziché in ogni singola policy.

Inoltre, l’utilizzo di parametri nelle initiative consente di creare iniziative più generiche e riutilizzabili. Ad esempio, potete creare un’iniziativa per la conformità dei dati che può essere personalizzata per diversi tipi di dati o requisiti normativi semplicemente passando parametri diversi durante l’assegnazione dell’iniziativa a diverse sottoscrizioni o gruppi di risorse.

Figura 44: Scheda Initiative parameters del wizard di creazione di una nuova Initiative definition

I Policy Parameters sono elementi fondamentali che permettono di personalizzare e rendere più flessibili le policy definitions all’interno dell’iniziativa. I parametri delle policy servono a definire valori configurabili che possono essere modificati al momento dell’assegnazione della policy o dell’iniziativa, senza dover cambiare la definizione stessa della policy.

I parametri rendono le policy più versatili e riutilizzabili, poiché permettono agli amministratori di specificare valori chiave come parte del processo di assegnazione, piuttosto che hardcoding questi valori nella policy. Questo approccio fornisce un notevole grado di adattabilità, in quanto lo stesso set di policy può essere utilizzato in modi diversi a seconda delle esigenze specifiche dell’ambiente Azure in cui viene applicato.

Per esempio, una policy che richiede la presenza di determinati tag su tutte le risorse potrebbe avere un parametro per il valore del tag. Invece di scrivere policy separate per ogni valore di tag diverso, potete scrivere una singola policy con un parametro configurabile. Quando assegnate questa policy, potete specificare il valore appropriato per quel parametro, adattando così la policy a diversi scenari o requisiti.

Figura 45: Scheda Policy parameters del wizard di creazione di una nuova Initiative definition

Terminate il wizard di creazione della Initiative definition facendo clic su Create nella scheda Review + Create.

Figura 46: Schermata finale del wizard di creazione di una nuova Initiative definition

La creazione della Initiative definition dura pochi secondi. Come si può vedere dalla figura sotto, la Initiative definition contiene un mix di policy definition tra quelle built-in e quelle custom. A questo punto potete assegnare la Initiative definition facendo clic sul pulsante Assign initiative.

Figura 47: Assegnazione della Initiaitve definition

Il wizard di assegnazione delle initiative definiton è simile a quello della Policy definition. Nelle schermate successive ho scelto di utilizzare gli stessi parametri e le stesse configurazioni che ho già mostrato nei precedenti esempi di questa guida. Quindi non mi ripeterò nelle spiegazione di ogni singola schermata

Figura 48: Assegnazione dell’Initiative definition ad un gruppo di risorse della sottoscrizione

Figura 49: Utilizzo del resource selector per filtrare solo le risorse che si trovano in una specifica region di Azure

Figura 50: Una delle policy contiene l’effetto Modify. Viene creata una Managed identity per poter gestire i task di remediation previsti dalla policy

Figura 51: È possibile definire un messaggio di non compliance per ogni singola policy

Figura 52: Schermata finale del wizard di assegnazione della Initiative Definition

Come è successo per le Policy, anche le Initiative sono disponibili nel nodo Assignments per la valutazione.

Figura 53: L’assegnazione dell’Initiative è disponibile nel nodo Assignments

Fate cli sul nome dell’initiativa per vederne le caratteristiche e successivamente fate clic su View Compliance per valutare la Initiative compliance, come mostrato nella figura sotto. La conformità dell’iniziativa mostra in che misura le risorse nell’ambito dell’iniziativa (come una sottoscrizione, un gruppo di risorse o una risorsa specifica) rispettano i criteri definiti in tutte le policy incluse nell’iniziativa.

Figura 54: Initiative Compliance

Nel giro di qualche minuto le diverse Azure Policy verranno valutate ed eventualmente rimediate. Al termine dell’operazione il Compliance state mostrerà lo stato Compliant.

Figura 55: Tutte le risorse sono Compliant

Conclusioni

L’adozione delle Azure Policy rappresenta un passo fondamentale verso una gestione più sicura, conforme e efficiente dell’ambiente cloud in Azure. L’utilizzo delle Azure Policy consente agli amministratori di imporre standard rigorosi e linee guida specifiche, garantendo che le risorse di Azure siano configurate e utilizzate in modo da rispettare le best practices aziendali, le normative di settore e i requisiti legali.

La flessibilità offerta dalle Azure Policy, in termini di personalizzazione e automazione, è un vantaggio significativo. Gli amministratori possono creare policy personalizzate che si adattano perfettamente alle esigenze specifiche della loro azienda o possono sfruttare le policy predefinite per un rapido deployment. Questo grado di personalizzazione assicura che ogni aspetto dell’ambiente Azure possa essere ottimizzato in base a criteri ben definiti.

Inoltre, la capacità di automatizzare il processo di conformità e di remediation attraverso le Azure Policy riduce il carico amministrativo e il rischio di errore umano. Le risorse non conformi possono essere identificate e corrette automaticamente, garantendo un ambiente coerente e allineato alle policy stabilite. Questo aspetto è particolarmente prezioso in un panorama IT in rapida evoluzione, dove la capacità di rispondere rapidamente ai cambiamenti può avere un impatto significativo sulla sicurezza e sulla performance.