Restringir la compra desde Azure Marketplace con Azure Policy

Existen muchísimos escenarios que podemos controlar con Azure Policy. De hecho, podemos generar todas las combinaciones que queramos al ser un servicio que te permite definir tus propias reglas. Hoy quería compartir contigo una que he creado para restringir la compra desde Azure Marketplace.

Cómo definir la política

Para saber qué debes incluir en las políticas normalmente tienes que basarte en los campos que tiene un recurso en su plantilla ARM. La forma más sencilla de ver estos campos es haciendo uso del servicio Azure Resource Explorer.

En este caso voy a utilizar el campo publisher que me dirá quién es el que publicó la máquina virtual.

Azure Resource Explorer – Publisher

La política tiene esta pinta:

{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "in": [
            "Microsoft.Compute/disks",
            "Microsoft.Compute/virtualMachines",
            "Microsoft.Compute/VirtualMachineScaleSets"
          ]
        },
        {
          "not": {
            "allOf": [
              {
                "field": "Microsoft.Compute/imagePublisher",
                "in": [
                  "Microsoft",
                  "MicrosoftWindowsServer",
                  "Microsoft-AKS",
                  "Canonical"
                ]
              }
            ]
          }
        }
      ]
    },
    "then": {
      "effect": "audit"
    }
  },
  "parameters": {}
}

Lo primero que hago es comprobar que el tipo de recurso sea una máquina virtual y lo segundo que este no tenga como publicador ninguno de los que lo indico, que son los de las máquinas que están fuera del Marketplace. Te recomiendo que el efecto inicialmente sea de tipo audit, para comprobar que el resultado de la misma es el correcto. Una vez que veas que funciona correctamente sólo tienes que pasar el mismo a estado deny.

¡Saludos!