التفاعل مع أحداث تغيير حالة نهج Azure

تمكّن أحداث Azure Policy التطبيقات من التفاعل مع تغييرات الحالة. يتم هذا التكامل دون الحاجة إلى كود معقد أو خدمات اقتراع باهظة الثمن وغير فعالة. بدلاً من ذلك، يتم دفع الأحداث عبر Azure Event Grid إلى المشتركين مثل Azure Functions أو Azure Logic Apps أو حتى إلى مستمع HTTP المخصص الخاص بك. بشكل حاسم، أنت تدفع فقط مقابل ما تستخدمه.

يتم إرسال أحداث نهج Azure إلى Azure Event Grid، والتي توفر خدمات تسليم موثوقة لتطبيقاتك من خلال سياسات إعادة المحاولة الثرية وتسليم الرسائل المهملة. تهتم Event Grid والتوجيه والتصفية والبث المتعدد للأحداث إلى الوجهات عبر اشتراكات Event Grid. لمعرفة المزيد، راجع تسليم رسالة Event Grid وأعد المحاولة.

إشعار

يتم إرسال أحداث تغيير حالة نهج Azure إلى Event Grid بعد انتهاء مشغل التقييم من تقييم الموارد.

قد تستغرق إعلامات Event Grid لتغييرات حالة توافق الموارد ما يصل إلى 20 دقيقة.

فوائد شبكة الأحداث

لدى Event Grid بعض الفوائد للعملاء والخدمات في النظام البنائي ل Azure:

  • التشغيل التلقائي: للبقاء على اطلاع ببيئة النهج الخاصة بك، تقدم Event Grid آلية تلقائية لإنشاء التنبيهات وتشغيل المهام اعتمادا على حالات التوافق.
  • التسليم الدائم: لكي تستجيب الخدمات وتطبيقات المستخدم في الوقت الحقيقي لأحداث التوافق مع النهج، تسعى Event Grid إلى تقديم أحداث النهج بأقل زمن انتقال. تعيد Event Grid محاولة إرسال حدث إذا فشلت نقطة نهاية المشترك في الإقرار باستلامه أو إذا لم يتم ذلك، وفقا لجدول إعادة المحاولة المحدد مسبقا ونهج إعادة المحاولة.
  • منتج الحدث المخصص: لا يحتاج منتجو أحداث Event Grid والمستهلكون إلى أن يكونوا Azure أو خدمات Microsoft. يمكن أن تتلقى التطبيقات الخارجية تنبيها أو تظهر إنشاء مهمة معالجة أو تجمع رسائل حول من يستجيب لتغيير الحالة. راجع أحداث تغيير حالة نهج المسار إلى Event Grid باستخدام Azure CLI للحصول على برنامج تعليمي كامل.

هناك كيانان أساسيان عند استخدام Event Grid:

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

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

سيناريو آخر هو تشغيل مهام المعالجة تلقائيا دون وضع علامة على إنشاء مهمة معالجة يدويا في صفحة النهج. يمكن معالجة عمليات التحقق من شبكة الأحداث لحالة التوافق والموارد غير المتوافقة حاليا. تعرف على المزيد حول بنية المعالجة. تتطلب المعالجة هوية مدارة ويجب أن تكون النهج في تأثير Modify أو DeployIfNotExists. تعرف على المزيد حول أنواع التأثيرات.

بالإضافة إلى ذلك، تعد Event Grid مفيدة كنظام تدقيق لتخزين تغييرات الحالة وفهم سبب عدم التوافق بمرور الوقت. سيناريوهات شبكة الأحداث لا حصر لها واستنادا إلى الدافع، شبكة الأحداث قابلة للتكوين.

لقطة شاشة لنموذج Event Grid للمصادر والمعالجات.

أنواع الأحداث المتاحة

يُرسل نهج Azure أنواع الأحداث التالية:

نوع الحدث ‏‏الوصف
Microsoft.PolicyInsights.PolicyStateCreated يُطلق عند إنشاء حالة توافق مع النهج.
Microsoft.PolicyInsights.PolicyStateChanged يُطلق عند تغيير حالة توافق النهج.
Microsoft.PolicyInsights.PolicyStateDeleted يُطلق عند حذف حالة توافق النهج.

خصائص الحدث

ويحتوي الحدث على بيانات المستوى الأعلى التالية:

الخاصية نوع الوصف
topic سلسلة مسار المورد الكامل إلى مصدر الحدث. هذا الحقل غير قابل للكتابة. توفر شبكة الأحداث هذه القيمة.
subject سلسلة معرّف المورد المؤهّل بالكامل للمورد الذي تم تغيير حالة التوافق له، بما في ذلك اسم المورد ونوع المورد. استخدم التنسيق، /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>
eventType سلسلة أحد أنواع الأحداث المسجلة لمصدر الحدث الماثل.
eventTime سلسلة الوقت الذي يتم إنشاء الحدث استناداً إلى وقت UTC الموفر.
id سلسلة المعرف الفريد للحدث.
data كائن بيانات حدث نهج Azure.
dataVersion سلسلة إصدار مخطط كائن البيانات. يعرّف الناشر إصدار المخطط.
metadataVersion سلسلة إصدار مخطط البيانات الوصفية للحدث. تحدد «شبكة الأحداث» مخطط خصائص المستوى الأعلى. توفر شبكة الأحداث هذه القيمة.

كائن البيانات له الخصائص التالية:

الخاصية نوع الوصف
timestamp سلسلة الوقت (بتوقيت عالمي متفق عليه) الذي فحص فيه نهج Azure المورد. لترتيب الأحداث، استخدم هذه الخاصية بدلًا من المستوى الأعلى eventTime أو الخصائص time.
policyAssignmentId سلسلة معرّف المورد لتعيين النهج.
policyDefinitionId سلسلة معرّف المورد لتعريف النهج.
policyDefinitionReferenceId سلسلة معرّف المرجع لتعريف النهج داخل تعريف المبادرة، إذا كان تعيين النهج هو لمبادرة. قد تكون فارغة.
complianceState سلسلة حالة التوافق للمورد فيما يتعلق بتعيين النهج.
subscriptionId سلسلة معرف الاشتراك للمورد.
complianceReasonCode سلسلة التعليمات البرمجية لسبب التوافق. قد تكون فارغة.

مثال حدث

يوضح المثال التالي مخطط حالة النهج التي تم إنشاؤها في نطاق مستوى الاشتراك:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/subscriptions/<SubscriptionID>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateCreated",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

مخطط حدث تم تغيير حالة النهج في نطاقه على مستوى الاشتراك مشابه:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/subscriptions/<SubscriptionID>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateChanged",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

يوضح المثال التالي مخطط حالة النهج التي تم إنشاؤها في نطاق على مستوى مجموعة الإدارة:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/tenants/<tenantId>/providers/Microsoft.Management/managementGroups/<managementGroupId>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateCreated",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

مخطط حدث تم تغيير حالة النهج في نطاقه على مستوى مجموعة الإدارة مشابه:

[{
    "id": "5829794FCB5075FCF585476619577B5A5A30E52C84842CBD4E2AD73996714C4C",
    "topic": "/tenants/<tenantId>/providers/Microsoft.Management/managementGroups/<managementGroupId>",
    "subject": "/subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroup>/providers/<ProviderNamespace>/<ResourceType>/<ResourceName>",
    "data": {
        "timestamp": "2021-03-27T18:37:42.4496956Z",
        "policyAssignmentId": "<policy-assignment-scope>/providers/microsoft.authorization/policyassignments/<policy-assignment-name>",
        "policyDefinitionId": "<policy-definition-scope>/providers/microsoft.authorization/policydefinitions/<policy-definition-name>",
        "policyDefinitionReferenceId": "",
        "complianceState": "NonCompliant",
        "subscriptionId": "<subscription-id>",
        "complianceReasonCode": ""
    },
    "eventType": "Microsoft.PolicyInsights.PolicyStateChanged",
    "eventTime": "2021-03-27T18:37:42.5241536Z",
    "dataVersion": "1",
    "metadataVersion": "1"
}]

ممارسات لاستهلاك الأحداث

يجب أن تتبع التطبيقات التي تتعامل مع أحداث Azure Policy هذه الممارسات الموصى بها:

  • يمكن تكوين اشتراكات متعددة لتوجيه الأحداث إلى نفس معالج الأحداث، لذلك لا تفترض أن الأحداث من مصدر معين. بدلاً من ذلك، تحقق من موضوع الرسالة للتأكد من تعيين السياسة، وتعريف السياسة، والمورد الذي حدث تغيير الحالة له.
  • تحقق من eventType ولا تفترض أن جميع الأحداث التي تتلقاها هي الأنواع التي تتوقعها.
  • واستخدم data.timestamp لتحديد ترتيب الأحداث في نهج Azure، بدلا من المستوى eventTime الأعلى أو time الخصائص.
  • استخدم حقل الموضوع للوصول إلى المورد الذي تم تغيير حالة السياسة فيه.

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

تعرف على المزيد حول Event Grid وجرب أحداث تغيير حالة سياسة Azure: