Разница между подстановочными знаками в совпадении и лайке в политике Azure - PullRequest
0 голосов
/ 17 февраля 2019

Я кодирую политику Azure, используя документированную здесь структуру JSON: 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 голосов
/ 20 февраля 2019

Вы правы, что нельзя использовать подстановочный знак звездочки (*) в предложении match.

Однако вы можете использовать значение предложение с функция взятия и поля s для достижения желаемого результата:

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