التفاعل مع أحداث تغيير حالة نهج 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:
- الأحداث: يمكن أن تكون هذه الأحداث أي شيء قد يرغب المستخدم في الرد عليه لمورد Azure. على سبيل المثال، إذا تم إنشاء حالة توافق نهج وتغييرها وحذفها لمورد مثل جهاز ظاهري أو حسابات تخزين.
- اشتراكات شبكة الأحداث: اشتراكات الأحداث هذه هي كيانات تم تكوينها من قبل المستخدم توجه المجموعة المناسبة من الأحداث من ناشر إلى مشترك. يمكن لاشتراكات الأحداث تصفية الأحداث استنادا إلى مسار المورد الذي نشأ منه الحدث ونوع الحدث. بالإضافة إلى ذلك، يمكن أيضا تصفية اشتراكات الأحداث حسب النطاق بين اشتراك Azure ومجموعة الإدارة.
سيناريو حدث نهج Azure الشائع هو التعقب عندما تتغير حالة التوافق لمورد أثناء تقييم النهج. البنية المستندة إلى الحدث هي طريقة فعالة للرد على هذه التغييرات وتساعد في رد الفعل المستند إلى الحدث لتغييرات حالة التوافق.
سيناريو آخر هو تشغيل مهام المعالجة تلقائيا دون تحديد إنشاء مهمة معالجة يدويا في صفحة النهج. يمكن معالجة عمليات التحقق من شبكة الأحداث لحالة التوافق والموارد غير المتوافقة حاليا. تعرف على المزيد حول بنية المعالجة. تتطلب المعالجة هوية مدارة ويجب أن تكون النهج سارية أو deployIfNotExists
سارية modify
المفعول. تعرف على المزيد حول أنواع التأثيرات.
تعد 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: