Azure Policy 中 match 和 like 通配符的区别
The difference between wildcards in match & like in Azure Policy
我正在使用此处记录的 JSON 结构对 Azure 策略进行编码:https://docs.microsoft.com/en-us/azure/governance/policy/concepts/definition-structure
有人能确认是否可以使用星号通配符和“?”、“#”或“.”吗?在相同的声明中。正如它所说,我认为你只能在同类比较中使用星号,而在匹配比较中使用其他星号。
等
非常感谢
我的标签字段必须以 4 个数字开头,然后是一个分号,但之后我不在乎编码的是什么。理想情况下,这将是
####;*
但我发现我必须编码
####;。
要么
####;..
要么
####;...
等等
{
"if": {
"allOf": [
{
"field": "type",
"in": "[parameters('type')]"
},
{
"not": {
"anyOf": [
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;"
},
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;."
},
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;.."
},
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;..."
},
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;...."
},
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;....."
},
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;......"
},
等
有没有更好的方法来实现这个?
您说得对,不能在 match
子句中使用星号通配符 (*)。
但是,您可以使用 value clause with the take and field functions 来达到您想要的结果:
{
"if": {
"allOf": [
{
"field": "type",
"in": "[parameters('type')]"
},
{
"not": {
"value": "[take(field('tags[tag_name]'), 5)]",
"match": "####;"
}
}
]
},
"then": {
"effect": "audit"
}
}
我正在使用此处记录的 JSON 结构对 Azure 策略进行编码:https://docs.microsoft.com/en-us/azure/governance/policy/concepts/definition-structure
有人能确认是否可以使用星号通配符和“?”、“#”或“.”吗?在相同的声明中。正如它所说,我认为你只能在同类比较中使用星号,而在匹配比较中使用其他星号。
等 非常感谢
我的标签字段必须以 4 个数字开头,然后是一个分号,但之后我不在乎编码的是什么。理想情况下,这将是
####;*
但我发现我必须编码 ####;。 要么 ####;.. 要么 ####;... 等等
{
"if": {
"allOf": [
{
"field": "type",
"in": "[parameters('type')]"
},
{
"not": {
"anyOf": [
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;"
},
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;."
},
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;.."
},
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;..."
},
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;...."
},
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;....."
},
{
"field": "[concat('tags[','tag_name', ']')]",
"match": "####;......"
},
等 有没有更好的方法来实现这个?
您说得对,不能在 match
子句中使用星号通配符 (*)。
但是,您可以使用 value clause with the take and field functions 来达到您想要的结果:
{
"if": {
"allOf": [
{
"field": "type",
"in": "[parameters('type')]"
},
{
"not": {
"value": "[take(field('tags[tag_name]'), 5)]",
"match": "####;"
}
}
]
},
"then": {
"effect": "audit"
}
}