首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AuditIfExists的Azure策略效果

AuditIfExists的Azure策略效果
EN

Stack Overflow用户
提问于 2020-10-15 06:39:53
回答 1查看 297关注 0票数 0

是的,你没看错,是AuditIfExists而不是AuditIfNotExists

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

在使用AuditIfNotExistsDeployIfNotExists时,我的许多其他自定义策略都会检查相关资源,并代表父级报告这些指标。然而,这些检查的基本基础是,无论存在条件评估结果如何,子类型的不存在都会创建不符合的状态。因此,在我的示例中,如果SQL Server没有防火墙规则(对我来说,这将是符合状态),则策略将其评估为不符合。如果我像这个策略问题线程(https://github.com/Azure/azure-policy/issues/374)中的@mentat9建议的那样,再次尝试在我的存在条件中检查是否存在,那么通过几次尝试,很明显,如果不存在所需类型的对象,策略引擎甚至不会评估存在条件。

下面是我最近一次尝试的policyRule。

代码语言:javascript
复制
"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"
                                        }
                                    ]
                                }
                            ]
                        }
                    }
                }
            }
EN

回答 1

Stack Overflow用户

发布于 2020-10-16 13:31:33

Count表达式怎么样?

代码语言:javascript
复制
{
    "count": {
        "field": "Microsoft.Sql/servers/firewallRules[*]",
        "where": {
            "field": "Microsoft.Sql/servers/firewallRules[*].startIpAddress",
            "equals": "0.0.0.0"
        }
    },
    "equals": 0
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64362457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档