Gestión de recursos en Azure Resource Manager con políticas personalizadas

Una de las gran ventajas de Azure Resource Manager (ARM) frente al modelo de Azure Service Manager (ASM) es la capacidad de permitir una gestión mucho más detallada de los permisos de acceso a nuestros recursos por diferentes usuarios gracias al modelo Role Based Access Control (RBAC). RBAC se centra únicamente en las acciones que un usuario puede realizar dentro de una suscripción; es decir: acceder a un grupo de recursos concreto, poder gestionar únicamente máquinas virtuales, visualizar en modo lectura la información visible en el portal, etc. Sin embargo, hay ciertos escenarios que no es posible cubrir con RBAC en exclusiva.

¿Qué podemos hacer si queremos restringir en qué regiones se pueden desplegar recursos por temas legales? ¿O qué servicios son los que se puede usar o no? ¿Qué pasa si queremos seguir una nomenclatura estándar en todos nuestros recursos para facilitar la gestión? Si alguna vez os habéis preguntado algo similar, las políticas personalizadas son vuestra solución.

Custom Policies

A través de ARM ya es posible hacer uso de políticas personalizadas que te permitan gestionar de una forma más detallada qué se puede hacer con ciertos recursos y evitar de esta manera que se rompan las normas que tengas definidas a nivel corporativo. Las políticas pueden ser aplicadas a nivel de suscripción, grupo de recursos o a un recurso específico.

Una política personalizada en ARM no es más que un elemento JSON formado por una serie de operadores lógicos o condicionales que definen lo que se puede o no hacer. La estructura básica de una política es la siguiente:

{
  "if" : {
    <condition> | <logical operator>
  },
  "then" : {
    "effect" : "deny | audit"
  }
}

Por ejemplo, por temas de legislación vigente es posible que no queramos que nuestros usuarios tengan la posibilidad de desplegar recursos fuera de los datacenters disponibles dentro de la Unión Europea. Para ello, podemos definir una nueva política como la siguiente que comprueba el campo location de los recursos que creamos y si no coincide con los del Norte de Europa u Oeste de Europa deniega la creación.

{
  "if" : {
    "not" : {
      "field" : "location",
      "in" : ["northeurope" , "westeurope"]
    }
  },
  "then" : {
    "effect" : "deny"
  }
}

Aplicar las políticas es posible hacerlo directamente desde PowerShell con los comandos disponibles para ello: New-AzureRmPolicyDefinition y New-AzureRmPolicyAssignment

Si queréis más detalles, tenéis la referencia de las condiciones, operadores lógicos y acciones que se pueden configurar a través de la política en el artículo de la documentación disponible . También podéis encontrar otros ejemplos comunes y cómo hacerlo desde la API REST.

A día de hoy el servicio de políticas personalizadas aún está en preview. Es importante tenerlo en cuenta a la hora de emplearlas en vuestros entornos de producción.

Leave a Reply

Your email address will not be published. Required fields are marked *