بنية الإعفاء من Azure Policy

تستخدم إعفاءات Azure Policy لإعفاء مورد ما هرميًا أو فرديًا من تقييم المبادرات أو التعريفات. يتم احتساب الموارد التي تعفي من الامتثال الكلي، ولكن لا يمكن تقييمها أو الحصول على تنازل مؤقت. لمزيد من المعلومات، راجع فهم القابلية للتطبيق في نهج Azure. تعمل إعفاءات نهج Azure أيضا مع أوضاع Resource Manager التالية: Microsoft.Kubernetes.Data وMicrosoft.KeyVault.Data وMicrosoft.Network.Data.

يمكنك استخدام JavaScript Object Notation (JSON) لإنشاء استثناء نهج. يحتوي استثناء النهج على عناصر من أجل:

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

على سبيل المثال، يظهر JSON التالي استثناء نهج في فئة التنازل لمورد إلى تعيين مبادرة يسمى resourceShouldBeCompliantInit. المورد معفى من اثنين فقط من تعريفات النهج في المبادرة، customOrgPolicy تعريف النهج المخصص ( policyDefinitionReferenceId: requiredTags) وتعريف النهج المضمن للمواقع المسموح بها ( policyDefinitionReferenceId : allowedLocations):

{
    "id": "/subscriptions/{subId}/resourceGroups/ExemptRG/providers/Microsoft.Authorization/policyExemptions/resourceIsNotApplicable",
    "apiVersion": "2020-07-01-preview",
    "name": "resourceIsNotApplicable",
    "type": "Microsoft.Authorization/policyExemptions",
    "properties": {
        "displayName": "This resource is scheduled for deletion",
        "description": "This resources is planned to be deleted by end of quarter and has been granted a waiver to the policy.",
        "metadata": {
            "requestedBy": "Storage team",
            "approvedBy": "IA",
            "approvedOn": "2020-07-26T08:02:32.0000000Z",
            "ticketRef": "4baf214c-8d54-4646-be3f-eb6ec7b9bc4f"
        },
        "policyAssignmentId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyAssignments/resourceShouldBeCompliantInit",
        "policyDefinitionReferenceIds": [
            "requiredTags",
            "allowedLocations"
        ],
        "exemptionCategory": "waiver",
        "expiresOn": "2020-12-31T23:59:00.0000000Z",
        "assignmentScopeValidation": "Default"
    }
}

الاسم المعروض والوصف

يمكنك استخدام displayNameوالوصف لتحديد استثناء النهج وتوفير سياق لاستخدامه مع المورد المحدد. displayName يحتوي على حد أقصى يبلغ 128 حرفًا وdescription يحتوي على حد أقصى يبلغ 512 حرفًا.

بيانات التعريف

تسمح خاصية بيانات التعريف بإنشاء أي خاصية تابعة مطلوبة لتخزين المعلومات ذات الصلة. في المثال، تحتوي الخصائص requestedBy و approvedBy و approvedOn و ticketRef على قيم العملاء لتوفير معلومات حول من طلب الإعفاء ومن وافق عليه ومتى وبطاقة تعقب داخلية للطلب. تعد خصائص بيانات التعريف هذه أمثلة، ولكنها ليست مطلوبة ولا تقتصر بيانات التعريف على هذه الخصائص التابعة.

معرف تعيين النهج

يجب أن يكون هذا الحقل اسم المسار الكامل لتعيين نهج أو تعيين مبادرة. policyAssignmentId هي سلسلة وليست صفيفًا. تحدد هذه الخاصية التعيين الذي يتم إعفاء التسلسل الهرمي للمورد الأصل أو المورد الفردي منه.

معرفات تعريف النهج

إذا كان policyAssignmentId لتعيين مبادرة، يمكن استخدام الخاصية policyDefinitionReferenceIds لتحديد تعريف (تعريفات) النهج في المبادرة التي يحتوي مورد الموضوع على استثناء منها. نظرًا إلى أنه قد يتم إعفاء المورد من تعريف نهج مضمن واحد أو أكثر، فإن هذه الخاصية عبارة عن صفيف. يجب أن تتطابق القيم مع القيم الموجودة في تعريف المبادرة في الحقول policyDefinitions.policyDefinitionReferenceId.

فئة الإعفاء

توجد فئتان للإعفاء وتستخدمان لتجميع الإعفاءات:

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

انتهاء الصلاحية

لتعيين عندما لا يكون التسلسل الهرمي لمورد أو مورد فردي معفاة من التعيين، قم بتعيين الخاصية expiresOn. يجب أن تكون هذه الخاصية الاختيارية بتنسيق yyyy-MM-ddTHH:mm:ss.fffffffZUniversal ISO 8601 DateTime.

إشعار

لا يتم حذف استثناءات النهج عند الوصول إلى التاريخ expiresOn. يتم الاحتفاظ بالعنصر لحفظ السجلات، ولكن لم يعد يتم احترام الإعفاء.

محددات الموارد

تدعم الإعفاءات خاصية resourceSelectorsاختيارية . تعمل هذه الخاصية بنفس الطريقة في الإعفاءات كما تفعل في التعيينات، ما يسمح بالطرح التدريجي أو التراجع عن استثناء لمجموعات فرعية معينة من الموارد بطريقة خاضعة للرقابة استنادا إلى نوع المورد أو موقع المورد أو ما إذا كان المورد لديه موقع. يمكن العثور على مزيد من التفاصيل حول كيفية استخدام محددات الموارد في بنية التعيين. فيما يلي مثال على استثناء JSON، والذي يستخدم محددات الموارد. في هذا المثال، سيتم إعفاء الموارد الموجودة فقط westcentralus من تعيين النهج:

{
    "properties": {
        "policyAssignmentId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        "policyDefinitionReferenceIds": [
            "limitSku", "limitType"
        ],
        "exemptionCategory": "Waiver",
        "resourceSelectors": [
            {
                "name": "TemporaryMitigation",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "westcentralus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/resourceGroups/demoCluster/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
    "type": "Microsoft.Authorization/policyExemptions",
    "name": "DemoExpensiveVM"
}

يمكن إضافة المناطق أو إزالتها من resourceLocation القائمة في المثال. تسمح محددات الموارد بمزيد من المرونة في مكان وكيفية إنشاء الإعفاءات وإدارتها.

التحقق من صحة نطاق التعيين (معاينة)

في معظم السيناريوهات، يتم التحقق من صحة نطاق الإعفاء للتأكد من أنه في نطاق تعيين النهج أو ضمنه. يمكن أن تسمح الخاصية الاختيارية assignmentScopeValidation باستثناء لتجاوز التحقق من الصحة هذا وأن يتم إنشاؤه خارج نطاق التعيين. هذا مخصص للحالات التي يحتاج فيها الاشتراك إلى نقله من مجموعة إدارة إلى أخرى، ولكن سيتم حظر النقل بواسطة النهج بسبب خصائص الموارد داخل الاشتراك. في هذا السيناريو، يمكن إنشاء استثناء للاشتراك في MG الحالي الخاص به لإعفاء موارده من تعيين نهج على الوجهة MG. بهذه الطريقة، عند نقل الاشتراك إلى MG الوجهة، لا يتم حظر العملية لأن الموارد معفاة بالفعل من تعيين النهج المعني. يتم توضيح استخدام هذه الخاصية أدناه:

{
    "properties": {
        "policyAssignmentId": "/providers/Microsoft.Management/managementGroups/{mgB}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        "policyDefinitionReferenceIds": [
            "limitSku", "limitType"
        ],
        "exemptionCategory": "Waiver",
        "assignmentScopeValidation": "DoNotValidate",
    },
    "systemData": { ... },
    "id": "/subscriptions/{subIdA}/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
    "type": "Microsoft.Authorization/policyExemptions",
    "name": "DemoExpensiveVM"
}

القيم المسموح بها هي assignmentScopeValidationDefaultو DoNotValidate. إذا لم يتم تحديدها، فستحدث عملية التحقق الافتراضية.

الأذونات المطلوبة

أذونات التحكم في الوصول استنادًا إلى الدور في Azure المطلوبة لإدارة كائنات استثناء النهج موجودة في مجموعة العمليات Microsoft.Authorization/policyExemptions. الأدوار المضمنة المساهم في نهج المواردومسؤول الأمان لديهم الأذونات read وwrite ونهج Insights Data Writer (معاينة) لديه الإذن read.

الإعفاءات لها تدابير أمنية إضافية بسبب تأثير منح الإعفاء. بالإضافة إلى طلب العملية Microsoft.Authorization/policyExemptions/write على التسلسل الهرمي للموارد أو المورد الفردي، يجب أن يكون لمنشئ الإعفاء الفعل exempt/Action على التعيين الهدف.

إنشاء الإعفاء وإدارته

يوصى بالإعفاءات لسيناريوهات محددة أو محددة زمنيا حيث لا يزال يجب تعقب التسلسل الهرمي للمورد أو المورد وسيتم تقييمه بخلاف ذلك، ولكن هناك سبب محدد لا ينبغي تقييمه للامتثال. على سبيل المثال، إذا كانت البيئة تحتوي على التعريف Storage accounts should disable public network access المضمن (المعرف: b2982f36-99f2-4db5-8eff-283140c09693) المعين مع تعيين التأثير للتدقيق. عند تقييم التوافق، يكون المورد "StorageAcc1" غير متوافق، ولكن يجب أن يكون StorageAcc1 تمكين الوصول إلى الشبكة العامة لأغراض العمل. في ذلك الوقت، يجب إرسال طلب لإنشاء مورد استثناء يستهدف StorageAcc1. بمجرد إنشاء الإعفاء، سيظهر StorageAcc1 على أنه معفى في مراجعة التوافق.

قم بإعادة النظر بانتظام في إعفاءاتك للتأكد من أن جميع العناصر المؤهلة معفاة بشكل مناسب وإزالة أي من العناصر المؤهلة للإعفاء على الفور. في ذلك الوقت، يمكن حذف موارد الإعفاء التي انتهت صلاحيتها أيضا.

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