1

我试图拒绝在 azure 中创建未定义网络规则的 Web 应用程序。

我正在尝试为此使用 Azure Policy,但无法使该策略生效。我已经确定了在 Azure 中保存配置的策略别名:

Microsoft.Web/sites/config/web.ipSecurityRestrictions[*].vnetSubnetResourceId
Microsoft.Web/sites/config/web.ipSecurityRestrictions[*].vnetTrafficTag
Microsoft.Web/sites/config/web.ipSecurityRestrictions[*].subnetTrafficTag
Microsoft.Web/sites/config/web.ipSecurityRestrictions[*].action
Microsoft.Web/sites/config/web.ipSecurityRestrictions[*].tag
Microsoft.Web/sites/config/web.ipSecurityRestrictions[*].priority
Microsoft.Web/sites/config/web.ipSecurityRestrictions[*].name
Microsoft.Web/sites/config/web.ipSecurityRestrictions[*].description
Microsoft.Web/sites/config/web.scmIpSecurityRestrictions[*].ipAddress
Microsoft.Web/sites/config/web.scmIpSecurityRestrictions[*].subnetMask
Microsoft.Web/sites/config/web.scmIpSecurityRestrictions[*].vnetSubnetResourceId
Microsoft.Web/sites/config/web.scmIpSecurityRestrictions[*].vnetTrafficTag
Microsoft.Web/sites/config/web.scmIpSecurityRestrictions[*].subnetTrafficTag
Microsoft.Web/sites/config/web.scmIpSecurityRestrictions[*].action
Microsoft.Web/sites/config/web.scmIpSecurityRestrictions[*].tag
Microsoft.Web/sites/config/web.scmIpSecurityRestrictions[*].priority
Microsoft.Web/sites/config/web.scmIpSecurityRestrictions[*].name
Microsoft.Web/sites/config/web.scmIpSecurityRestrictions[*].description                  
Microsoft.Web/sites/config/web.scmIpSecurityRestrictions[*]

但是我的策略不起作用,这是最新的迭代:

{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Web/sites"
        },
        {
          "not": {
            "field": "Microsoft.Web/sites/config/web.ipSecurityRestrictions[*].action",
            "equals": "deny"
          }
        }
      ]
    },
    "then": {
      "effect": "deny"
    }
  },
  "parameters": {}
}

我正在尝试在数组中查找“拒绝”操作,如果已定义,则不需要任何操作,否则拒绝。但是该策略什么也没做,我可以在有或没有网络规则的情况下部署 Web 应用程序。

4

1 回答 1

0

在 Azure 中,顶级资源被建模为一起工作并创建功能性最终资源的较小的微资源。在您的情况下,网站将属于 Microsft.Web/sites 微资源类型,但配置将位于另一个名为 Microsoft.Web/sites/config 的微资源类型中。

Azure 策略仅在你处理单一微资源类型时才对你有所帮助。微资源类型是异步部署和创建的,因此目前无法基于另一种来拒绝。

您可以使用 auditIfNotExists 编写类似的策略,该策略具有基于另一个属性审核微资源的能力。

PS:我在这里编写微资源术语以清楚地传达问题,在 Azure 中,每一个都被定义为一个资源

查看 auditIfNotExist 文档:https ://docs.microsoft.com/en-us/azure/governance/policy/concepts/effects#auditifnotexists

您的解决方案看起来与此类似(未经测试)

{
"if": {
    "field": "type",
    "equals": "Microsoft.Web/sites"
},
"then": {
    "effect": "auditIfNotExists",
    "details": {
        "type": "Microsoft.Web/sites/config",
        "existenceCondition": {
            {
                "field": "Microsoft.Web/sites/config/web.ipSecurityRestrictions[*].action",
                "equals": "deny"
            }
        }
    }
}

}

于 2019-10-01T00:04:15.633 回答