Archivi categoria: Azure Governance

Azure Governance: panoramica di Azure Blueprints

L’IT governance permette di realizzare un processo attraverso il quale è possibile garantire alle realtà aziendali un utilizzo efficiente delle proprie risorse IT, con l’obiettivo di poter raggiungere in modo efficace i propri obiettivi. La Governance dell’ambiente Azure è resa possibile da una serie di servizi appositamente progettati per consentire una gestione ed un costante controllo delle varie risorse Azure su vasta scala. Tra questi strumenti troviamo Azure Blueprints che permette di effettuare il design e la creazione di nuovi componenti in Azure, nel rispetto totale delle specifiche e degli standard aziendali. In questo articolo viene riportata una panoramica della soluzione per fornire gli elementi necessari per il relativo utilizzo.

Azure Blueprints consente ai Cloud Architect e ai Cloud Engineer, responsabili di realizzare architetture in Azure, di definire ed implementare in modo ripetibile un insieme di risorse Azure, con la certezza di aderire agli standard, ai modelli e ai requisiti definiti aziendalmente. Azure Blueprints permette inoltre di effettuare il rilascio di nuovi ambienti in modo rapido, adottando componenti integrati e accelerando i tempi di sviluppo e di consegna degli stessi.

I principali punti di forza della soluzione Azure Blueprints posso essere così sintetizzati.

Semplifica la creazione degli ambienti Azure

  • Centralizza la creazione di nuovi ambienti Azure tramite template.
  • Consente di aggiungere risorse, policy e ruoli.
  • Permette di tenere traccia degli aggiornamenti dei progetti tramite il controllo delle versioni.

Azure Blueprints tramite un modello dichiarativo permette di orchestrare la distribuzione di vari templates di risorse e di altri artifacts Azure. Il servizio Azure Blueprints è basato e supportato da Azure Cosmos DB. Gli oggetti blueprint vengono replicati in più region di Azure, ottenendo così una bassa latenza, un’elevata disponibilità e accesso coerente agli stessi, indipendentemente dalla region in cui vengono distribuite le risorse.

Permette di rispettare la compliance

  • Consente agli sviluppatori di creare ambienti completamente governati attraverso metodologie self-service.
  • Fornisce la possibilità di creare in modo centralizzato più ambienti e subscription Azure.
  • Permette di sfruttare l’integrazione con le Azure Policy e con il ciclo di vita di DevOps.

Consente di controllare i lock sulle risorse

  • Assicura che le risorse di base non possano essere modificate.
  • Gestisce i lock in modo centralizzato.
  • Permette di aggiornare le risorse bloccate tramite delle variazioni alla definizione del modello blueprint.

Come utilizzare Azure BluePrints

Si riportano le fasi da seguire per adottare la soluzione Azure Blueprints.

Figura 1 – Come funziona Azure Blueprint

Il primo step prevedere la creazione di un blueprint che può essere fatta tramite portale Azure, PowerShell oppure REST API.

Figura 2 – Schermata iniziale di Bluprints dal portale Azure

Avviando il processo di creazione dal portale Azure c’è la possibilità di partire da un blueprint vuoto oppure di utilizzare alcuni esempi disponibili.

Figura 3 – Creazione del blueprint dal portale Azure

Il blueprint è composto da differenti artifacts come: Role Assignments, Policy Assignments, Azure Resource Manager templates e Resource Group. Terminata la creazione è necessario pubblicare il blueprint (al termine della creazione sarà nello stato di draft) specificando il versioning. Azure Blueprints risulta uno strumento molto utile per le aziende che utilizzano il modello di infrastructure as code in quanto contempla i processi di continuous integration e continuous deployment.

Solo dopo aver pubblicato il blueprint è possibile assegnarlo a una o più subscription Azure, specificando la tipologia di lock secondo i seguenti stati:

  • Don’t Lock: significa che le risorse create da Blueprints non saranno protette.
  • Do Not Delete: significa che le risorse possono essere modificate, ma non rimosse.
  • Read Only: l’assegnazione risulta in locked e le derivanti risorse non potranno essere modificate o rimosse, nemmeno dagli owner della subscription. In questo caso è bene specificare che non tutte le risorse Azure supportano il lock e che l’assegnazione del blocco può richiedere fino a 30 minuti per essere effettivo.

Figura 4 – Assegnazione del blueprint

Durante l’assegnazione del Blueprint verranno inoltre richiesti i parametri previsti per effettuare il deployment delle risorse.

Figura 5 – Esempio di richiesta dei parametri del blueprint

Un aspetto interessante della soluzione Azure Blueprints è dato dal fatto che i blueprint creati mantengono una relazione con le risorse assegnate e possono essere monitorati e controllati, cosa non possibile utilizzando i semplici template ARM e le policy.

Conclusioni

Azure Blueprints è un servizio che offre a coloro che si occupano di realizzare architetture in Azure la capacità di definire un set di risorse in modo facilmente ripetibile, conforme agli standard aziendali e ai requisiti dell’organizzazione. Adottando dei blueprint è possibile creare e distribuire rapidamente nuovi ambienti, contemplando una serie di componenti integrati. Questo permette non solo di distribuire ambienti consistenti, ma di farlo in modo agile, consentendo alle organizzazioni di accelerare lo sviluppo e la consegna delle soluzioni in Azure.

Azure Arc: un nuovo approccio agli ambienti ibridi

L’impiego di architetture ibride nelle realtà aziendali è sempre più preponderante, in quanto consentono di continuare a trarre vantaggio dagli investimenti fatti nel proprio ambiente on-premises e, allo stesso tempo, utilizzare l’innovazione introdotta dal cloud. L’adozione di soluzioni ibride risulta vincente se tiene conto anche di una politica condivisa per la distribuzione, la gestione e la messa sicurezza dei componenti. Senza coerenza nella gestione dei differenti ambienti, i costi e la complessità rischiano di crescere in modo esponenziale. Microsoft ha deciso di rispondere a questa esigenza con la soluzione Azure Arc, che coinvolge una serie di tecnologie con l’obiettivo di sviluppare nuovi scenari ibridi, dove i servizi e i principi di gestione di Azure vengono estesi a qualsiasi infrastruttura. In questo articolo viene presentato l’approccio adottato da Azure Arc per gli ambienti ibridi.

La complessità degli ambienti IT è in continua espansione al punto da riscontrare realtà con applicazioni basate su diverse tecnologie, attive su infrastrutture eterogenee e magari che adottano soluzioni in differenti cloud pubblici. L’esigenza molto sentita dai clienti è di poter adottare una soluzione che in modo centralizzato consenta di inventariare, organizzare e applicare delle policy di controllo sulle proprie risorse IT ovunque si trovino.

Il principio che sta alla base di Azure Arc è quello di estendere le pratiche di gestione e di governance di Azure anche ad ambienti differenti e di adottare soluzioni tipicamente cloud, come tecniche DevOps (infrastructure as code), anche per gli ambienti on-premises.

Figura 1 – Panoramica di Azure Arc

Per ottenere questo risultato Microsoft ha deciso di estensione il modello Azure Resource Manager per poter supportare anche ambienti ibridi, facilitando in questo modo l’implementazione delle funzionalità di security presenti in Azure su tutti i componenti dell’infrastruttura.

Figura 2 – Azure Management per tutte le risorse

Azure Arc consiste in un insieme di differenti tecnologie e di componenti che permette di:

  • Gestire le applicazioni in ambienti Kubernetes: viene fornita la possibilità di effettuare il deploy e la configurazione delle applicazioni Kubernetes in modo omogeneo su tutti gli ambienti, adottando le moderne tecniche DevOps.
  • Consentire l’esecuzione degli Azure data services su qualsiasi infrastruttura: il tutto si basa sull’adozione di Kubernetes e permette di rispettare più facilmente i criteri di compliance, di migliorare la sicurezza dei dati e di avere una notevole flessibilità in fase di deploy. Al momento i servizi contemplati sono Azure SQL Database e Azure Database for PostgreSQL.
  • Organizzare, gestire e governare tutti i sistemi server: Azure Arc estende infatti le possibilità offerte in ambito governance e management da Azure anche alle macchine fisiche e ai sistemi virtuali presenti in ambienti differenti. Tale soluzione è chiamata nello specifico Azure Arc for servers.

Figura 3 – Tecnologie di Azure Arc

Azure Arc prevede l’utilizzo di Resource Provider specifici per Azure Resource Manager ed è necessaria l’installazione degli agenti di Azure Arc.

Accedendo al portale si può notare come Azure Arc for Servers sia già attualmente disponibile in preview pubblica, mentre è necessario effettuare una registrazione per gestire in preview gli ambienti Kubernetes e i data services.

Figura 4 – Azure Arc nel portale Azure

Grazie all’adozione di Azure Arc che introduce una visione complessiva, è possibile raggiungere, per le proprie architetture ibride, i seguenti obiettivi, difficilmente perseguibili diversamente:

  • Standardizzazione delle operazioni
  • Organizzazione delle risorse
  • Sicurezza
  • Controllo dei costi
  • Business Continuity
  • Rispetto delle normative e della compliance aziendale

Figura 5 – Cloud-native governance con Azure Arc

Conclusioni

Azure Arc è stato recentemente annunciato e nonostante si trovi ancora in una fase embrionale, ritengo che possa evolvere notevolmente al punto da rivoluzionare la gestione e lo sviluppo degli ambienti ibridi. Per mantenersi aggiornati su come si svilupperà questa soluzione è possibile registrarsi a questa pagina.

Come controllare l’esecuzione delle applicazioni tramite Azure Security Center

Azure Security Center mette a disposizione diversi meccanismi per prevenire le minacce di sicurezza e per ridurre le superfici di attacco del proprio ambiente. Uno di questi meccanismi è l’Adaptive Application Controls, una soluzione in grado di controllare quali applicazioni vengono eseguite sui sistemi. Azure Security Center utilizza il motore di machine learning per analizzare le applicazioni in esecuzione sulle macchine virtuali e sfrutta l’intelligenza artificiale per mettere a disposizione una lista di applicazioni consentite. In questo articolo vengono riportati i benefici che si possono ottenere adottando questa soluzione e come effettuare la configurazione.

Adottando questa soluzione, disponibile utilizzando il tier Standard di Azure Security Center, è possibile effettuare le seguenti operazioni:

  • Essere avvisati a fronte di tentativi di esecuzione di applicazioni malevole, che potenzialmente potrebbero non essere individuate da soluzioni antimalware. Per i sistemi Windows presenti su Azure è possibile anche applicare dei blocchi di esecuzione.
  • Rispettare la compliance aziendale, permettendo l’esecuzione solo di software regolarmente licenziato.
  • Evitare l’utilizzo di software non voluto oppure obsoleto all’interno della propria infrastruttura.
  • Controllare l’accesso ai dati sensibili che avviene utilizzando specifiche applicazioni.

Figura 1 – Azure Security Center Free vs Standard tier

Adaptive application controls può essere utilizzato sui sistemi indipendentemente dalla loro location geografica. Al momento per i sistemi non dislocati in Azure e per le VMs Linux, è supportata solamente la modalità di audit.

Questa funzionalità può essere attivata direttamente dal portale Azure accedendo al Security Center.

Figura 2 – Adaptive application controls nella sezione “Advanced cloud defense” di Security Center

Security Center utilizza un algoritmo proprietario per la creazione automatica di gruppi di macchine con caratteristiche simili, per facilitare l’applicazione delle policy di Application Control.

Dall’interfaccia di gestione i gruppi sono divisi in tre tipologie:

  • Configured: lista i gruppi contenenti VMs dove è configurata questa funzionalità.
  • Recommended: sono presenti i gruppi di sistemi dove è raccomandata l’abilitazione del controllo applicativo. Security Center utilizza meccanismi di machine learning per identificare le VMs sulle quali vengono eseguiti regolarmente sempre gli stessi applicativi, e pertanto risultano delle buone candidate per abilitare il controllo applicativo.
  • Unconfigured: elenco dei gruppi che contengono le VMs per le quali non sono presenti raccomandazioni specifiche riguardanti il controllo applicativo. Per esempio, VMs che eseguono sistematicamente applicative differenti.

Figura 3 – Tipologie di gruppi

Cliccando sui gruppi di macchine virtuali sarà possibile gestire le Application control rules, che permetteranno di creare delle regole in grado di valutare l’esecuzione delle applicazioni.

Figura 4 – Configurazione delle Application control rules

Per ogni singola regola si selezionano le macchine sulle quali applicarla e le applicazioni che si intende consentire. Per ogni applicazione vengono riportate le informazioni di dettaglio, in particolare, nella colonna “Expoitable” viene indicato se si tratta di una applicazione che può potenzialmente essere utilizzata in modo malevolo per bypassare la lista delle applicazioni consentite. Per questa tipologia di applicazioni è opportuno prestare molta attenzione prima di consentirle.

Questa configurazione, per i sistemi Windows, comporta la creazione di specifiche regole di Applocker, tramite le quali viene governata l’esecuzione delle applicazioni.

Di default, Security Center abilita il controllo applicativo in modalità Audit, limitandosi a controllare l’attività nelle macchine virtuali protette senza applicare nessun blocco sull’esecuzione delle applicazioni. Per ogni singolo gruppo, dopo aver verificato che la configurazione effettuata non comporta malfunzionamenti sui workload presenti sui sistemi, è possibile portare il controllo applicativo in modalità Enforce, purché siano macchine virtuali Windows in ambiente Azure, per bloccare l’esecuzione delle applicazioni non espressamente consentite. Sempre dalla stessa interfaccia è possibile cambiare il nome del gruppo dei sistemi.

Figura 5 – Cambio del nome e della modalità di protezione

Al termine di questa configurazione saranno riportate, nel pannello principale di Security Center, le notifiche riguardanti potenziali violazioni nell’esecuzione delle applicazioni rispetto a quanto consentito.

Figura 6 – Notifiche di violazione dell’esecuzione delle applicazioni in Securiy Center

Figura 7 – Lista completa delle violazioni riscontrate

Figura 8 – Esempio di segnalazione

Conclusioni

La funzionalità di Adaptive application controls consente con pochi passaggi di abilitare in modo rapido un controllo approfondito sulle applicazioni che vengono eseguite sui propri sistemi. La configurazione risulta semplice e intuitiva, soprattutto grazie alla funzionalità che permette di raggruppare i sistemi che hanno caratteristiche simili per quanto riguarda l’esecuzione degli applicativi. Si tratta pertanto di un importante meccanismo che consente di prevenire potenziali minacce di sicurezza e di ridurre al minimo le superfici di attacco del proprio ambiente. Sommato alle ulteriori funzionalità, Adaptive application controls contribuisce a rendere Security Center una soluzione completa per la protezione dei propri workload.

Azure Data Share: il servizio per condividere in modo sicuro i dati

Microsoft ha recentemente annunciato la disponibilità del nuovo servizio gestito Azure Data Share, appositamente ideato per la condivisione di dati tra differenti organizzazioni. Azure Data Share consente di condividere e combinare i dati in modo semplice, al fine di garantire una collaborazione aziendale efficace tra differenti realtà, nel rispetto della sicurezza e della governance. In questo articolo vengono approfonditi i principi di funzionamento e viene riportata la procedura da seguire per la relativa configurazione.

Ad oggi le soluzioni più comunemente utilizzate per lo scambio e la condivisione dei dati aziendali si basano su File Transfer Protocol (FTP) oppure su Web API custom, le quali oltre a richiedere di dover gestire un’infrastruttura specifica, non sono in grado di aderire agli standard aziendali in termini di sicurezza e governance. Inoltre, queste soluzioni non risultano idonee per lo scambio di grossi volumi di dati. Azure Data Share è invece un servizio totalmente gestito nato con l’obiettivo di semplificare, rendere sicuro e controllato il processo di condivisione dei dati tra realtà aziendali differenti. Non è richiesta la configurazione di nessuna infrastruttura specifica e il servizio può scalare rapidamente per far fronte ad esigenze di condivisione di grandi quantitativi di dati. Anche l’aspetto sicurezza è fondamentale per un servizio di questo tipo ed Azure Data Share sfrutta le principali misure di sicurezza intrinseche in Azure per la protezione dei dati.

Attivazione del servizio

L’attivazione del servizio Azure Data Share deve essere fatta in primis da chi deve condividere i dati, secondo la seguente modalità.

Figura 1 – Avvio del processo di creazione

Figura 2 – Parametri richiesti dal processo di creazione

Il deployment è molto rapido e dopo aver attivato il servizio è possibile iniziare il processo di condivisione dei dati.

Utilizzo della soluzione

Azure Data Share ha un’interfaccia intuitiva, può essere utilizzato direttamente dal portale Azure, e con pochi semplici passaggi è possibile scegliere quali dati condividere e con chi condividerli.

Figura 3 – Avvio del processo di condivisione

Figura 4 – Definizione nome e dettagli della share

Risulta possibile governare l’uso dei dati associando specifici termini di utilizzo ad ogni condivisione che viene creata. Per consentire la ricezione dei dati, i destinatari dovranno accettare le condizioni di utilizzo specificate.

Figura 5 – Aggiunta Dataset e selezione della tipologia

Per la condivisione dei dati ad oggi è possibile utilizzare come Dataset Azure Blob Storage ed Azure Data Lake Storage, ma a breve saranno introdotti anche nuovi data source di Azure.

Figura 6 – Selezione del container che contiene i dati da condividere

Figura 7 – Aggiunta dell’indirizzo mail della persona con cui condividere i file

Il servizio prevede anche la possibilità di schedulare la condivisione di nuovi contenuti o delle modifiche apportate, mantenendo sempre il controllo completo di qualsiasi condivisione.

Figura 8 – Schedulazione degli snapshots

Figura 9 – Review e creazione della share

Il destinatario riceverà al termine del processo di creazione della condivisione una notifica tramite mail.

Figura 10 – Invito ricevuto tramite mail dalla persona alla quale si vuole inviare dati

Figura 11 – Invito di Data Share dal portale Azure

Colui che riceve i dati condivisi dovrà disporre di un servizio Azure Data Share per poter consultare i dati condivisi.

Figura 12 – Accettazione invito di Data Share

In seguito all’accettazione dell’invito è necessario specificare il target, nel caso specifico lo storage account, sul quale far confluire i dati ricevuti. Tali contenuti si può scegliere se mantenerli sincronizzati secondo lo scheduling specificato dal mittente.

Figura 13 – Configurazione dello storage account target

Figura 14 – Dettaglio di una condivisione ricevuta

Nelle condivisioni ricevute viene inoltre fornita la possibilità di forzare manualmente il trigger di una snapshot (completa oppure incrementale).

Conclusioni

In un mondo in cui la quantità, la tipologia e la varietà dei dati è in costante crescita, è necessario disporre di servizi che consentano alle organizzazioni di collaborare tra di loro condividendo dati di qualsiasi tipologia e dimensione. Grazie al servizio Azure Data Share è possibile condividere dati, tra realtà aziendali differenti, in modo semplice, sicuro e rispettando le politiche di governance. L’aggiunta di nuovi Dataset per la condivisione dei dati, prevista nel breve periodo, renderà questo servizio ancora più completo ed efficace.

Azure Governance: introduzione ad Azure Resource Graph

L’Azure Governance è possibile grazie ad una serie di servizi appositamente progettati per consentire una gestione ed un costante controllo delle varie risorse Azure su vasta scala. Tra questi servizi troviamo Resource Graph, un potente strumento che da command-line consente rapidamente di ottenere dettagli riguardanti i differenti artifacts di Azure. Utilizzando Resource Graph è possibile recuperare informazioni che in precedenza richiedevano necessariamente la creazione di script complessi ed iterativi. In questo articolo vengono riportate le caratteristiche della soluzione e come è possibile utilizzarla per scoprire i dettagli delle risorse Azure su larga scala.

Caratteristiche del servizio

In presenza di ambienti Azure complessi che vedono la presenza di molte subscription, mantenere una visibilità complessiva di tutte le risorse Azure può risultare complesso senza l’adozione di strumenti appositamente sviluppati. Queste le esigenze che tipicamente si devono affrontare:

  • Possibilità di visualizzare le risorse Azure e le rispettive proprietà in modo trasversale tra differenti subscription.
  • Poter eseguire in modo efficiente delle query sulle risorse impostando dei filtri, dei raggruppamenti e imponendo un preciso ordinamento sulle rispettive proprietà.
  • Esplorare iterativamente le differenti risorse.
  • Valutare l’impatto dato dall’applicazione di policy su un numero elevato di risorse cloud.

Il servizio Azure Resource Graph consente, grazie all’utilizzo di un linguaggio efficiente e performante di effettuare le seguenti azioni:

  • Eseguire query sulle risorse applicando filtri, raggruppamenti e ordinamenti complessi.
  • Esplorare iterativamente le risorse in base ai requisiti di governance.
  • Valutare l’impatto dato dall’applicazione delle policy in un vasto ambiente cloud.
  • Dettagliare le modifiche che vengono apportate alle proprietà delle risorse Azure. Recentemente è stata infatti introdotta la possibilità di visualizzare gli ultimi 14 giorni di cronologia relativa alle modifiche apportate alle risorse, per individuare quali proprietà sono state modificate e quando. Questa funzionalità risulta particolarmente utile in fase di troubleshooting, per individuare eventuali eventi di modifica in una specifica fascia oraria. Inoltre, risulta funzionale per comprendere le proprietà che sono state modificate quando una risorsa ha cambiato lo stato di compliance, in modo da valutare l’adozione di Azure Policy per gestire opportunamente tali proprietà. Per maggiori informazioni a riguardo è possibile consultare la documentazione ufficiale Microsoft.

Tutte queste azioni garantiscono aspetti importanti per poter governare al meglio il proprio ambiente Azure.

Quando una risorsa di Azure viene aggiornata, Resource Graph viene notificato da Resource Manager della relativa modifica ed aggiorna di conseguenza il suo database. Resource Graph esegue inoltre regolarmente una scansione completa delle risorse per garantire che i suoi dati siano aggiornati nel caso di mancate notifiche oppure di aggiornamenti che avvengono al di fuori di Resource Manager.

Come utilizzare Resource Graph

Le query di Azure Resource Graph sono basate sul linguaggio Kusto, utilizzato anche da Azure Data Explorer, Application Insights ed Azure Log Analytics. Per maggiori dettagli sull’utilizzo del linguaggio di query di Azure Resource Graph è possibile consultare la documentazione ufficiale Microsoft, che riporta come è strutturato e quali sono gli operatori e le funzionalità supportate.

Resource Graph supporta l’Azure CLIAzure PowerShell e Azure SDK per .NET. L’esecuzione di query Resource Graph richiede nell’Azure CLI environment l’aggiunta della relativa extension, mentre in Azure PowerShell è necessaria l’installazione del modulo Resource Graph. Le query sono comunque sempre strutturate in modo identico, indipendentemente da dove vengono eseguite.

L’utilizzo di Resource Graph richiede che l’utente con il quale vengono eseguite le query disponga di permessi almeno in lettura, tramite Role-based access control (RBAC), sulle risorse che si intende interrogare. Nel caso non siano presenti almeno i permessi di lettura su determinate risorse, le interrogazioni non restituiranno i risultati relativi ad esse.

Il servizio Azure Resource Graph viene utilizzato anche quando si effettuano delle ricerche nella search bar del portale Azure, nel nuovo elenco delle risorse (‘All resources’) e nella change history delle Azure Policy.

Figura 1 – Experience di ‘All resources’ che utilizza Azure Resource Graph

Query di esempio

Si riportano alcuni esempi di query Resource Graph ed il relativo risultato.

Figura 2 – Query per contare le risorse per tipologia (Resource Type)

Figura 3 – Query per contare le risorse in base alla location geografica

Le query Azure Resource Graph hanno il grosso vantaggio che oltre a poter ottenere il risultato desiderato in modo semplice, sono anche molto performanti:

Figura 4 – Tempo di esecuzione della query per contare le risorse in base alla location

Se si volesse ottenere questo risultato utilizzando il classico metodo PowerShell in ambienti Azure complessi, bisognerebbe collegarsi alla singola subscription Azure, ricercare le informazioni necessarie e passare alla subscription successiva. Questo approccio era l’unico possibile fino all’arrivo di Resource Graph, ma risultava essere più laborioso e molto meno performante.

Figura 5 – Elenco delle VMs con l’OS disk non Managed

Conclusioni

Azure Resource Graph permette di esplorare e analizzare in modo rapido ed efficace le risorse Azure, consentendo di mantenere una visibilità totale anche sugli ambienti Azure particolarmente complessi, costituiti da diverse subscription, ciascuna delle quali con un numero elevato di elementi. Particolarmente utile la funzionalità che consente di consultare la cronologia delle modifiche apportate alle risorse Azure. Azure Resource Graph è uno strumento che consente di apportare un contributo significativo per la governance del proprio ambiente Azure.

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.