Политика Azure. Запретить, если тег владельца отсутствует или не является адресом электронной почты

Как написать политику Azure, которая позволяет создавать ресурсы только при соблюдении обоих этих условий:

  • Ресурсу присвоен тег "Владелец"
  • Значение тега "Владелец" является допустимым форматом адреса электронной почты

РЕДАКТИРОВАТЬ: я бы только сделать простой проверки адреса электронной почты, поскольку это должно просто напомнить людям в моей компании, чтобы использовать их адрес электронной почты, а не их полное имя. Я не пытаюсь проверить все возможные адреса электронной почты.

Регулярное выражение, вероятно, будет выглядеть примерно так:

[A-Z0-9a-z._-]+@[A-Za-z0-9.-]+\.[A-Za-z]+

0 ответов

Существуют встроенные политики для обеспечения соблюдения тега и его значения, которые вы можете использовать для настройки своей собственной. Если вы хотите добавить тег, даже если он не существует, вы можете использовать новый эффект " Изменить". Вот пример

{"properties": {
  "displayName": "Add a tag to resources",
  "policyType": "BuiltIn",
  "mode": "Indexed",
  "description": "Adds the specified tag and value when any resource missing this tag is created or updated. Existing resources can be remediated by triggering a remediation task. If the tag exists with a different value it will not be changed. Does not modify tags on resource groups.",
  "metadata": {
     "category": "Tags"
  },
  "parameters": {
     "tagName": {
        "type": "String",
        "metadata": {
           "displayName": "Tag Name",
           "description": "Name of the tag, such as 'environment'"
        }
     },
     "tagValue": {
        "type": "String",
        "metadata": {
           "displayName": "Tag Value",
           "description": "Value of the tag, such as 'production'"
        }
     }
  },
  "policyRule": {
     "if": {
        "field": "[concat('tags[', parameters('tagName'), ']')]",
        "exists": "false"
     },
     "then": {
        "effect": "modify",
        "details": {
           "roleDefinitionIds": [
              "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
           ],
           "operations": [
              {
                 "operation": "add",
                 "field": "[concat('tags[', parameters('tagName'), ']')]",
                 "value": "[parameters('tagValue')]"
              }
           ]
        }
     }
  }
},"id": "/providers/Microsoft.Authorization/policyDefinitions/4f9dc7db-30c1-420c-b61a-e1d640128d26",
   "type": "Microsoft.Authorization/policyDefinitions",
   "name": "4f9dc7db-30c1-420c-b61a-e1d640128d26"
}

Теперь для адреса электронной почты вы можете попробовать использовать contains или not contains. Информация здесь

Другие вопросы по тегам