#azure #azure-resource-manager
#azure #azure-resource-manager
Вопрос:
Я пытаюсь создать политику для назначения нескольких тегов. При назначении этой политики проверка завершается с ошибкой, если не назначены теги или неправильные теги, определенные в политике. Однако он не проверяет условие allof в шаблоне, что означает, что если я назначу какой-либо один тег, он проверяет и создает ресурс. В идеале он должен проверять наличие всех восьми упомянутых тегов. С этим шаблоном политики мне не ясно, как добавить дополнительные теги принудительного применения в одном шаблоне ARM. Ниже приведен шаблон
"mode": "Indexed",
"policyRule": {
"if": {
"allOf": [
{
"field": "[concat('tags[', parameters('tagName1'), ']')]",
"exists": "false"
},
{
"field": "[concat('tags[', parameters('tagName2'), ']')]",
"exists": "false"
},
{
"field": "[concat('tags[', parameters('tagName3'), ']')]",
"exists": "false"
},
{
"field": "[concat('tags[', parameters('tagName4'), ']')]",
"exists": "false"
},
{
"field": "[concat('tags[', parameters('tagName5'), ']')]",
"exists": "false"
},
{
"field": "[concat('tags[', parameters('tagName6'), ']')]",
"exists": "false"
},
{
"field": "[concat('tags[', parameters('tagName7'), ']')]",
"exists": "false"
},
{
"field": "[concat('tags[', parameters('tagName8'), ']')]",
"exists": "false"
}
]
},
"then": {
"effect": "deny"
}
},
"parameters": {
"tagName1": {
"type": "String",
"metadata": {
"displayName": "Tag name1",
"description": "Name of the tag to enforce"
}
},
"tagName2": {
"type": "String",
"metadata": {
"displayName": "Tag name2",
"description": "Name of the tag to enforce"
}
},
"tagName3": {
"type": "String",
"metadata": {
"displayName": "Tag name3",
"description": "Name of the tag to enforce"
}
},
"tagName4": {
"type": "String",
"metadata": {
"displayName": "Tag name4",
"description": "Name of the tag to enforce"
}
},
"tagName5": {
"type": "String",
"metadata": {
"displayName": "Tag name5",
"description": "Name of the tag to enforce"
}
},
"tagName6": {
"type": "String",
"metadata": {
"displayName": "Tag name6",
"description": "Name of the tag to enforce"
}
},
"tagName7": {
"type": "String",
"metadata": {
"displayName": "Tag name7",
"description": "Name of the tag to enforce"
}
},
"tagName8": {
"type": "String",
"metadata": {
"displayName": "Tag name8",
"description": "Name of the tag to enforce"
}
}
}
}```
Regards,
Sajith
Ответ №1:
Пользовательское определение политики позволяет клиентам определять свои собственные правила для ресурсов в ваших подписках Azure. Это часть инструментария управления и управления Azure, встроенного в Azure.
Если вам не ясно с шаблоном политики о том, как добавлять и применять дополнительные теги в рамках одного шаблона ARM, то на самом деле это довольно просто. Вам нужно добавить дополнительные теги в качестве правил и параметров.
Шаблон ARM, приведенный ниже, поможет вам достичь желаемого результата.
{
"mode": "all",
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"not": {
"field": "[concat('tags[',parameters('tagName1'), ']')]",
"exists": "true"
}
},
{
"not": {
"field": "[concat('tags[',parameters('tagName2'), ']')]",
"exists": "true"
}
},
{
"not": {
"field": "[concat('tags[',parameters('tagName3'), ']')]",
"exists": "true"
}
}
]
},
"then": {
"effect": "deny"
}
},
"parameters": {
"tagName1": {
"type": "String",
"metadata": {
"displayName": "Tag name1",
"description": "Name of the tag to enforce"
}
},
"tagName2": {
"type": "String",
"metadata": {
"displayName": "Tag name2",
"description": "Name of the tag to enforce"
}
},
"tagName3": {
"type": "String",
"metadata": {
"displayName": "Tag name3",
"description": "Name of the tag to enforce"
}
}
...
...
В следующий раз, когда кто-то развернет группу ресурсов без требуемых тегов в подписке, эта политика, назначенная ей, завершится ошибкой.
Я бы посоветовал прочитать этот шаблон политики Azure: помечает документ Microsoft и требует много тегов для групп ресурсов через документ политики Azure для получения дополнительной информации.