azure - Azure Policy Deny:如果资源组名称中不存在标记之一
问题描述
我创建了一个 Azure 策略,如果用户没有使用键“Env”或“use”指定标签,我想拒绝创建资源组
但是,当我使用 Env 标签创建资源组时,它会阻止我,它只允许我同时添加 env 和 use 的标签。
根据我的理解,azure 策略中的“anyof”被用作“OR”,但我的代码表现不一样
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"anyof": [
{
"field": "tags.Env",
"exists": false
},
{
"field": "tags.use",
"exists": false
}
]
}
]
},
"then": {
"effect": "deny"
}
}
根据 Chris 的建议,我已经处理了标签名称和值,但它在政策中给了我一个错误,并且它没有采用“NOT”
{
"mode": "all",
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"not":{
{
"field": "tags.Env",
"equals" : "Prod"
},
{
"field": "tags.OS",
"equals" : "windows"
}
}
}
]
},
"then": {
"effect": "deny"
}
},
"parameters": {}
}
解决方案
现在,就像您提到的那样,该政策正在评估“tags.Env 不存在或 tags.use 不存在”。如果任一标签不存在,您将被拒绝。
如果“tags.Env 不存在且 tags.use 不存在”,您想要拒绝。这意味着它们都丢失了,这是您要防止的。
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"field": "tags.Env",
"exists": false
},
{
"field": "tags.use",
"exists": false
}
]
},
"then": {
"effect": "deny"
}
}
推荐阅读
- apache-kafka - 如何选择主题中json的子值作为ksql流
- excel - VBA 运行时错误:将 PowerPoint 演示文稿另存为 PDF
- reactjs - React - 循环渲染
- excel - Excel 要求我更新新文件的链接
- php - 如何让 have_posts() 查找所有语言的帖子?
- python - Python 和 Visio 365:自动保存到 .svg
- python - Python:将列中的每一行与所有其他条目进行比较
- c# - 从表中提取一个特定条目?
- seedstack - 我想使用带有存储库的种子堆栈在数据库上应用 Max() 函数
- google-cloud-platform - 在 mac zsh 终端上安装 apache-beam[gcp] 时出错 - “zsh: no match found: apache-beam[gcp]”