Azure Policy pattern: value 演算子

value 演算子は、パラメーターサポートされているテンプレート関数、またはリテラルを、与えられた条件に合うように、指定した値に評価します。

警告

テンプレート関数 の結果がエラーの場合、ポリシーの評価は失敗します。 評価の失敗は、暗黙的な deny です。 詳細については、「テンプレート エラーの回避」を参照してください。

ポリシー定義の例

このポリシー定義では、パラメーター tagName ("文字列") で指定されているタグをリソースに追加または置換します。また、tagName の値はリソースが含まれるリソース グループから継承します。 この評価は、リソースが作成または更新されるときに行われます。 modify 効果として、修復タスクを通じて既存のリソースに対して修復が実行される場合があります。

{
    "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')]]"
                    }]
                }
            }
        }
    }
}

説明

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

value 演算子は、properties 内の policyRule.if ブロックで使用されます。 この例では、論理演算子allOf を使用して、modify 効果がトリガーされるためには、両方の条件ステートメントが true である必要があることを示しています。

value によって、テンプレート関数 resourceGroup () の結果が、空白の値を持つ notEquals 条件に評価されます。 親リソース グループの tagName に指定されたタグ名が存在する場合、条件は true に評価されます。

次のステップ