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 数据库托管实例有啥区别?