Azure策略中的ExistenceCondition?

时间:2019-09-22 15:33:21

标签: azure azure-policy

我目前正在尝试了解Azure策略。我想我已经对别名有所了解,但是我无法理解在哪里可以找到ExistenceCondition equals field的正确值

  1. 它与我们应用的PolicyRule有何不同?
  2. 我应该保持ExistanceCondition与PolicyRule几乎一样吗?

我应用的政策规则:

    "if":{
            "allOf":[
               {
                  "field":"type",
                  "equals":"Microsoft.Insights/metricalerts"
               },
               {
                  "field":"Microsoft.Insights/metricalerts/enabled",
                  "equals":"true"
               },
               {
                  "field":"Microsoft.Insights/metricalerts/actions[*]",
                  "less":"1"
               }
            ]
         }

4 个答案:

答案 0 :(得分:1)

ExistenceCondition 在控制方向上与 policyRule 相反。 在策略规则中,只有当条件为真时才继续。在 ExistenceCondition 中,只有当条件为假时才继续。在下面的 policyRule 示例中,您只过滤 storageAccount,然后继续。部署仅在条件为假(deleteRetentionPolicy.enabled ==false)时才会发生,因此它会继续并部署。所以一旦部署完成,它将是 deleteRetentionPolicy.enabled ==true

    "policyRule": {
        "if": {
            "allOf": [
                {
                    "field": "type",
                    "equals": "Microsoft.Storage/storageAccounts"
                },
                {
                    "field": "kind",
                    "in": [
                        "Storage",
                        "StorageV2",
                        "BlobStorage",
                        "BlockBlobStorage"
                    ]
                }
            ]
        },
        "then": {
            "effect": "DeployIfNotExists",
            "details": {
                "type": "Microsoft.Storage/storageAccounts/blobServices",
                "existenceCondition": {
                    "field": "Microsoft.Storage/storageAccounts/blobServices/default.deleteRetentionPolicy.enabled",
                    "equals": true
                },

答案 1 :(得分:0)

我假设ExistenceCondition的意思是if / then语句。本质上,if / then语句是策略规则。该策略规则将应用为if(something is true) then (effect in some way)

您可以从this link

获取有关策略规则的更多信息。

答案 2 :(得分:0)

请参见以下示例:

https://docs.microsoft.com/en-us/azure/governance/policy/samples/pattern-effect-details#sample-2-explanation

"details": {
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "existenceCondition": {
        "allOf": [{
                "field": "Microsoft.Compute/virtualMachines/extensions/publisher",
                "equals": "[parameters('publisher')]"
            },
            {
                "field": "Microsoft.Compute/virtualMachines/extensions/type",
                "equals": "[parameters('type')]"
            }
        ]
    }
}

existenceCondition 使用策略语言元素,例如逻辑 运算符,以确定是否存在匹配的相关资源。在这个 例如,针对每个别名检查的值在 参数。

答案 3 :(得分:0)

ExistenceCondition 仅适用于具有 AuditIfNotExists 和 DeployIfNotExists 效果的策略。

如果是 AuditIfNotExists

<块引用>

"如果任何匹配的相关资源评估为真,则效果为 满意且不会触发审核。”

如果是 DeployIfNotExists

<块引用>

"如果任何匹配的相关资源评估为真,则效果为 满意并且不会触发部署。”

与 ExistenceCondition 不匹配的现有资源将被标记为非投诉。 PolicyRule 过滤掉的资源不会被标记为不投诉。