Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure policy Azure策略对不存在者的影响_Azure Policy - Fatal编程技术网

Azure policy Azure策略对不存在者的影响

Azure policy Azure策略对不存在者的影响,azure-policy,Azure Policy,是的,你读对了AuditIfExists而不是AuditIfNotExists 我的使用案例是,我希望审核所有Azure SQL Server中具有特定IP地址的防火墙规则,并且我希望所有策略仪表板指标都与SQL Server相关,而不是与防火墙规则相关。(即,每个包含3个防火墙规则的2台SQL Server应识别2个资源,而不是由Microsoft.SQL/Servers/firewallRules的直接审核报告的6个资源) 我的许多其他自定义策略在使用AuditIfNotExists或Dep

是的,你读对了
AuditIfExists
而不是
AuditIfNotExists

我的使用案例是,我希望审核所有Azure SQL Server中具有特定IP地址的防火墙规则,并且我希望所有策略仪表板指标都与SQL Server相关,而不是与防火墙规则相关。(即,每个包含3个防火墙规则的2台SQL Server应识别2个资源,而不是由Microsoft.SQL/Servers/firewallRules的直接
审核
报告的6个资源)

我的许多其他自定义策略在使用
AuditIfNotExists
DeployIfNotExists
时会检查相关资源并代表家长报告这些指标。但是,这些检查的基本依据是,无论存在条件评估结果如何,子类型的不存在都会创建不符合的状态。因此,在我的例子中,如果SQL Server有0个防火墙规则(这对我来说是一个兼容状态),那么策略会将其评估为不兼容。如果我尝试按照此策略问题线程()中@mentat9的建议,在我的存在条件中再次检查是否存在,则通过几次尝试,很明显,如果不存在所需类型的对象,则策略引擎甚至不会计算存在条件

以下是我最近一次尝试的政策规则

"policyRule": {
                "if": {
                    "allOf": [
                        {
                            "field": "type",
                            "equals": "Microsoft.Sql/servers"
                        }
                    ]
                },
                "then": {
                    "effect": "[parameters('effect')]",
                    "details": {
                        "type": "Microsoft.Sql/servers/firewallRules",
                        "roleDefinitionIds": [
                            "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
                        ],
                        "existenceCondition": {
                            "anyOf": [
                                {
                                    "field": "Microsoft.Sql/servers/firewallRules/startIpAddress",
                                    "exists": false
                                },
                                {
                                    "allOf": [
                                        {
                                            "field": "Microsoft.Sql/servers/firewallRules/startIpAddress",
                                            "notequals": "0.0.0.0"
                                        },
                                        {
                                            "field": "Microsoft.Sql/servers/firewallRules/endIpAddress",
                                            "notequals": "0.0.0.0"
                                        }
                                    ]
                                }
                            ]
                        }
                    }
                }
            }
表情怎么样

{
    "count": {
        "field": "Microsoft.Sql/servers/firewallRules[*]",
        "where": {
            "field": "Microsoft.Sql/servers/firewallRules[*].startIpAddress",
            "equals": "0.0.0.0"
        }
    },
    "equals": 0
}

Microsoft.Sql/servers/firewallRules不是数组类型别名,因此无法在计数操作中使用。策略定义“xxxx”规则无效。“count.field”中使用的字段值“Microsoft.Sql/servers/firewallRules”不是别名,或者是非数组属性的别名。“count.field”中只允许以“[*]”结尾的别名