إصلاح الموارد غير المتوافقة مع نهج Azure

يمكن وضع الموارد غير المتوافقة مع النهج مع deployIfNotExists أو تأثيرات التعديل في حالة متوافقة من خلال المعالجة. يتم إنجاز المعالجة من خلال مهام المعالجة التي توزع قالب deployIfNotExists أو عمليات تعديل النهج المعين على الموارد والاشتراكات الموجودة، سواء كان هذا التعيين في مجموعة إدارة أو اشتراك أم مجموعة موارد أم مورد فردي. توضح هذه المقالة الخطوات اللازمة لفهم المعالجة وإنجازها باستخدام نهج Azure.

كيفية عمل التحكم في الوصول إلى المعالجة

عندما يبدأ نهج Azure في توزيع قالب عند تقييم نهج deployIfNotExists أو يعدل مورداً عند تقييم تعديل النهج، فإنه يفعل ذلك باستخدام هوية مدارة مقترنة بتعيين النهج. تستخدم تعيينات النهج الهويات المدارة لتخويل موارد Azure. يمكنك استخدام هوية مدارة معينة من قبل النظام يتم إنشاؤها بواسطة خدمة النهج أو هوية معينة من قِبل المستخدم يوفرها المستخدم. يجب تعيين الحد الأدنى لدور (أدوار) التحكم في الوصول استناداً إلى الدور (RBAC) للهوية المدارة المطلوبة لمعالجة الموارد. إذا كانت الهوية المدارة مفقودة الأدوار، يتم عرض خطأ في المدخل أثناء تعيين النهج أو المبادرة. عند استخدام المدخل، يمنح نهج Azure تلقائياً الهوية المدارة الأدوار المدرجة بمجرد بدء التعيين. عند استخدام مجموعة تطوير برامج Azure (SDK)، يجب منح الأدوار يدوياً للهوية المدارة. لا يؤثر موقع الهوية المدارة على عملها باستخدام نهج Azure.

إشعار

لا يؤدي تغيير تعريف النهج إلى تحديث التعيين أو الهوية المدارة المقترنة تلقائياً.

يمكن تكوين أمان المعالجة من خلال الخطوات التالية:

تكوين تعريف النهج

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

"details": {
    ...
    "roleDefinitionIds": [
        "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
        "/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
    ]
}

تستخدم الخاصية roleDefinitionIds معرف المورد الكامل، ولا تأخذ roleName القصير للدور. للحصول على معرف دور "المساهم" في بيئتك، استخدم التعليمات البرمجية لـ Azure CLI التالية:

az role definition list --name "Contributor"

هام

يجب تقييد الأذونات إلى أصغر مجموعة ممكنة عند تعريف roleDefinitionIds ضمن تعريف نهج أو تعيين أذونات إلى هوية مدارة يدوياً. راجع توصيات أفضل ممارسات الهوية المدارة لمزيد من أفضل الممارسات.

تكوين الهوية المُدارة

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

إشعار

عند إنشاء هوية مدارة من خلال المدخل، سيتم منح الأدوار تلقائياً للهوية المدارة. إذا تم تحرير roleDefinitionIds لاحقاً في تعريف النهج، يجب منح الأذونات الجديدة يدوياً، حتى في المدخل.

قم بإنشاء الهوية المُدارة

عند إنشاء تعيين باستخدام المدخل، يمكن لنهج Azure إنشاء هوية مدارة معينة من قبل النظام ومنحها الأدوار المحددة في roleDefinitionIds لتعريف النهج. بدلاً من ذلك، يمكنك تحديد هوية مدارة معينة من قِبل المستخدم تتلقى نفس تعيين الدور.

Screenshot of a policy assignment creating a system-assigned managed identity in East US with Log Analytics Contributor permissions.

لتعيين هوية مدارة معينة من قبل النظام في المدخل:

  1. في علامة التبويب المعالجة في طريقة عرض تعيين الإنشاء/التحرير، ضمن أنواع الهوية المدارة، تأكد من تحديد الهوية المدارة المعينة من قبل النظام.

  2. حدد الموقع الذي سيتم تحديد موقع الهوية المدارة فيه.

  3. لا تقم بتعيين نطاق للهوية المدارة المعينة من قبل النظام لأنه سيتم توريث النطاق من نطاق التعيين.

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

  1. في علامة التبويب المعالجة في طريقة عرض تعيين الإنشاء/التحرير، ضمن أنواع الهوية المدارة، تأكد من تحديد الهوية المدارة المعينة من قبل المستخدم.

  2. حدد النطاق الذي تتم فيه استضافة الهوية المدارة. لا يجب أن يساوي نطاق الهوية المدارة نطاق التعيين، ولكن يجب أن يكون في نفس المستأجر.

  3. ضمن الهويات المعينة للمستخدم الحالي، حدد الهوية المدارة.

منح أذونات للهوية المدارة من خلال أدوار محددة

هام

إذا لم تكن لدى الهوية المدارة الأذونات اللازمة لتنفيذ مهمة المعالجة المطلوبة، فسيتم منحها الأذونات تلقائياً فقط من خلال المدخل. يمكنك تخطي هذه الخطوة في حالة إنشاء هوية مدارة من خلال المدخل.

بالنسبة لجميع الطرق الأخرى، يجب منح الهوية المدارة للتعيين حق الوصول يدوياً من خلال إضافة الأدوار، وإلا سيفشل توزيع المعالجة.

مثال على السيناريوهات التي تتطلب أذونات يدوية:

  • إذا تم إنشاء المهمة من خلال عدة تطوير البرامج Azure (SDK)
  • إذا تم تعديل مورد بواسطة deployIfNotExists أو تعديله خارج نطاق تعيين النهج
  • إذا كان القالب يصل إلى خصائص الموارد خارج نطاق تعيين النهج

هناك طريقتان لمنح الهوية المدارة للتعيين الأدوار المحددة باستخدام المدخل: باستخدام التحكم في الوصول (IAM) أو عن طريق تحرير تعيين النهج أو المبادرة وتحديد حفظ.

لإضافة دور إلى الهوية المدارة للتعيين، اتبع الخطوات التالية:

  1. قم بتشغيل خدمة Azure Policy في مدخل Microsoft Azure من خلال تحديد "All services"، ثم ابحث عن "Policy" وحددها.

  2. حدد "Assignments" على الجانب الأيسر من صفحة Policy في Azure.

  3. حدد موقع التعيين الذي يحتوي على هوية مدارة وحدد الاسم.

  4. ابحث عن خاصية معرف التعيين في صفحة التحرير. سيكون معرف التعيين شيئاً مثل:

    /subscriptions/{subscriptionId}/resourceGroups/PolicyTarget/providers/Microsoft.Authorization/policyAssignments/2802056bfc094dfb95d4d7a5
    

    اسم الهوية المدارة هو الجزء الأخير من معرف مورد التعيين، والذي يكون 2802056bfc094dfb95d4d7a5 في هذا المثال. انسخ هذا الجزء من معرف مورد التعيين.

  5. انتقل إلى المورد أو الحاوية الأصل للموارد (مجموعة الموارد، والاشتراك، ومجموعة الإدارة) التي تحتاج إلى تعريف الدور المضاف يدوياً.

  6. حدد الارتباط التحكم بالوصول (IAM) في صفحة الموارد، ثم حدد + إضافة تعيين الدور في أعلى صفحة التحكم بالوصول.

  7. حدد الدور المناسب الذي يطابق roleDefinitionId من تعريف النهج. اترك تعيين الوصول لتعيينه إلى الإعداد الافتراضي "مستخدم Azure AD أو المجموعة أو التطبيق". في المربع تحديد، الصق جزء معرف مورد التعيين الموجود سابقاً أو اكتبه. بمجرد اكتمال البحث، حدد العنصر بنفس الاسم لتحديد المعرف وحدد حفظ.

إنشاء مهمة معالجة

قم بتشغيل خدمة Azure Policy في مدخل Microsoft Azure من خلال تحديد "All services"، ثم ابحث عن "Policy" وحددها.

Screenshot of searching for Policy in All Services.

الخطوة 1: بدء إنشاء مهمة المعالجة

هناك ثلاث طرق لإنشاء مهمة معالجة من خلال المدخل.

الخيار 1: إنشاء مهمة معالجة من صفحة المعالجة

  1. حدد المعالجة على الجانب الأيسر من صفحة نهج Azure.

    Screenshot of the Remediation node on the Policy page.

  2. يتم عرض كافة deployIfNotExists وتعديل تعيينات النهج في علامة التبويب النهج للمعالجة. حدد واحداً مع الموارد غير المتوافقة لفتح صفحة مهمة المعالجة الجديدة.

  3. اتبع الخطوات لتحديد تفاصيل مهمة المعالجة.

الخيار 2: إنشاء مهمة معالجة من تعيين نهج غير متوافق

  1. حدد التوافق على الجانب الأيمن من صفحة نهج Azure.

  2. حدد نهجًا غير متوافق أو تعيين مبادرة تحتوي على deployIfNotExists أو تعديل التأثيرات.

  3. حدد الزر إنشاء مهمة معالجة في أعلى الصفحة لفتح صفحة مهمة المعالجة الجديدة.

  4. اتبع الخطوات لتحديد تفاصيل مهمة المعالجة.

الخيار 3: إنشاء مهمة معالجة أثناء تعيين النهج

إذا كان تعريف النهج أو المبادرة المراد تعيينه يحتوي على تأثير deployIfNotExists أو Modify، فإن علامة تبويب المعالجة توفر خيار إنشاء مهمة معالجة، والذي ينشئ مهمة معالجة في نفس الوقت، مثل تعيين النهج.

إشعار

هذا هو الأسلوب الأكثر انسيابية لإنشاء مهمة معالجة، ويتم دعمه للنهج المعينة على الاشتراك. بالنسبة للنهج المعينة في مجموعة إدارة، يجب إنشاء مهام المعالجة باستخدام الخيار 1 أو الخيار 2 بعد أن يحدد التقييم توافق الموارد.

  1. من معالج التعيين في المدخل، انتقل إلى علامة التبويب المعالجة. حدد خانة الاختيار لإنشاء مهمة معالجة.

  2. إذا تم بدء مهمة المعالجة من تعيين مبادرة، فحدد النهج للمعالجة من القائمة المنسدلة.

  3. قم بتكوين الهوية المدارة وملء باقي المعالج. سيتم إنشاء مهمة المعالجة عند إنشاء التعيين.

الخطوة 2: تحديد تفاصيل مهمة المعالجة

تنطبق هذه الخطوة فقط عند استخدام الخيار 1 أو الخيار 2 لبدء إنشاء مهمة المعالجة.

  1. إذا تم بدء مهمة المعالجة من تعيين مبادرة، فحدد النهج للمعالجة من القائمة المنسدلة. يمكن معالجة نهج deployIfNotExists أو تعديله من خلال مهمة معالجة واحدة في كل مرة.

  2. تعديل إعدادات المعالجة على الصفحة اختياريا. للحصول على معلومات حول عناصر تحكم كل إعداد، راجع بنية مهمة المعالجة.

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

    Screenshot of the Remediate node and the grid of resources to remediate.

  4. ابدأ مهمة المعالجة بمجرد تصفية الموارد عن طريق تحديد المعالجة. تفتح صفحة توافق النهج على علامة التبويب مهام المعالجة لإظهار حالة تقدم المهام. تبدأ عمليات التوزيع التي تم إنشاؤها بواسطة مهمة المعالجة على الفور.

    Screenshot of the Remediation tasks tab and progress of existing remediation tasks.

الخطوة 3: تعقب تقدم مهمة المعالجة

  1. انتقل إلى علامة التبويب مهام المعالجة في صفحة المعالجة. انقر فوق مهمة معالجة لعرض تفاصيل حول التصفية المستخدمة والحالة الحالية وقائمة بالموارد التي تتم معالجتها.

  2. من صفحة تفاصيل مهمة المعالجة، انقر بزر الماوس الأيمن فوق مورد لعرض توزيع مهمة المعالجة أو المورد. في نهاية الصف، حدد الأحداث ذات الصلة لمشاهدة تفاصيل، مثل رسالة خطأ.

    Screenshot of the context menu for a resource on the Remediate task tab.

تتم إضافة الموارد الموزعة من خلال مهمة معالجة إلى علامة التبويب الموارد الموزعة في صفحة تفاصيل تعيين النهج.

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