Archivi categoria: Azure Governance

Azure Governance: come organizzare le risorse utilizzando gli Azure Management Groups

In presenza di ambienti con un numero elevato di subscription Azure è necessario avere un livello di astrazione differente per poter gestire in modo efficace gli accessi, le policy e la compliance. A questo scopo sono stati introdotti gli Azure Management Groups, che consentono di organizzare differenti subscriptions in contenitori logici, sui quali definire, porre in essere e verificare le politiche di governo necessarie. In questo articolo vengono esaminati nel dettaglio i relativi concetti e vengono riportate delle indicazioni per organizzare al meglio le risorse Azure al fine di facilitare il processo di governance.

Per organizzare in modo efficace le risorse Azure è fondamentale definire una gerarchia di management groups e di subscriptions sulla quale è possibile applicare le Azure Policy, il servizio che consente di creare, assegnare e gestire dei criteri di controllo. L’utilizzo dei Management Group è inoltre utile per gestire in modo efficace l’assegnazione dei permessi tramite role-based access control (RBAC), a fini di delega amministrativa.

Figura 1 – Esempio di gerarchia di Management Groups

Ogni risorsa Azure è contenuta all’interno di una specifica Azure Subscription, la quale è associata ad un solo tenant Azure Active Directory, ed eredita i permessi impostati a tale livello.

Al momento, un vincolo da tenere in considerazione, è che un Management Group può contenere più subscriptions purché le stesse facciano parte dello stesso tenant Azure Active Directory.  Detto in altri termini, i Management Groups risiedono all’interno di un tenant e non possono contenere subscriptions di tenant diversi. I security principal utilizzabili sui management group possono provenire solo dal tenant di riferimento per il management group.

Figura 2 –  Relazione tra Azure AD e la struttura organizzativa

Le risorse Azure appartenenti a una subscription sono contenute a loro volta in Resource Groups. I resource groups sono contenitori di risorse che, a fini amministrativi, consentono di ottenere i seguenti vantaggi:

  • Facilitano la delega amministrativa in quanto le risorse contenute ereditano i permessi a livello di resource group.
  • Sui resorce group si possono assegnare dei tag, anche se questi non vengono in automatico ereditati dalle risorse, ma è opportuno prevedere dei meccanismi specifici se lo si ritiene necessario.

Figura 3 – Relazione tra i livelli della struttura organizzativa

Le Azure Policy possono essere assegnate a livello di Subscription oppure di Management Group e possono essere definite eccezioni per Resource Group. A questo proposito si consiglia quando possibile, di organizzare le policy in “initiative” e assegnarle a livello di Management Group.

Il Management Group root è al livello top e contiene tutti Management Groups configurati e le varie subscriptions Azure. Il root Management Group non può essere rimosso o spostato. La struttura può essere creata con al massimo sei livelli di profondità, senza considerare il Root level e il livello della subscription. Ogni Management Group può avere più figli, ma è supportato un solo parent per ogni Management Group e per ogni subscription.

In assenza di specifici requisiti, Microsoft consiglia di dividere gli ambienti di produzione da quelli di “DevTest”, creando due livelli di management groups. Al management group root di default saranno associate le policy fondamentali, come ad esempio quelle relative alla security. Sui restanti Management Groups saranno invece associate policy specifiche. La gerarchia dei Management Groups permette di avere un modello per il quale le policy che vengono definite a livelli più alti della gerarchia non possono essere sovrascritte dai livelli inferiori.

Figura 4 – Management Group & Subscription Modeling Strategy

Questo approccio consente di gestire ambienti Azure complessi, che vedono la presenza di più subscription. in modo più semplice e flessibile, per le seguenti ragioni:

  • Il concetto di ereditarietà consente con un’unica associazione di applicare i controlli voluti e l’assegnazione dei ruoli su differenti subscriptions.
  • Si ha una gestione centralizzata.
  • Si possono includere ulteriori subscription nella gerarchia, con la consapevolezza che dovranno aderire alle politiche stabilite e che avranno l’assegnazione dei ruoli desiderata.

Conclusioni

I processi di goverance attraverso i quali è possibile garantire a un’organizzazione un utilizzo efficace ed efficiente delle risorse IT, al fine di poter raggiungere i propri obiettivi, non possono esimersi dall’adozione di un modello che consenta di organizzare in modo efficace le risorse Azure. L’utilizzo dei Management Groups, in ambienti con un numero considerevole di subscriptions, diventa quindi fondamentale per far fronte all’esigenza comune di standardizzare, e in alcuni casi imporre, come vengono configurate le differenti risorse nel cloud.

Come individuare e ottimizzare i costi del cloud con Azure Cost Management

Una delle principali caratteristiche del cloud è la possibilità di creare nuove risorse con estrema facilità e rapidità. Allo stesso tempo una sfida importante e fondamentale è riuscire a mantenere sempre sotto controllo le spese da sostenere per le risorse create in ambiente cloud. Lo strumento Azure Cost Management consente di individuare facilmente da quali servizi vengono generati i costi, prevenire spese non necessarie e ottimizzare i costi delle risorse. In questo articolo vengono riportate le caratteristiche della soluzione e vengono fornite le indicazioni per poterla utilizzare al meglio al fine di massimizzare e ottimizzare gli investimenti nelle risorse cloud.

Caratteristiche della soluzione

Azure Cost Management è attivo di default e accessibile dal portale Azure per tutte le subscription Microsoft Enterprise Agreement e Pay-As-You-Go. La disponibilità della soluzione per le subscription CSP (Cloud Solution Providers) è prevista per la seconda metà dell’anno. Azure Cost Management contempla i servizi Azure, comprese le reservations, e i costi dati dall’utilizzo di soluzioni di terze parti provenienti dal Marketplace Azure. Tutti i costi riportati sono basati sui prezzi negoziati e i dati vengono aggiornati con una frequenza di quattro ore.

Azure Cost Management consente di effettuare le seguenti operazioni riguardanti le spese delle risorse cloud.

Monitor delle spese del cloud

Grazie a questa soluzione è possibile fornire, ai vari dipartimenti aziendali coinvolti nell’utilizzo delle risorse cloud, visibilità dei costi delle risorse per le quali sono responsabili. Inoltre, si ha la possibilità di entrare nel dettaglio e visualizzare i trend delle spese con una experience interattiva e molto intuitiva. Dalla sezione Cost analysis è possibile visualizzare i costi, con la possibilità di mettere dei filtri sul periodo temporale ed eventualmente raggrupparli secondo differenti parametri.

Figura 1 – Cost analysis – costi accumulati nell’ultimo mese

Impostando per il periodo selezionato la granularità giornaliera è possibile avere un grafico che riporta con precisione i costi sostenuti giorno per giorno.

Figura 2 – Cost analysis – costi sostenuti giornalmente

Azure Cost Management offre anche la possibilità di esportare i dati in formato Excel oppure in CSV, dopo aver impostato la vista necessaria nella sezione Cost analysis.

Figura 3 – Export dei dati della vista creata in Cost analysis

Il file scaricato riporta i dettagli relativi al contesto utilizzato per la generazione del file:

Figura 4 – Summary del foglio Excel generato

Questa funzionalità può essere utile per effettuare analisi di dettaglio che richiedono un consolidamento di queste informazioni con altri dati.

Nel caso ci sia la necessità di maggiori funzionalità in termini di integrazione e personalizzazione è possibile utilizzare Power BI connectors per la creazione di dashboard specifiche e le APIs di Azure Cost Management per elaborare le informazioni con altre soluzioni.

Assegnazione di responsabilità verso i vari team di progetto

Per sensibilizzare i vari team di progetto ad un adeguato utilizzo delle risorse in termini di spesa, si possono definire dei budget. In questo modo si può ottenere una sensibile ottimizzazione dei costi, senza impattare in termini di agilità nella creazione delle risorse .

Figura 5 – Creazione di un budget

In fase di creazione di un budget si definisce la spesa per un determinato periodo temporale e si possono definire degli alert per avvisare i diretti responsabili quando viene raggiunta una determinata percentuale della soglia prestabilita.

Ottimizzazione delle spese

Nonostante si possa optare per far gestire ai vari team i costi delle risorse Azure assegnando loro un budget, non sempre può essere scontato sapere come ottimizzare l’efficienza delle risorse e ridurre i costi. Azure Cost Management è in grado di fornire delle raccomandazioni specifiche per ottenere dei risparmi.

Figura 6 – Advisor recommendations

Nel caso specifico, per ottimizzare i costi delle risorse Azure, viene consigliato l’acquisto di Virtual Machine Reserved Instances (VM RIs), stimando l’effettivo risparmio annuale che si potrebbe ottenere adottando VM RIs.

Azure Cost Management presto sarà arricchito con una nuova funzionalità (attualmente in public preview) che prevede la gestione delle spese sostenute in AWS, con le stesse caratteristiche mostrate per Azure. Questa integrazione consente di semplificare la gestione dei costi in scenari multi-cloud.

Costo della soluzione

Azure Cost Management è possibile utilizzarlo gratuitamente, in tutte le sue funzionalità, per l’ambiente Azure. Per quanto riguarda la gestione dei costi di AWS è previsto, al rilascio definitivo, un addebito pari all’1% della spesa totale gestita per AWS. Per maggiori dettagli in merito al costo della soluzione è possibile consultare la pagina del pricing di Cost Management.

Conclusioni

Azure Cost Management è un ottimo strumento che consente di mantenere una visibilità totale dei costi e pilotare al meglio le spese delle risorse presenti nel cloud. Grazie alla flessibilità di questo strumento, in costante evoluzione, è possibile ottenere il massimo dai propri investimenti nel cloud in modo semplice e intuitivo.

Azure Governance: introduzione alle Azure Policy

L’IT governance è quel processo attraverso il quale è possibile garantire a un’organizzazione un utilizzo efficace ed efficiente delle risorse IT, al fine di poter raggiungere i propri obiettivi. Azure Policy è un servizio disponibile nel cloud pubblico di Microsoft che è possibile utilizzare per creare, assegnare e gestire dei criteri per controllare le risorse presenti in Azure. Le Azure Policy, integrate nativamente nella piattaforma, sono un elemento chiave per la governance dell’ambiente cloud. In questo articolo vengono riportati i principi di funzionamento e le caratteristiche della soluzione.

Negli ambienti Azure si possono trovare differenti subscription sulle quali sviluppano e operano diversi gruppi di operatori. L’esigenza comune è di standardizzare, e in alcuni casi imporre, come vengono configurate le risorse nel cloud. Tutto questo viene fatto per ottenere ambienti che rispettano specifiche normative di conformità, controllare la sicurezza, i costi delle risorse e uniformare il design di differenti architetture. Questi obiettivi si possono ottenere con un approccio tradizionale, che prevede un blocco degli operatori (Dev/Ops) nell’accesso diretto alle risorse cloud (tramite portale, api oppure cli). Questo approccio tradizionale risulta però poco flessibile, in quanto implica una perdita di agilità nel controllare il deployment delle risorse. Utilizzando invece il meccanismo che viene fornito in modo nativo dalla piattaforma Azure è possibile pilotare la governance per ottenere il controllo desiderato, senza impattare sulla velocità, elemento fondamentale nelle operations dell’IT moderno.

Figura 1 – Approccio tradizionale vs cloud-native governance

In ambito Azure Policy è possibile fare quanto in seguito riportato:

  • Attivare policy built-in o configurarle in base alle proprie esigenze.
  • Effettuare in tempo reale la valutazione dei criteri presenti nelle policy e forzarne l’esecuzione.
  • Valutare la compliance delle policy periodicamente oppure su richiesta.
  • Attivare dei criteri di controllo anche sull’ambiente guest delle macchine virtuali (VM In-Guest Policy).
  • Applicare Policy a dei Management Group al fine di ottenere un controllo sull’intera organizzazione.
  • Applicare contemporaneamente più criteri e aggregare i vari stati delle policy.
  • Configurare scope sui quali vengono applicate delle esclusioni.
  • Attivare operazioni per la remediation in tempo reale, anche per risorse già esistenti.

Tutto questo si traduce nella possibilità di applicare e forzare su larga scala dei criteri di compliance e le relative azioni di remediation.

Il meccanismo di funzionamento delle Azure Policy è semplice e integrato nella piattaforma.  Nel momento in cui viene fatta una richiesta di configurazione di una risorsa Azure tramite ARM, questa viene intercettata dal layer contenente il motore che effettua la valutazione delle policy. Tale engine effettua una valutazione sulla base delle policy Azure attive e stabilisce la legittimità della richiesta.

Figura 2 – Principio di funzionamento delle Azure Policy nella creazione di risorse

Lo stesso meccanismo viene poi ripetuto periodicamente oppure su specifica richiesta per valutare lo strato di compliance delle risorse esistenti.

Figura 3 – Principio di funzionamento delle Azure Policy nel controllo delle risorse

In Azure sono già presenti molte policy built-in pronte per essere applicate. Inoltre, in questo repository GitHub è possibile trovare diverse definizioni di Azure Policy, che possono essere utilizzate direttamente oppure modificate in base alle proprie esigenze. La definizione delle Azure Policy è fatta in JSON e segue una struttura ben precisa, descritta in questo documento Microsoft. Si ha inoltre la possibilità di creare delle Initiatives, che sono un insieme di più policy.

Figura 4 – Esempio di definizione di una Azure Policy

Nel momento in cui si possiede la definizione della policy desiderata, è possibile assegnarla a una subscription ed eventualmente in modo più circoscritto ad un Resource Group specifico. Si ha inoltre la possibilità di escludere determinate risorse dall’applicazione della policy.

Figura 5 – Processo di assegnazione di una Azure Policy

In seguito all’assegnazione è possibile valutare lo stato di compliance nel dettaglio e se lo si ritiene necessario applicare delle azioni di remediation.

Figura 6 – Stato di compliance

Figura 7 – Esempio di azione di remediation

 

Conclusioni

Grazie all’utilizzo delle Azure Policy si ha la possibilità di controllare totalmente il proprio ambiente Azure, in modo semplice ed efficace. Statistiche fornite da Microsoft citano che considerando i 100 top Azure Customers, 92 di questi utilizzano le Azure Policy per controllare il proprio ambiente. Questo perché aumentando la complessità e la quantità di servizi su Azure è indispensabile adottare degli strumenti, come Azure Policy, per avere delle politiche efficaci di governance.