azure - Azure Policy 中 match 和 like 通配符之间的区别
问题描述
我正在使用此处记录的 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
子句中使用星号通配符 (*)。
但是,您可以使用 带有take 和 field 函数的value子句来实现您想要的结果:
{
"if": {
"allOf": [
{
"field": "type",
"in": "[parameters('type')]"
},
{
"not": {
"value": "[take(field('tags[tag_name]'), 5)]",
"match": "####;"
}
}
]
},
"then": {
"effect": "audit"
}
}
推荐阅读
- r - ArcGis Rest API - 如何从 MapServer 获取栅格图层?
- algorithm - 什么是不会破坏先前排序的排序算法
- c# - 尝试从 PostgreSQL 获取时出错(提供了节点名或服务名,或未知)
- python - 如何同时使用 OneHotEncoder 和 LabelEncoder?
- laravel - 如何防止 laravel 更改文件夹所有者
- python - Telegram bot ConversationHandler 忽略回退
- asp.net-mvc - 在 asp.net mvc 中创建一个清理输入的属性以防止应用程序级别的 xss 攻击
- cmake - CMake 生成器表达式和 CONFIG 变量查询
- symfony - Chrome 上 Symfony 5 的 CORS 问题
- android - 如何修复错误“皮棉分析期间发生意外失败。StackOverflowError”