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

Posted

技术标签:

【中文标题】Azure 策略强制在任何新数据库中使用弹性池【英文标题】:Azure policy forcing the use of Elastic Pool in the any new database 【发布时间】:2020-05-06 18:21:12 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

您缺少用于 allof 的封闭括号。你应该能够做到这一点: “如果”: “字段”:“类型”, “notEquals”:“Microsoft.Sql/servers/elasticPools” , “然后”: “效果”:“拒绝”

【讨论】:

以上是关于Azure 策略强制在任何新数据库中使用弹性池的主要内容,如果未能解决你的问题,请参考以下文章

Azure SQL 数据库弹性池和 Azure SQL 数据库托管实例有啥区别?

Azure 弹性数据库池是不是允许跨数据库事务?

弹性池中的 Azure 已用 Vs 已分配 Vs 最大值

如何强制 Azure 数据工厂数据流使用 Databricks

Azure Sql实战过程1 - Azure Sql订阅

Azure SQL - 如何将 AD 用户添加到 SQL 池数据库