Primeros pasos con Azure Resource Graph

​Azure Resource Graph está diseñado para extender la administración de los recursos de Azure, ayudándonos a gobernar nuestro entorno un poquito más. Actualmente soporta querys contra recursos básicos de Azure, como nombres de recursos, ID, Type, Subscription… Pero como todo en Azure, seguro que evolucionará y muy rápido

Azure Resource Graph está basado en lenguaje Kusto, soportando un gran número de funciones y operadores.

Para preparar nuestro entorno para hacer querys contra Azure Resource Graph, como mínimo necesitaremos permisos de lectura sobre los recursos que queremos consultar, y utilizar Azure CLI, la extensión SDK con REST o bien PowerShell. En este post exploraremos este último método.

Primero, para instalar los comandos de Azure Resource Graph, deberemos de abrir una consola de PowerShell y ejecutar el siguiente comando:

Install-Module -Name Az.ResourceGraph

A partir de aquí, sobre la misma consola de PowerShell, podemos ejecutar la siguiente query con lo que nos devolverá sobre qué número de objetos tenemos permisos sobre nuestro tenant:

1Search-AzGraph -Query "summarize count()"
2count_
3------
4    217
5

Ahora lo que haremos es consultar las máquinas virtuales que tenemos bajo la suscripción, y utilizaremos un operador para consultar tanto las máquinas en formato ARM como las que están en formato clásico (si algunos aún tenemos de esas)

1Search-AzGraph -Query "where type == 'Microsoft.Compute/virtualMachines' or type == 'Microsoft.ClassicCompute/virtualMachines' | summarize count()"
2count_
3------
418
5

Incluso podemos ver el tipo de máquinas que tenemos:

1Search-AzGraph -Query "where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by tostring(properties.storageProfile.osDisk.osType)"
2properties_storageProfile_osDisk_osType count_
3--------------------------------------- ------
4Windows                                 14
5Linux                                   4
6

Otros ejemplos que podemos utilizar (entre muchos) son:

1# Listar Recursos por tipo de la suscripción
2Search-AzGraph -Query "summarize count() by type, subscriptionId | order by type, subscriptionId asc" 
3
4# Listar Máquinas virtuales que cumplen con un patrón en concreto
5Search-AzGraph -Query "where type =~ 'microsoft.compute/virtualmachines' and name matches regex @'^Contoso(.*)[0-9]+$' | project name | order by name asc"
6
7# Listar todas las IP públicas
8Search-AzGraph -Query "where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress) | project properties.ipAddress"
9
10# Listar WebApps:
11Search-AzGraph -Query "where type=='microsoft.web/sites' | project name, subscriptionId, type | order by type, subscriptionId"
12
13# Listar Storage accounts:
14Search-AzureRmGraph -Query "where type=='microsoft.storage/storageaccounts' | project name, resourceGroup,subscriptionId"
15

Alberto Andrés Rodríguez
Cloud Architect en Seidor