Patrón de Azure Policy: operador value

El operador value evalúa parámetros, funciones de plantilla admitidas o literales con un valor proporcionado para una condición determinada.

Advertencia

Si el resultado de una función de plantilla es un error, no se pude realizar la evaluación de directivas. Una evaluación con errores es una denegación implícita. Para más información, consulte cómo evitar los errores de plantilla.

Definición de directiva de ejemplo

Esta definición de directiva agrega o reemplaza la etiqueta especificada en el parámetro tagName (cadena) en los recursos y hereda el valor de tagName del grupo de recursos en el que se encuentra el recurso. Esta evaluación se produce cuando se crea o actualiza el recurso. Como un efecto modify, la corrección se puede ejecutar en los recursos existentes mediante una tarea de corrección.

{
    "properties": {
        "displayName": "Inherit a tag from the resource group",
        "policyType": "BuiltIn",
        "mode": "Indexed",
        "description": "Adds or replaces the specified tag and value from the parent resource group when any resource is created or updated. Existing resources can be remediated by triggering a remediation task.",
        "metadata": {
            "category": "Tags"
        },
        "parameters": {
            "tagName": {
                "type": "String",
                "metadata": {
                    "displayName": "Tag Name",
                    "description": "Name of the tag, such as 'environment'"
                }
            }
        },
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "notEquals": "[resourceGroup().tags[parameters('tagName')]]"
                    },
                    {
                        "value": "[resourceGroup().tags[parameters('tagName')]]",
                        "notEquals": ""
                    }
                ]
            },
            "then": {
                "effect": "modify",
                "details": {
                    "roleDefinitionIds": [
                        "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
                    ],
                    "operations": [{
                        "operation": "addOrReplace",
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "value": "[resourceGroup().tags[parameters('tagName')]]"
                    }]
                }
            }
        }
    }
}

Explicación

"if": {
    "allOf": [{
            "field": "[concat('tags[', parameters('tagName'), ']')]",
            "notEquals": "[resourceGroup().tags[parameters('tagName')]]"
        },
        {
            "value": "[resourceGroup().tags[parameters('tagName')]]",
            "notEquals": ""
        }
    ]
},

El operador value se usa dentro del bloque policyRule.if dentro de properties. En este ejemplo, el operador lógicoallOf se usa para comprobar que sean verdaderas ambas instrucciones condicionales para que el efecto modify tenga lugar.

value evalúa el resultado de la función de plantilla resourceGroup() con la condición notEquals de un valor en blanco. Si el nombre de etiqueta proporcionado en tagName existe en el grupo de recursos primario, la instrucción condicional se evalúa en verdadero.

Pasos siguientes