Azure 策略强制在任何新数据库中使用弹性池

Azure policy forcing the use of Elastic Pool in the any new database

我正在尝试创建一个策略,如果设置中没有弹性池,该策略将阻止向资源组释放数据库。 不幸的是,无论是否启用此选项,每次设置条件的尝试都以阻止数据库发布而告终。 我尝试使用各种字段类型作为参数(从最简单的例子开始):

 "if": {
         "allOf": [
          {
            "field": "type",
            "notEquals": "Microsoft.Sql/servers/elasticPools"
       },
       "then": {
         "effect": "Deny"
       }

但每次都失败。如何正确制定 JSON 中的条件以使政策生效?也许有人有现成配置的例子?也许是某处现成配置的示例?

您缺少 allof 的右括号。你应该能够做到这一点: "if":{ "field": "type", "notEquals": "Microsoft.Sql/servers/elasticPools" }, "then":{ "effect": "Deny" }

我正在解决类似的问题,过滤器似乎需要更明确才能正常工作。您可以从下面的示例中看到,我正在过滤数据库和 ElasticPoolID 值的 non-existence...

  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.Sql/servers/databases"
      },
      {
        "not": {
          "field": "Microsoft.Sql/servers/databases/elasticPoolId",
          "exists": "true"
        }
      }
    ]
  },
  "then": {
    "effect": "audit"
  }

我还没有试过它拒绝创建,但它似乎可以审计现有的数据库。