Политика 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. Информация здесь