如果第一个诊断设置已存在,则拒绝向任何资源添加第二个诊断设置的 Azure 策略

Azure policy to deny adding a second diagnostic setting to any resource if the first diagnostic setting already exists

提问人:jarvis93 提问时间:11/4/2023 最后编辑:Jahnavijarvis93 更新时间:11/6/2023 访问量:53

问:

如果第一个诊断设置已存在,则拒绝向任何资源添加第二个诊断设置的 Azure 策略

我尝试了以下代码,但它似乎没有任何资源详细信息,也不起作用

{
    "mode": "All",
    "policyRule": {
        "if": {
            "field": "type",
            "equals": "Microsoft.Insights/diagnosticSettings"
        },
        "then": {
            "effect": "deny"
        }
    },
    "parameters": {}
}
azure-policy azure-diagnostics

评论


答:

0赞 Jahnavi 11/6/2023 #1

如果第一个诊断设置已存在,则拒绝向任何资源添加第二个诊断设置的 Azure 策略:-

Azure 策略如下: 我发现了如何避免添加两个或多个诊断设置。如果至少一个诊断参数已启用并设置为“true”,则策略允许它。

如果资源具有多个诊断设置,且 enabled 设置为“true”,则策略禁止。

{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Insights/diagnosticSettings"
        },
        {
          "count": {
            "field": "Microsoft.Insights/diagnosticSettings/logs[*]",
            "where": {
              "allOf": [
                {
                  "field": "Microsoft.Insights/diagnosticSettings/logs[*].enabled",
                  "equals": "true"
                }
              ]
            }
          },
          "greater": 1
        }
      ]
    },
    "then": {
      "effect": "deny"
    }
  },
  "parameters": {}
}

创建成功:

enter image description here

Azure Policy COUNT 运算符。

评论

0赞 jarvis93 11/8/2023
但我的要求是不同的。我希望它不要创建多个诊断设置(而不是同一诊断设置中的多个设置)
0赞 Jahnavi 11/8/2023
明白了,这就是我检查日志字段的原因。如果启用了日志,则策略应拒绝添加更多日志,这些日志只不过是诊断设置。如果不是这种情况,您能否详细说明您的问题。@jarvis93
0赞 jarvis93 11/9/2023
假设我有一个诊断设置“ds1”,将“审核日志”发送到“xyz”Log Analytics 工作区。我不希望有人创建另一个诊断设置“ds2”,将“Azure Policy 评估详细信息”日志发送到“abc”(或任何其他)Log Analytics 工作区。(你提到的策略拒绝在启用日志归档的情况下创建新的诊断设置。但它不会检查是否存在现有的 ds1。无论是否存在现有设置,它都会拒绝创建)