创建 Azure 策略问题

时间:2021-01-27 14:45:45

标签: azure azure-policy

我正在尝试创建一个策略来审核我在 Azure 中的网络接口。 策略应该指出 NIC 是否分配了没有 NSG 的公共 IP(在 NIC 上而不是在子网上) 这是我的 JSON。请协助解决这个问题。目前,这里的问题是所有带/不带 PIP 和 NSG 的 NIC 都不合规。

{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Network/networkInterfaces"
        },
        {
          "not": {
            "field": "Microsoft.Network/networkInterfaces/networkSecurityGroup",
            "equals": "True"
          }
        },
        {
          "not": {
            "field": "Microsoft.Network/networkInterfaces/ipConfigurations[*].publicIPAddress",
            "equals": "True"
          }
        }
      ]
    },
    "then": {
      "effect": "audit"
    }
  },
  "parameters": {}
}

1 个答案:

答案 0 :(得分:0)

我会尝试使用 exists 条件运算符。结果看起来像这样。

{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Network/networkInterfaces"
        },
        {
          "not": {
            "field": "Microsoft.Network/networkInterfaces/networkSecurityGroup",
            "exists": true
          }
        },
        {
            "field": "Microsoft.Network/networkInterfaces/ipConfigurations[*].publicIPAddress",
            "exists": true
        }
      ]
    },
    "then": {
      "effect": "audit"
    }
  },
  "parameters": {}
}

将您的所有资源标记为不合规的原因是因为您正在检查的资源的 publiIpAddress 或 NSG 都不等于“True”。如需更多政策条件运算符,请查看 https://docs.microsoft.com/en-us/azure/governance/policy/concepts/definition-structure#conditions