Azure Policy 模式:value 运算符
value 运算符会对参数、支持的模板函数或文本进行评估,针对为给定条件提供的值。
警告
如果模板函数的结果是一个错误,则策略评估会失败。 评估失败是一种隐式拒绝。 有关详细信息,请参阅避免模板失败。
示例策略定义
此策略定义添加或替换在资源上的参数 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 运算符用在属性的 policyRule.if 块中。 在此示例中,逻辑运算符 allOf 用于说明这两个条件语句都必须为 true 才能产生 modify 效果。
value 会对模板函数 resourceGroup() 的结果进行评估,其条件是结果 notEquals 空值。 如果在父资源组的 tagName 中提供的标记名称存在,则条件的评估结果为 true。
后续步骤
- 查看其他模式和内置定义。
- 查看 Azure Policy 定义结构。
- 查看了解策略效果。