Ya has visto qué son tanto las políticas como las iniciativas de Azure Policy. En ambos casos te he mostrado ejemplos con reglas que ya existen predefinidas, pero también te conté que puedes generar las tuyas propias. Hoy te voy a mostrar lo sencillo y lo potente que es definir tus propias políticas.
Crear una nueva política
Para crear una nueva política existen dos formas de hacerlo: la primera de ellas es accediendo al apartado Definitions y haciendo clic sobre el botón + Policy definition.

De esta forma generas una política nueva desde cero, donde debes rellenar todos los campos.
La otra opción es duplicar una política ya existente, lo cual facilita bastante la creación. Estas solo se pueden duplicar cuando ya han sido asignadas, accediendo a cualquiera de ellas, en la sección Overview o Compliance, y haciendo clic en en View Definition.

Una vez allí tienes la opción Duplicate definition, que creará una copia de la misma.

Para este ejemplo voy a crear una nueva que me audite todas aquellas cuentas de almacenamiento que todavía estén utilizando la versión 1. En ambos casos, creándola desde cero o duplicándola, el portal te llevará al asistente de definición de la política, completado o no.

Para cualquier definición de una nueva política lo primero que debemos establecer es dónde se puede aplicar la misma. Estas se pueden asociar a nivel de suscripción o de Management Group. También necesitas elegir un nombre para la definición, así como una descripción que explique el objetivo de la misma. Puedes crear nuevas categorías o utilizar una existente. En mi caso, la he categorizado dentro de Storage. Por último está el JSON que define qué es lo que queremos hacer:
{
"mode": "All",
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
{
"not": {
"field": "kind",
"equals": "Storage"
}
}
]
},
"then": {
"effect": "[parameters('effect')]"
}
},
"parameters": {
"effect": {
"type": "String",
"metadata": {
"displayName": "Effect",
"description": "Enable or disable the execution of the policy"
},
"allowedValues": [
"Audit",
"Disable"
],
"defaultValue": "Audit"
}
}
}
Como puedes ver, la estructura es bastante sencilla: mode se utiliza para decir qué tipos de recursos se quieren evaluar (puede ser all, que son todos, o indexed, que son sólo para aquellos que soportan etiquetas y localización, por lo que se suele usar all), policyRule es la regla en sí, donde puedes ver que tengo un if y dentro de este dos condiciones que se deben cumplir: la primera que el tipo de recurso sea una cuenta de almacenamiento y la segunda es el que el valor de kind NO sea Storage, que son cuentas en la versión 1, tal y como se detalla en la documentación. Por último, tengo un apartado parameters que nos permite elegir si queremos auditar, que es el valor por defecto, y también podemos deshabilitar la política (esto es útil para alguna de las asignaciones que hagamos). La documentación de cómo definir las políticas se encuentra aquí.
Con esta configuración ya tenemos nuestra regla personalizada. Haz clic en Save y después en Assign para poner en marcha tu nueva política. Si no quieres asignarla por ahora, puedes hacerlo después en Compliance > Assign Policy y en el listado de Policy definition puedes cambiar el combo Type a Custom y aparecerán todas las definiciones que hayas ido creando.

En nuestro ejemplo, una vez se haya hecho una primera evaluación, el resultado será: non-compliant aquellas cuentas de almacenamiento que todavía estén en la v1 y compliant las que ya están en v2.

Si lo que quieres es denegar la creación de este tipo de cuentas podríamos hacer algo como lo siguiente:
{
"mode": "All",
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
{
"field": "kind",
"in": "[parameters('deniedTypes')]"
}
]
},
"then": {
"effect": "deny"
}
},
"parameters": {
"deniedTypes": {
"type": "Array",
"metadata": {
"description": "The list of denied storage account types for resources.",
"displayName": "Denied storage account types"
},
"defaultValue": [
"Storage"
],
"allowedValues": [
"Storage",
"StorageV2",
"BlobStorage",
"FileStorage",
"BlockBlobStorage"
]
}
}
}
Además de auditar lo que ya hay también denegará cualquier intento de seguir creando el tipo de cuentas que especifiquemos. Si necesitarás modificar la política puedes hacerlo desde el apartado Definitions y se actualizarán todas las asignaciones de esta definición.
¡Saludos!