创建 Azure Policy 问题

Creating Azure Policy Issue

我正在尝试创建一个策略来审核我在 Azure 中的网络接口。 如果 NIC 在没有 NSG 的情况下分配了 public IP(在 NIC 上而不是在子网上),则该策略应该指向 这是我的 JSON。请协助解决这个问题。目前,这里的问题是所有 NIC with/without PIP 和 NSG 都不兼容。

{
  "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": {}
}

我会尝试使用 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