Haz inventario de Microsoft Azure con CloudQuery
Recientemente he descubierto una herramienta que en diferentes escenarios, sobre todo en el inventariado, puede sernos útil. Se llama CloudQuery y te permite exportar los datos de los recursos de tus suscripciones, de los diferentes proveedores cloud, para poder ejecutar consultas sobre ello lanzando sentencias SQL, ya que el resultado se almacena en un Postgres. En este artículo te cuento cómo configurarlo para Microsoft Azure.
Instalar CloudQuery
Lo primero que necesitas hacer es instalar la herramienta de CloudQuery en tu máquina. En mi caso estoy utilizando Mac, por lo que he ejecutado el siguiente comando usando Homebrew:
Si utilizas otro sistema operativo puedes ver las diferentes releases aquí.
Iniciar CloudQuery
Ahora que ya tienes la herramienta de CloudQuery instalada en tu máquina, crea un directorio, yo lo he llamado cloudquery, e inicializa la configuración dentro de él, con el siguiente comando:
Al hacer esto genera un archivo llamado config.hcl el cual podemos personalizar, indicando de qué suscripciones queremos traernos los datos, qué tipos de recursos, etcétera.
Si no modificamos nada se traerá todos los recursos de todas las suscripciones a las que se tengan acceso. Ahora ya tenemos nuestro proyecto listo para recuperar la información de nuestras suscripciones.
Crear una base de datos Postgres en Docker
Como ya te comenté al inicio de este artículo, la información recuperada se exporta a una base de datos de tipo Postgres, por lo que vamos a necesitar una. La forma sencilla es usando un contenedor de Docker:
Crear un Service Principal
Ahora que ya sabemos que queremos recuperar la información de Azure, para poder hacerlo necesitamos crear un service principal que tenga acceso a las suscripciones que queremos exportar:
Una vez creado, y almacenada la respuesta en el archivo auth.json, utilizo la herramienta jq para almacenar la información del service principal en estas variables de entorno:
Asignar el service principal al rol «Application Administrator» de Azure AD
Para finalizar la configuración, necesitamos que el service principal que acabamos de crear esté asociado a un rol de Azure Active Directory llamado Application administrator, que puedes encontrarlo en el recurso de Azure AD, en el apartado Roles and administrators:
Una vez en él, busca el service principal que hemos llamado cloudquery, a través del botón Add assignments, y asócialo de manera permanente.
Volcar la información en el Postgres con CloudQuery
Ahora, lo único que falta es recuperar la información con CloudQuery. Para ello sólo tienes que ejecutar un único comando:
Este utiliza las variables de entorno que hemos configurado anteriormente, con la información de nuestro service principal, y el postgres que hemos generado en Docker. Una vez que el proceso finalice, verás que tienes un montón de tablas generadas (para este ejemplo he usado DataGrip como GUI):
Podrás hacer consultas como estas, simplemente para recuperar recursos de un tipo concreto:
O ir más allá y consultar sobre estos aspectos que para ti pueden ser importante y necesitas validar o generar un informe sobre ellos. Como por ejemplo: «Dime qué cuentas de almacenamientos tienen habilitado el acceso público». Sería algo tan sencillo como esto:
¡Saludos!
Puedes ver el articulo original haciendo click Aqui>