البرنامج التعليمي: إدارة التحكم بالعلامات باستخدام نهج Azure

تعد⁧⁩العلامات⁧⁩ جزءًا أساسيًا من تنظيم مواردك على Azure إلى التصنيف. عند اتباع⁧⁩ أفضل الممارسات لإدارة العلامات⁧⁩، يمكن أن تكون العلامات هي الأساس لتطبيق سياسات عملك باستخدام Azure Policy أو⁧⁩ تتبع التكاليف باستخدام أداة إدارة التكاليف⁧⁩. بصرف النظر عن كيفية استخدامك للعلامات أو سبب استخدامها، من المهم أن تتمكن من إضافة وتغيير وإزالة هذه العلامات سريعًا على موارد Azure. لمعرفة ما إذا كان مورد Azure يدعم وضع العلامات، راجع ⁧⁩دعم العلامات⁧⁩.

صُمم تأثير ⁧⁩تعديل ⁧⁩نهج Azure للمساعدة في إدارة العلامات بصرف النظر عن مستوى تحكمك في الموارد. ⁧⁩التعديل⁧⁩ يساعد عندما:

  • تكون جديد على السحابة، وليس لديك صلاحية إدارة العلامات
  • لديك الآلاف من الموارد مسبقًا دون صلاحية إدارة العلامات
  • لديك مسبقًا تصنيف موجود بحاجة إلى التغيير

في هذا البرنامج التعليمي، ستقوم بتنفيذِ المهام التالية:

  • تحديد متطلبات عملك
  • تعيين كل مطلب إلى معرف النهج
  • تجميع سياسات العلامة في مبادرة

المتطلبات الأساسية

لإكمال هذا البرنامج التعليمي، تحتاج إلى اشتراك Azure. في حال لم تشترك في Azure، تستطيع إنشاء⁧⁩حساب مجّاني⁧⁩ قبل البدء.

تعريف المتطلبات

مثل أي تطبيق صحيح لضوابط التحكم، يجب أن تأتي المتطلبات وفقًا لاحتياجات عملك، وأن تُفهم بشكل صحيح قبل إنشاء أي ضوابط تقنية. متطلبات عملنا لسيناريو البرنامج التعليمي هذا، تشتمل على البنود التالية:

  • علامتان مطلوبتان على جميع الموارد:⁧⁩ CostCenter⁧⁩ و⁧⁩ ⁧⁩Env
  • يجب أن يظهر⁧⁩CostCenter ⁧⁩في جميع الحاويات والموارد الفردية
    • الموارد تكتسب من الحاوية التي هي فيها؛ ولكن قد يتم تجاوزها فرديًا
  • يجب أن يظهر⁧⁩CostCenter ⁧⁩في جميع الحاويات والموارد الفردية
    • الموارد تحدد البيئة حسب نظام تسمية الحاوية، وقد لا يتم تجاوزها
    • كافة الموارد في الحاوية تمثل جزء من البيئة نفسها

تكوين علامة CostCenter

فيما يتعلق ببيئة Azure التي تديرها Azure Policy، تتطلب متطلبات علامة⁧⁩ CostCenter⁧⁩ النتائج التالية:

  • رفض مجموعات العلامات التي تفتقد لعلامة⁧⁩CostCenter⁧
  • عدّل الموارد لإضافة علامة⁧⁩CostCenter⁧⁩من مجموعة الموارد الرئيسية في حال فقدانها

رفض فقدان مجموعات الموارد لعلامة CostCenter

نظرًا لأنه لا يمكن تحديد ⁧⁩مركز التكاليف⁧⁩ لمجموعة الموارد من خلال اسم مجموعة الموارد؛ لذا يجب أن يكون لها العلامة المحددة في الطلب لإنشاء مجموعة الموارد. تمنع قاعدة السياسة التالية ذات التأثير الرفض إنشاء أو تحديث مجموعات الموارد التي لا تحتوي على علامة CostCenter:

"if": {
    "allOf": [{
            "field": "type",
            "equals": "Microsoft.Resources/subscriptions/resourceGroups"
        },
        {
            "field": "tags['CostCenter']",
            "exists": false
        }
    ]
},
"then": {
    "effect": "deny"
}

ملاحظة

نظرًا لأن قاعدة النهج هذه تستهدف مجموعة موارد، يجب أن يكون ⁧⁩الوضع⁧⁩ في تعريف النهج هو "الكل" بدلاً من "مفهرس".

تعديل الموارد لكسب علامة CostCenterعند فقدانها

الحاجة الثانية لـ⁧⁩ CostCenter⁧⁩ هي أن تكتسب أي موارد علامة من مجموعة الموارد الأصلية عند فقدانها. إذا عُرفت العلامة مسبقًا على المورد، حتى عند اختلافها عن مجموعة الموارد الأصل، يجب تركها وحدها. تستخدم قاعدة النهج التالي ⁧⁩تعديل⁧⁩:

"policyRule": {
    "if": {
        "field": "tags['CostCenter']",
        "exists": "false"
    },
    "then": {
        "effect": "modify",
        "details": {
            "roleDefinitionIds": [
                "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
            ],
            "operations": [{
                "operation": "add",
                "field": "tags['CostCenter']",
                "value": "[resourcegroup().tags['CostCenter']]"
            }]
        }
    }
}

تستخدم قاعدة النهج هذه عملية ⁧⁩الإضافة⁧⁩ بدلاً من⁧⁩ addOrReplace⁧⁩؛ لأننا لا نريد تغيير قيمة العلامة إذا كانت⁧⁩ موجودة⁧⁩ عند معالجة الموارد الحالية. كما أنها تستخدم⁧[resourcegroup()]⁩دالة النموذج للحصول على قيمة العلامة من مجموعة الموارد الأصلية.

ملاحظة

نظرًا لأن قاعدة النهج هذه تستهدف مجموعة موارد، يجب أن يكون ⁧⁩الوضع⁧⁩ في تعريف النهج هو "الكل" بدلاً من "مفهرس". يضمن هذا التكوين أيضًا تخطي هذا النهج لمجموعات الموارد.

تكوين علامة Env

فيما يتعلق ببيئة Azure التي تديرها Azure Policy، تتطلب متطلبات علامة⁧⁩ CostCenter⁧⁩ النتائج التالية:

  • قم بتعديل علامة⁧⁩ Env⁧⁩ في مجموعة الموارد بناءً على مخطط التسمية لمجموعة الموارد
  • قم بتعديل علامة⁧⁩ Env⁧⁩ في جميع الموارد في مجموعة الموارد إلى نفس مجموعة الموارد الأصلية

تعديل مجموعة الموارد Env العلامة استنادًا إلى الاسم

نهج ⁧⁩التعديل⁧⁩ مطلوب لكل بيئة موجودة في بيئات Azure الخاصة بك. يتشابه نهج التعديل كل منها بتعريف النهج:

"policyRule": {
    "if": {
        "allOf": [{
            "field": "type",
            "equals": "Microsoft.Resources/subscriptions/resourceGroups"
        },
        {
            "field": "name",
            "like": "prd-*"
        },
        {
            "field": "tags['Env']",
            "notEquals": "Production"
        }

    ]
    },
    "then": {
        "effect": "modify",
        "details": {
            "roleDefinitionIds": [
                "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
            ],
            "operations": [{
                "operation": "addOrReplace",
                "field": "tags['Env']",
                "value": "Production"
            }]
        }
    }
}

ملاحظة

نظرًا لأن قاعدة النهج هذه تستهدف مجموعة موارد، يجب أن يكون ⁧⁩الوضع⁧⁩ في تعريف النهج هو "الكل" بدلاً من "مفهرس".

يتطابق هذا النهج فقط مع مجموعات الموارد بمخطط تسمية العينة المستخدمة لموارد الإنتاج⁧prd-. يمكن تحقيق مخطط تسمية أعقد من خلال تحقيق العديد من⁧⁩ شروط المطابقة ⁧⁩بدلاً من الحالة الفردية⁧⁩ كما في هذا المثال⁧⁩.

تعديل الموارد لكسب علامة Env

تتطلب متطلبات العمل أن يكون لجميع الموارد علامة⁧⁩ Env⁧⁩ التي تستخدمها مجموعة الموارد الرئيسية. لا يمكن تجاوز هذه العلامة؛ لذلك سنستخدم عملية⁧⁩ addOrReplace ⁧⁩مع تأثيرات ⁧⁩التعديل⁧⁩. يشابه نموذج تعديل النهج القاعدة التالية:

"policyRule": {
    "if": {
        "anyOf": [{
            "field": "tags['Env']",
            "notEquals": "[resourcegroup().tags['Env']]"
        },
        {
            "field": "tags['Env']",
            "exists": false
        }
    ]
    },
    "then": {
        "effect": "modify",
        "details": {
            "roleDefinitionIds": [
                "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
            ],
            "operations": [{
                "operation": "addOrReplace",
                "field": "tags['Env']",
                "value": "[resourcegroup().tags['Env']]"
            }]
        }
    }
}

ملاحظة

نظرًا لأن قاعدة النهج هذه تستهدف مجموعة موارد، يجب أن يكون ⁧⁩الوضع⁧⁩ في تعريف النهج هو "الكل" بدلاً من "مفهرس". يضمن هذا التكوين أيضًا تخطي هذا النهج لمجموعات الموارد.

تبحث قاعدة النهج هذه عن أي مورد ليس له قيمة مجموعات الموارد الأصلية لعلامة⁧⁩ Env ⁧⁩أو يفتقد إلى علامة⁧Env.⁧ تم تعيين علامة⁧⁩Env⁧⁩الخاصة بالموارد المتطابقة على قيمة مجموعات الموارد الأصلية، حتى إذا كانت العلامة موجودة مسبقًا على المورد وبقيمة مختلفة.

تعيين المبادرة وإصلاح الموارد

بمجرد إنشاء نهج العلامة أعلاه، تنضم إلى مبادرة واحدة لإدارة العلامات وتعينها لمجموعة إدارة أو اشتراك. تقوم المبادرة والسياسات المضمنة بعد ذلك بتقييم امتثال الموارد الحالية، وتغيير الطلبات الخاصة بالموارد الجديدة أو المحدثة التي تتطابق مع خاصية⁧⁩ if ⁧⁩في قاعدة النهج. ومع ذلك، لا يقوم النهج تلقائيًا بتحديث الموارد غير المتوافقة المتوفرة مع تغييرات العلامة المعرفة.

وكما⁧⁩ سياسات publishIfNotExists⁧⁩، تستعين سياسة⁧⁩ التعديل⁧⁩ بمهام الإصلاح لتغيير الموارد الحالية غير المتوافقة. اتبع التوجيهات الخاصة⁧⁩ بموارد آلية الإصلاح⁧⁩ لتحديد مواردك⁧⁩المعدلة⁧⁩غير المتوافقة، وتصحيح العلامات بالتصنيف الذي حددته.

تنظيف الموارد

إذا انتهيت من العمل بالموارد من هذا البرنامج التعليمي، فاتبع الخطوات التالية لحذف أي من التعيينات أو التعريفات المنشأة أعلاه:

  1. حدد "Definitions" (أو "Assignments" إذا كنت تحاول حذف تعيين) ضمن "Authoring" في الجانب الأيسر من صفحة Azure Policy.

  2. ابحث عن المبادرة الجديدة أو معرف النهج (أو التعيين) الذي تريد إزالته.

  3. انقر بزر الماوس الأيمن فوق الصف أو حدد علامة القطع في نهاية التعريف (أو التعيين)، ثم حدد ⁧⁩"Delete definition"⁧⁩ (أو ⁧⁩"Delete assignment"⁧⁩).

مراجعة

في هذا البرنامج التعليمي، ستتعلم المهام التالية:

  • تحديد متطلبات عملك
  • تعيين كل مطلب إلى معرف النهج
  • تجميع سياسات العلامة في مبادرة

الخطوات التالية

لمعرفة المزيد حول بنى تعريفات النهج، اطلع على هذه المقالة: