Patrón de Azure Policy: propiedades field

El operador field evalúa la propiedad especificada o alias con un valor proporcionado para una condición determinada.

Definición de directiva de ejemplo

Esta definición de directiva le permite definir regiones permitidas que cumplan los requisitos de ubicación geográfica de la organización. Los recursos permitidos se definen en el parámetro listOfAllowedLocations (matriz). Los recursos que coinciden con la definición se deniegan.

{
    "properties": {
        "displayName": "Allowed locations",
        "policyType": "BuiltIn",
        "description": "This policy enables you to restrict the locations your organization can specify when deploying resources. Use to enforce your geo-compliance requirements. Excludes resource groups, Microsoft.AzureActiveDirectory/b2cDirectories, and resources that use the 'global' region.",
        "mode": "Indexed",
        "parameters": {
            "listOfAllowedLocations": {
                "type": "Array",
                "metadata": {
                    "description": "The list of locations that can be specified when deploying resources.",
                    "strongType": "location",
                    "displayName": "Allowed locations"
                }
            }
        },
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "location",
                        "notIn": "[parameters('listOfAllowedLocations')]"
                    },
                    {
                        "field": "location",
                        "notEquals": "global"
                    },
                    {
                        "field": "type",
                        "notEquals": "Microsoft.AzureActiveDirectory/b2cDirectories"
                    }
                ]
            },
            "then": {
                "effect": "Deny"
            }
        }
    }
}

Explicación

    "if": {
        "allOf": [{
                "field": "location",
                "notIn": "[parameters('listOfAllowedLocations')]"
            },
            {
                "field": "location",
                "notEquals": "global"
            },
            {
                "field": "type",
                "notEquals": "Microsoft.AzureActiveDirectory/b2cDirectories"
            }
        ]
    },
    "then": {
        "effect": "Deny"
    }
}

El operador field se utiliza tres veces dentro del operador lógicoallOf.

  • El primer uso evalúa la propiedad location con la condición notIn con el parámetro listOfAllowedLocations. notIn funciona como si esperase una matriz y el parámetro es una matriz. Si el valor de location del recurso creado o actualizado no está en la lista de aprobados, este elemento se evalúa como verdadero.
  • El segundo uso también evalúa la propiedad location, pero utiliza la condición notEquals para ver si el recurso es global. Si el valor de location del recurso creado o actualizado no es global, este elemento se evalúa como verdadero.
  • El último uso evalúa la propiedad type y usa la condición notEquals para validar que el tipo de recurso no es Microsoft.AzureActiveDirectory/b2cDirectories. Si no lo es, este elemento se evalúa como verdadero.

Si las tres instrucciones de condición del operador lógico allOf se evalúan como verdaderas, Azure Policy bloquea la creación o actualización del recurso.

Pasos siguientes