نمط نهج Azure: العلامات
تعد العلامات جزءًا مهمًا من إدارة وتنظيم والتحكم في موارد Azure. يتيح Azure Policy تكوين العلامات على مواردك الجديدة والحالية على نطاق واسع باستخدام تأثير التعديل ومهام الإصلاح.
نموذج 1: معلمة العلامات
يستخدم تعريف النهج هذا معلمتين هما، tagName وtagValue، لتعيين ما يبحث عنه تعيين النهج على الموارد. يسمح هذا التنسيق باستخدام تعريف النهج لأي عدد من مجموعات اسم العلامة وقيمتها، مع الاحتفاظ بتعريف نهج واحد فقط.
ملاحظة
حيث يشبه نمط تعريف النهج هذا النمط في نمط: معلمات - نموذج #1، يستخدم هذا النموذج وضعالكل، ويستهدف مجموعات الموارد.
{
"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')]"
}]
}
}
}
}
}
نموذج 1: الشرح
"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"
},
في هذه العينة، يتم تعيين الوضع إلى الكل؛ لأنه يستهدف مجموعة الموارد. في معظم الحالات، يجب تعيين الوضع إلى مفهرس عند العمل مع العلامات. لمزيدٍ من المعلومات، راجع الأوضاع.
"if": {
"allOf": [{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"field": "[concat('tags[', parameters('tagName'), ']')]",
"notEquals": "[parameters('tagValue')]"
}
]
},
في هذا الجزء من تعريف النهج، concat
يجمع بين المعلمة tagName ذات المعلمة tags['name']
، والتنسيق الذي بدوره يجهزالحقل لتقييم هذه العلامة لعلامة المعلمةValue.
نظرًا لاستخدام notEquals، إذا كانت tags[tagName]لا تساوي tagValue، فسيتم تشغيل تأثير التعديل.
"operations": [{
"operation": "addOrReplace",
"field": "[concat('tags[', parameters('tagName'), ']')]",
"value": "[parameters('tagValue')]"
}]
هنا، يتم استخدام نفس التنسيق لاستخدام قيم العلامات ذات المعلمات نت خلال عملية addOrReplaceلإنشاء أو تحديث العلامة إلى القيمة المطلوبة في مجموعة الموارد المقيمة.
نموذج 2: اكتساب قيمة العلامة من مجموعة الموارد
يستخدم تعريف النهج هذا المعلمة tagName لتحديد قيمة العلامة التي يجب أن تُكتسب من مجموعة الموارد الأصل.
{
"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')]]"
}]
}
}
}
}
}
نموذج 2: الشرح
"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"
},
في هذه العينة، يتم تعيين الوضععلىمفهرس؛ لأنه لا يستهدف مجموعة موارد، أو اشتراك على الرغم من حصوله على القيمة من مجموعة الموارد. لمزيدٍ من المعلومات، راجع الأوضاع.
"if": {
"allOf": [{
"field": "[concat('tags[', parameters('tagName'), ']')]",
"notEquals": "[resourceGroup().tags[parameters('tagName')]]"
},
{
"value": "[resourceGroup().tags[parameters('tagName')]]",
"notEquals": ""
}
]
},
يستخدم policyRule.ifconcat
مثل نموذج #1 لتقييم قيمة tagName'؛ ولكن يستخدم resourceGroup()
الدالة لمقارنتها بقيمة نفس العلامة على مجموعة الموارد الأصل. تتحقق الجملة الثانية هنا من أن العلامة الموجودة في مجموعة الموارد لها قيمة وليست خالية.
"operations": [{
"operation": "addOrReplace",
"field": "[concat('tags[', parameters('tagName'), ']')]",
"value": "[resourceGroup().tags[parameters('tagName')]]"
}]
هنا، القيمة التي يتم تعيينها إلى العلامة tagName على المورد تستخدم resourceGroup()
الدالة أيضًا للحصول على القيمة من مجموعة الموارد الأصل. وبهذه الطريقة، يمكنك اكتساب العلامات من مجموعات الموارد الأصل. إذا قمت بالفعل بإنشاء المورد، ولكنك لم تقم بإضافة العلامة، يمكن لتعريف السياسة ومهمة الإصلاحنفسهما تحديث الموارد الموجودة.
الخطوات التالية
- مراجعة الأنماط والتعريفات المضمنة الأخرى.
- اطلع على تصميم تعريف Azure Policy.
- اطلع على فهم تأثيرات النهج.