【问题标题】:Inherit multiple tags from subscription/resource group从订阅/资源组继承多个标签
【发布时间】:2022-12-19 21:48:58
【问题描述】:

任何人都可以帮助我创建策略定义以从订阅中继承多个或所有标签吗?我看到允许继承单个标签的内置策略,但我不确定如何修改该策略定义以包含多个标签。

这是内置定义的样子:

{

"mode": "Indexed",

"policyRule": {

"if": {

"allOf": [

{

"field": "[concat('tags[', parameters('tagName'), ']')]",

"exists": "false"

},

{

"value": "[subscription().tags[parameters('tagName')]]",

"notEquals": ""

}

]

},

"then": {

"effect": "modify",

"details": {

"roleDefinitionIds": [

"/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"

],

"operations": [

{

"operation": "add",

"field": "[concat('tags[', parameters('tagName'), ']')]",

"value": "[subscription().tags[parameters('tagName')]]"

}

]

}

}

},

"parameters": {

"tagName": {

"type": "String",

"metadata": {

"displayName": "Tag Name",

"description": "Name of the tag, such as 'environment'"

}

}

}

}

【问题讨论】:

    标签: azure


    【解决方案1】:

    没有简单的方法来继承带有策略的多个标签。您需要像下面这样一一添加..

    "policyRule": {
          "if": {
            "anyOf": [
              {
                "exists": "false",
                "field": "tags['tag1']"
              },
              {
                "exists": "false",
                "field": "tags['tag2']"
              },
              {
                "exists": "false",
                "field": "tags['tag3']"
              }          
            ]
          },
          "then": {
            "details": {
              "operations": [
                {
                  "field": "tags['tag1']",
                  "operation": "add",
                  "value": "[subscription().tags['tag1']]"
                },
                {
                  "field": "tags['tag2']",
                  "operation": "add",
                  "value": "[subscription().tags['tag2']]"
                },
                {
                  "field": "tags['tag3']",
                  "operation": "add",
                  "value": "[subscription().tags['tag3']]"
                }            
              ],
              "roleDefinitionIds": [
                "/providers/Microsoft.Authorization/roleDefinitions/*****"
              ]
            },
            "effect": "modify"
          }
        }
    

    【讨论】:

      【解决方案2】:

      我已经弄清楚了。请参阅下面的代码:

        "properties": {
          "displayName": "Add multiple tags to resource if missing",
          "policyType": "Custom",
          "mode": "Indexed",
          "description": "Adds multiple tags with its value from the parent resource group 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.",
          "parameters": {
            "tagName1": {
              "type": "String",
              "metadata": {
                "displayName": "First Tag Name",
                "description": "Name of the tag, such as 'environment'"
              }
            },
            "tagName2": {
              "type": "String",
              "metadata": {
                "displayName": "Second Tag Name",
                "description": "Name of the tag, such as 'environment'"
              }
            },
            "tagName3": {
              "type": "String",
              "metadata": {
                "displayName": "Third Tag Name",
                "description": "Name of the tag, such as 'environment'"
              }
            },
            "tagName4": {
              "type": "String",
              "metadata": {
                "displayName": "Forth Tag Name",
                "description": "Name of the tag, such as 'environment'"
              }
            },
            "tagName5": {
              "type": "String",
              "metadata": {
                "displayName": "Fifth Tag Name",
                "description": "Name of the tag, such as 'environment'"
              }
            },
            "tagName6": {
              "type": "String",
              "metadata": {
                "displayName": "Sixth Tag Name",
                "description": "Name of the tag, such as 'environment'"
              }
            },
            "tagName7": {
              "type": "String",
              "metadata": {
                "displayName": "Seventh Tag Name",
                "description": "Name of the tag, such as 'environment'"
              }
            },
            "tagName8": {
              "type": "String",
              "metadata": {
                "displayName": "Eighth Tag Name",
                "description": "Name of the tag, such as 'environment'"
              }
            },
            "tagName9": {
              "type": "String",
              "metadata": {
                "displayName": "Ninth Tag Name",
                "description": "Name of the tag, such as 'environment'"
              }
            }
          },
          "policyRule": {
            "if": {
              "anyOf": [
                {
                  "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"
                },
                {
                  "field": "[concat('tags[', parameters('tagName9'), ']')]",
                  "exists": "false"
                }
              ]
            },
            "then": {
              "effect": "modify",
              "details": {
                "roleDefinitionIds": [
                  "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
                ],
                "operations": [
                  {
                    "operation": "add",
                    "field": "[concat('tags[', parameters('tagName1'), ']')]",
                    "value": "[resourceGroup().tags[parameters('tagName1')]]"
                  },
                  {
                    "operation": "add",
                    "field": "[concat('tags[', parameters('tagName2'), ']')]",
                    "value": "[resourceGroup().tags[parameters('tagName2')]]"
                  },
                  {
                    "operation": "add",
                    "field": "[concat('tags[', parameters('tagName3'), ']')]",
                    "value": "[resourceGroup().tags[parameters('tagName3')]]"
                  },
                  {
                    "operation": "add",
                    "field": "[concat('tags[', parameters('tagName4'), ']')]",
                    "value": "[resourceGroup().tags[parameters('tagName4')]]"
                  },
                  {
                    "operation": "add",
                    "field": "[concat('tags[', parameters('tagName5'), ']')]",
                    "value": "[resourceGroup().tags[parameters('tagName5')]]"
                  },
                  {
                    "operation": "add",
                    "field": "[concat('tags[', parameters('tagName6'), ']')]",
                    "value": "[resourceGroup().tags[parameters('tagName6')]]"
                  },
                  {
                    "operation": "add",
                    "field": "[concat('tags[', parameters('tagName7'), ']')]",
                    "value": "[resourceGroup().tags[parameters('tagName7')]]"
                  },
                  {
                    "operation": "add",
                    "field": "[concat('tags[', parameters('tagName8'), ']')]",
                    "value": "[resourceGroup().tags[parameters('tagName8')]]"
                  },
                  {
                    "operation": "add",
                    "field": "[concat('tags[', parameters('tagName9'), ']')]",
                    "value": "[resourceGroup().tags[parameters('tagName9')]]"
                  }
                ]
              }
            }
          }
        }
      }
      

      【讨论】:

        【解决方案3】:

        如果我需要多个标签来添加和替换而不是(如果缺少),该怎么办。

        【讨论】:

          猜你喜欢
          • 2020-10-07
          • 2022-09-29
          • 1970-01-01
          • 2019-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-02
          • 2020-01-17
          相关资源
          最近更新 更多