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.