Azure Blueprints: come gestire risorse, governance e compliance nel cloud

Azure Blueprints consente agli architetti cloud e al reparto IT di definire un set ripetibile di risorse di Azure che devono essere implementate e devono essere conformi a standard, criteri e requisiti di un’organizzazione. Azure Blueprints consente anche ai team di sviluppo di creare e realizzare rapidamente nuovi ambienti sapendo che vengono creati in conformità con le normative e con i requisiti aziendali.

I blueprints (progetti) costituiscono un metodo dichiarativo per orchestrare la distribuzione di vari modelli di risorse e altri artefatti, ad esempio:

  • Assegnazioni di ruoli
  • Assegnazioni di criteri
  • Modelli di Gestione risorse di Azure
  • Gruppi di risorse

Che differenze ci sono con gli Azure Resource Manager templates?

Abbiamo già parlato nell’articolo Azure Resource Manager templates – Deployment con un clic! di come i templates ci permettano di creare tutte le risorse necessarie alla creazione di una soluzione, anche complessa, semplicemente utilizzando un clic e di quanto sia facile esportare i modelli di risorse che abbiamo già creato in Azure, in modo tale da poterli riutilizzare e ricreare le stesse soluzioni.

Azure Blueprints permette di riutilizzare gruppi di risorse, policy, assegnazioni di ruolo e distribuzioni di ARM templates. Un progetto è un pacchetto che riunisce ognuno di questi tipi di artefatti e consente di comporre e indicare la versione di tale pacchetto, in modo tale da poter essere riutilizzato. In più è possibile avere un migliore monitoraggio e controllo delle distribuzioni perché viene mantenuta una relazione tra la definizione di progetto (cosa distribuire) e l’assegnazione di progetto (cosa è stato distribuito).

L’inclusione delle policy in un progetto, di cui abbiamo già discuso nell’articolo Come gestire le risorse Azure utilizzando le Azure Policy , consente non solo di creare il criterio o la progettazione corretta durante l’assegnazione del progetto, ma assicura anche che nell’ambiente vengano eseguite solo le modifiche approvate o previste, in modo da garantire la conformità con la finalità del progetto.

Le Azure Policy possono essere incluse nella definizione di un progetto come i vari artefatti. Questo assicura la governance cloud verificando che le risorse all’interno di una sottoscrizione siano conformi a standard e requisiti.

Creazione di un Azure Blueprint

Per creare un Azure BluePrint vi basterà collegarvi al portale di Azure e cercare la voce Blueprints.

Figura 1: Azure Blueprints nel portale web

Selezionate Crea nella pagina Attività iniziali per passare direttamente alla creazione di un progetto. In questo esempio partirò da un progetto vuoto, ma in alternativa è possibile utilizzare dei progetti già realizzati, che rispettano diversi requisiti di compliance e di governance.

Figura 2: Progetti a disposizione nel portale di Azure

Indicate il nome del progetto e in Definition Location specificate il Management Group e la sottoscrizione da utilizzare nel progetto. I campi Nome progetto e Definition Location
non potranno essere modificati successivamente

Management Groups sono la soluzione tramite la quale è possibile applicare in maniera trasversale Policies e ruoli a diverse sottoscrizioni di Azure, contemporaneamente ed in maniera consistente, senza doverle riscrivere più volte. Per approfondimenti sui Management Group vi invito a leggere l’articolo Gestire le sottoscrizioni Azure con gli Azure Management Groups

Figura 3. Nome del progetto e scelta dei Management Group da utilizzare

Cliccando su Avanti vi verrà chiesto di aggiungere gli Artefatti (Artifacts), che possono essere Gruppi di risorse, Modelli ARM di Azure, Policy e Assegnazioni di ruoli.

Figura 4: Aggiunta degli artefatti al progetto di Azure

In questo esempio aggiungerò due artefatti: un Resource Group ed un Template ARM. È possibile inserire dei parametri e dei vincoli per la creazione delle risorse. Nel mio caso voglio che le risorse vengano necessariamente create in West Europe, per essere sicuro della presenza dei dati in una regione di Azure all’interno della Comunità europea. Questo è molto importante per la Data Sovereignty e per il GDPR.

Figura 5: Aggiunta di un Resource Group al progetto

Ho aggiunto al progetto un artefatto di tipo ARM Template che distribuirà un’applicazione web ed in particolare un sito di e-commerce. Il template può essere importato dalla macchina locale oppure direttamente incollato nella console del portale di Azure.

Figura 6: Aggiunta dell’artefatto ARM Template

Nella figura sotto sono mostrato i due artefatti aggiunti al progetto.

Figura 7: Artifacts aggiunti ad Azure Blueprints

Cliccando su Save Draft potrete salvare tutti i parametri inseriti nel progetto. In Blueprint Definitions sarà possibile visualizzare tutti i progetti che avete creato.

Figura 8: Progetti disponibili in Azure Blueprints

Ora che tutti gli elementi previsti sono stati aggiunti al progetto, è possibile pubblicarlo. La pubblicazione rende disponibile il progetto per l’assegnazione a una sottoscrizione. Cliccate su Publish blueprint e indicate la versione ((lettere, numeri e trattini con una lunghezza massima di 20 caratteri).

Figura 9: Pubblicazione del progetto di Azure Blueprints

Figura 10: Definizione della versione del progetto di Azure Blueprints

Una volta pubblicato, un progetto può essere assegnato a una sottoscrizione. Assegnate il progetto creato a una delle sottoscrizioni nella gerarchia dei Management Group. Se il progetto viene salvato in una sottoscrizione, può essere assegnato solo a quella sottoscrizione.

Nel campo Nome dell’assegnazione specificate un nome univoco per l’assegnazione e in Location selezionate un’area per la creazione dell’identità gestita e dell’oggetto di distribuzione della sottoscrizione. Azure Blueprint usa questa identità gestita per distribuire tutti gli elementi nel progetto assegnato. Inserite a questo punto i parametri richiesti dagli artifacts presenti nel progetto.

Come si può vedere dalla figura sotto, io ho inserito il nome del resource group da creare ed il nome della web app. La location invece non è modificabile, come richiesto dal progetto.

Figura 11: Assegnazione del progetto di Azure Blueprints

Quando un progetto è stato assegnato a una o più sottoscrizioni, vengono eseguite due operazioni:

  • Il progetto viene aggiunto alla pagina Progetti assegnati per ogni sottoscrizione.
  • Viene avviato il processo di distribuzione di tutti gli elementi definiti in base al progetto.

Potete monitorare lo stato di avanzamento della distribuzione del progetto e della creazione delle risorse previste dal progetto e al termine vi verrà visualizzato un messaggio che indicherà che l’assegnazione è riuscita. Le risorse sono state create. Nel caso doveste ricevere delgi eoorir, provvedete alla modifica dei parametri che avete inserito nel progetto.

Figura 12: Stato di avanzamento dell’assegnazione del progetto e creazione delle risorse previste

Come si può vedere dall’immagine sotto, è stata creata una nuova web app creata nella sottoscrizione di Azure che ho scelto.

Figura 13: Web App creata dall’Azure Blueprint

Come molte risorse all’interno di Azure, un progetto di Azure Blueprints ha un ciclo di vita tipico. I progetti possono essere creati, distribuiti e infine eliminati quando non sono più necessari. In genere le fasi di un progetto sono:

  • Creazione e modifica di un progetto
  • Pubblicazione del progetto
  • Creazione e modifica di una nuova versione del progetto
  • Pubblicazione di una nuova versione del progetto
  • Eliminazione di una versione specifica del progetto
  • Eliminazione del progetto

Per maggiori dettagli vi rimando alla lettura della guida Comprendere il ciclo di vita di un progetto di Azure

Utilizzo di un progetto già realizzato: l’esempio particolare del Blueprint PCI-DSS 3.2

La compliance allo standard PCI-DSS è un requisito per tutti gli operatori che archiviano, elaborano o trasmettono dati di carte di credito. Sviluppato dalle principali società emittenti di carte di credito, lo standard PCI-DSS (Payment Card Industry Data Security Standard) stabilisce le misure atte a garantire la protezione dei dati e processi di sicurezza coerenti per tutte le transazioni finanziarie online. Le aziende che non mantengono la compliance PCI DSS sono soggette a multe e pene severe.

L’ottenimento e il mantenimento della compliance allo standard PCI-DSS possono essere dispendiosi sia in termini di tempo sia di denaro. In Azure Blueprints è già presente un progetto che fa riferimento ai controlli PCI-DSS v3.2.1:2018 e molti controlli mappati vengono implementati con un’iniziativa di Azure Policy. Alla pagina Mapping dei controlli dell’esempio di progetto PCI-DSS v3.2.1 trovate l’elenco completo dei controlli effettuati.

Poiché ho deciso di distribuire un sito di e-commerce, mi sembrava naturale proteggere i dati dei clienti e di rendere il sito compliant con lo standard di protezione PCI-DSS.

Figura 14: Azure Blueprint per l’implementazione dei criteri di controllo previsti dal PCI-DSS 3.2.1

La distribuzione del progetto viene fatto esattamente come abbiamo già visto. Nelle figure sotto sono evidenziati tutti i passaggi necessari.

Figura 15: Inserimento del nome del progetto e relativa Definition Location

Figura 16: Artefatti inseriti nel progetto. Si noti che si tratta di Azure Policy

Figura 17: Assegnazione del progetto dopo la relativa pubblicazione

Figura 18: Configurazione dei parametri richiesti dal progetto

Dopo pochi secondi, avverrà il deployment delle risorse, delle policy e delle assegnazioni dei ruoli previsti dal progetto.

Figura 19: Deployment del template completato

Come si può vedere dalla schermata sotto, sono state create diverse policy e nel giro di qualche minuto in Azure ne verrà valutata la compliance.

Figura 20: Policy create dal progetto di Azure Blueprints

Conclusioni

Grazie ad Azure Blueprints è possiible creare risorse in maniera ripetitiva ma soprattutto facendo in modo che siano compliant con gli standard richiesti dalle normative. L’inclusione di policy in un progetto consente non solo di creare il criterio o la progettazione corretta durante l’assegnazione del progetto, ma assicura anche che nell’ambiente vengano eseguite solo le modifiche approvate o previste, in modo da garantire la conformità continua con la finalità del progetto. In questo modo la governance delle informazioni è gestita in modo rapido, soprattutto quando si creano nuovi ambienti.