Sigue las mejores prácticas y recomendaciones en Azure con Azure Quick Review



Azure Quick Review (a partir de ahora azqr), es una herramienta en línea de comandos muy útil.

Esta herramienta, te permite de manera muy sencilla comprobar si tu infraestructura en Azure cumple con las mejores prácticas y recomendaciones.

Lo primero que vamos a hacer es instalarlo, en el caso de de Windows 10/11 deberíamos lanzar la siguiente línea en el terminal:

winget install azqr

Una vez instalado, debemos autenticarnos. Tenemos 2 formas de hacerlo:

  • A través de Azure CLI
  • A través de un service principal, configurando las siguientes variables de entorno:
    • AZURE_CLIENT_ID
    • AZURE_CLIENT_SECRET
    • AZURE_TENANT_ID

En nuestro caso , vamos a usar Azure CLI. Sea cual sea el tipo de autenticación que eligamos necesitamos el permiso de Reader a nivel de suscripción:



Como hemos dicho, vamos a usar Azure CLI como autenticación, así que lanzamos el siguiente comando:

az login

Una vez autenticados lanzamos lo siguiente para escanear todos los recursos a nivel de suscripción (donde [subscription_id] es el id de tu suscripción):

azqr scan -s [subscription_id]

Y como es obvio, dependiendo del numero de recursos desplegados pues tardará más o tardará menos. Una vez finalizado el escaneo, se nos generará un fichero excel con el resultado en el directorio donde hemos lanzado el escaneo, así como un dashboard de PowerBI. En nuestro ejemplo este directorio es C:\azqrResults.

Ahora vamos a abrir el fichero excel generado, y nos encontramos las siguientes hojas:

  • Overview: Esta hoja nos muestra un resumen de los servicios escaneados, donde cabe destacar las siguientes columnas:

    • SLA: El % de SLA que tenemos actualmente, con la configuración actual del servicio.

    • AZ: Si el servicio (aquel que tenga soporte, porque no todos lo tienen), tiene habilitado Availability zone (https://learn.microsoft.com/en-us/azure/reliability/availability-zones-service-support)

    • PVT: Si el servicio (aquel que tenga soporte, porque no todos lo tienen), tiene IP privada.

    • DS: Si el servicio tiene habilitado Diagnostic Settings.

    • CAF: Si el nombre del servicio o resource group cumple con las recomendaciones del Cloud Adoption Framework , en lo que a nombrado se refiere.


  • Recommendations: Se nos muestra una serie de recomendaciones que no cumplimos en nuestros recursos, con una clasificación de criticidad de Low, Medium and High.

  • Services: Vemos de forma pormenorizada, que recomendaciones no cumplimos servicio por servicio.

  • Defender: En esta hoja vemos que tier de Defender estamos usando para cada tipo de servicio, y si este plan esta deprecado.



  • Advisor: Aquí vemos las recomendaciones de Azure Advisor, obteniendo la misma información como si lo hiciéramos desde el portal de Azure.


Si se quisiera que en el excel, se generará una hoja extra llamada Costs, con los gastos desde el primer día del mes hasta el día en que se lanzó el escaneo, debemos ejecutar lo siguiente:

azqr scan --costs -s [subscription_id]

El excel generado, ahora sí incorporará esta pestaña con los costes:



Luego tenemos otros parámetros para lanzar junto el comando scan. Algunos ejemplos son:

  • Escanear un resource group determinado:

        azqr scan -s [subscription_id] -g [resource_group_name]
    
  • Escanear sólo los storage accounts a nivel de suscripción:

    azqr scan st -s [subscription_id]
    

Para ver todas las posibilidades que te ofrece el comando scan, usar el siguiente comando:

azqr scan -h

Luego respecto al PowerBI que se genera, pues esta muy bien porque puedes ver y filtrar de forma más fácil y rápida la información del excel.



Usar esta herramienta en local esta muy bien, pero también el que podemos integrarla fácilmente en tus pipelines de CI/CD. Es por eso, que os dejo la siguiente pipeline de Azure DevOps por si os interesa.

La pipeline es muy sencilla:

  1. instala azqr.

  2. Lanza el comando scan

  3. Publica el excel en un artefacto para que pueda ser descargado.

Una vez tenemos los datos del escaneo, podemos por ejemplo revisar esos datos y si hay recomendaciones críticas pues denegar el paso a producción con una aprobación manual.

La pipeline es la siguiente:

trigger:
- main

pool:
  vmImage: ubuntu-latest

steps:
- task: Bash@3
  displayName: 'Install Azure Quick Review (azqr)'
  inputs:
    targetType: 'inline'
    script: |
      latest_azqr=$(curl -sL https://api.github.com/repos/Azure/azqr/releases/latest | jq -r ".tag_name" | cut -c1-)
      wget https://github.com/Azure/azqr/releases/download/$latest_azqr/azqr-ubuntu-latest-amd64 -O azqr
      chmod +x azqr                  

- task: Bash@3
  displayName:  'Launch help'
  inputs:
    targetType: 'inline'
    script: |
     ./azqr help     

- task: Bash@3
  displayName:  'Launch scan'
  inputs:
    targetType: 'inline'
    script: |
      ./azqr scan -s $(AZURE_SUBSCRIPTION_ID)      
  env:
    AZURE_CLIENT_ID: $(AZURE_CLIENT_ID)
    AZURE_CLIENT_SECRET: $(AZURE_CLIENT_SECRET)
    AZURE_TENANT_ID: $(AZURE_TENANT_ID)

- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.SourcesDirectory)'
    artifact: 'azqrResult'
    publishLocation: 'pipeline'

En el caso de la pipeline, en vez de usar Aure CLI, hemos usado service principal como el método de autenticación.

Para que solo se publique el excel en el artefacto, debeis crear el siguiente fichero .artifactignore en el repositorio:

**/*
!*.xlsx

Para más información sobre esta herramienta, os paso los siguientes enlaces:

Espero os haya gustado y hasta la próxima¡¡¡