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”中只允许以“[*]”结尾的别名