Pola Azure Policy: tag

Tag adalah bagian penting dalam mengelola, menata, dan mengatur sumber daya Azure Anda. Azure Policy memungkinkan konfigurasi tag pada sumber daya baru dan yang sudah ada dalam skala besar dengan efek modifikasi dan tugas remediasi.

Sampel 1: Membuat parameter tag

Definisi kebijakan ini menggunakan dua parameter, tagName dan tagValue untuk mengatur apa yang dicari penugasan kebijakan pada grup sumber daya. Format ini memungkinkan definisi kebijakan agar digunakan untuk sejumlah kombinasi nama tag dan nilai tag, tetapi hanya mempertahankan satu definisi kebijakan.

Catatan

Meskipun pola definisi kebijakan ini mirip dengan yang ada di Pola: Parameter - Sampel #1, sampel ini menggunakan modeSemua dan menargetkan grup sumber daya.

{
    "properties": {
        "displayName": "Add or replace a tag on resource groups",
        "mode": "All",
        "description": "Adds or replaces the specified tag and value when any resource group is created or updated. Existing resource groups can be remediated by triggering a remediation task.",
        "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": {
                "allOf": [{
                        "field": "type",
                        "equals": "Microsoft.Resources/subscriptions/resourceGroups"
                    },
                    {
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "notEquals": "[parameters('tagValue')]"
                    }
                ]
            },
            "then": {
                "effect": "modify",
                "details": {
                    "roleDefinitionIds": [
                        "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
                    ],
                    "operations": [{
                        "operation": "addOrReplace",
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "value": "[parameters('tagValue')]"
                    }]
                }
            }
        }
    }
}

Sampel 1: Penjelasan

"properties": {
    "displayName": "Add or replace a tag on resource groups",
    "mode": "All",
    "description": "Adds or replaces the specified tag and value when any resource group is created or updated. Existing resource groups can be remediated by triggering a remediation task.",
    "metadata": {
        "category": "Tags"
    },

Dalam sampel ini, mode diatur ke Semua karena menargetkan grup sumber daya. Dalam kebanyakan kasus, mode harus diatur ke Terindeks saat bekerja dengan tag. Untuk informasi selengkapnya, lihat mode.

"if": {
    "allOf": [{
            "field": "type",
            "equals": "Microsoft.Resources/subscriptions/resourceGroups"
        },
        {
            "field": "[concat('tags[', parameters('tagName'), ']')]",
            "notEquals": "[parameters('tagValue')]"
        }
    ]
},

Dalam bagian definisi kebijakan ini, concat menggabungkan parameter tagName dibuat parameternya dan format tags['name'] untuk memberi tahu bidang agar mengevaluasi tag tersebut untuk tagValue parameter. Karena notEquals digunakan, jika tag tagName tidak sama dengan tagValue, efek modifikasi akan dipicu.

"operations": [{
    "operation": "addOrReplace",
    "field": "[concat('tags[', parameters('tagName'), ']')]",
    "value": "[parameters('tagValue')]"
}]

Di sini, format yang sama untuk menggunakan nilai tag yang dibuat parameternya digunakan oleh operasi addOrReplace untuk membuat atau memperbarui tag ke nilai yang diinginkan pada grup sumber daya yang dievaluasi.

Sampel 2: Mewarisi nilai tag dari grup sumber daya

Definisi kebijakan ini menggunakan tagName parameter untuk menentukan nilai tag mana yang akan diwarisi dari grup sumber daya induk.

{
    "properties": {
        "displayName": "Inherit a tag from the resource group",
        "mode": "Indexed",
        "description": "Adds or replaces the specified tag and value from the parent resource group when any resource is created or updated. Existing resources can be remediated by triggering a remediation task.",
        "metadata": {
            "category": "Tags"
        },
        "parameters": {
            "tagName": {
                "type": "String",
                "metadata": {
                    "displayName": "Tag Name",
                    "description": "Name of the tag, such as 'environment'"
                }
            }
        },
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "notEquals": "[resourceGroup().tags[parameters('tagName')]]"
                    },
                    {
                        "value": "[resourceGroup().tags[parameters('tagName')]]",
                        "notEquals": ""
                    }
                ]
            },
            "then": {
                "effect": "modify",
                "details": {
                    "roleDefinitionIds": [
                        "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
                    ],
                    "operations": [{
                        "operation": "addOrReplace",
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "value": "[resourceGroup().tags[parameters('tagName')]]"
                    }]
                }
            }
        }
    }
}

Sampel 2: Penjelasan

"properties": {
    "displayName": "Inherit a tag from the resource group",
    "mode": "Indexed",
    "description": "Adds or replaces the specified tag and value from the parent resource group when any resource is created or updated. Existing resources can be remediated by triggering a remediation task.",
    "metadata": {
        "category": "Tags"
    },

Dalam sampel ini, mode diatur ke Terindeks karena tidak menargetkan grup sumber daya atau langganan meskipun mendapatkan nilai dari grup sumber daya. Untuk informasi selengkapnya, lihat mode.

"if": {
    "allOf": [{
            "field": "[concat('tags[', parameters('tagName'), ']')]",
            "notEquals": "[resourceGroup().tags[parameters('tagName')]]"
        },
        {
            "value": "[resourceGroup().tags[parameters('tagName')]]",
            "notEquals": ""
        }
    ]
},

policyRule.if menggunakan concat seperti Sampel #1 untuk mengevaluasi nilai tagName, tetapi menggunakan fungsi resourceGroup() untuk membandingkannya dengan nilai tag yang sama pada grup sumber daya induk. Klausul kedua di sini memastikan bahwa tag pada grup sumber daya memiliki nilai dan tidak null.

"operations": [{
    "operation": "addOrReplace",
    "field": "[concat('tags[', parameters('tagName'), ']')]",
    "value": "[resourceGroup().tags[parameters('tagName')]]"
}]

Di sini, nilai yang ditetapkan ke tag tagName pada sumber daya juga menggunakan fungsi resourceGroup() untuk mendapatkan nilai dari grup sumber daya induk. Dengan begitu, Anda dapat mewarisi tag dari grup sumber daya induk. Jika Anda sudah membuat sumber daya tetapi tidak menambahkan tag, definisi kebijakan yang sama ini dan tugas remediasi dapat memperbarui sumber daya yang ada.

Langkah berikutnya