Azure策略中匹配和类似通配符之间的区别

时间:2019-02-17 12:01:04

标签: 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": "####;......"
            },

等 有没有更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

您正确的说,您不能在match子句中使用星号通配符(*)。

但是,您可以将value clausetake and field function结合使用以达到所需的结果:

{
  "if": {
    "allOf": [
      {
        "field": "type",
        "in": "[parameters('type')]"
      },
      {
        "not": {
          "value": "[take(field('tags[tag_name]'), 5)]",
          "match": "####;"
        }
      }
    ]
  },
  "then": {
    "effect": "audit"
  }
}