المصادقة والتخويل باستخدام معرف Microsoft Entra

توضح هذه المقالة كيفية مصادقة عملاء نشر Azure Event Grid باستخدام معرف Microsoft Entra.

نظرة عامة

يوفر النظام الأساسي للهويات في Microsoft مصادقة متكاملة وإدارة التحكم في الوصول للموارد والتطبيقات التي تستخدم معرف Microsoft Entra كموفر هويتها. استخدم النظام الأساسي للهويات في Microsoft لتوفير دعم المصادقة والتخويل في تطبيقاتك. يعتمد على معايير مفتوحة، مثل OAuth 2.0 وOpenID Connect ويوفر أدوات ومكتبات مفتوحة المصدر، تدعم كثيراً من سيناريوهات المصادقة. يوفر ميزات متقدمة، مثل Conditional Access الذي يسمح لك بتعيين النُّهج التي تتطلب مصادقة متعددة العوامل، أو تسمح بالوصول من مواقع محددة، على سبيل المثال.

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

التحكم في الوصول المُستند إلى الدور (RBAC) يسمح لك بتكوين التفويض بطريقة يكون فيها لمبادئ أمان معينة (هويات للمستخدمين أو المجموعات أو التطبيقات) أذونات مُحددة لتنفيذ العمليات على موارد Azure. بهذه الطريقة، يجب أن يكون لمبدأ الأمان المستخدم بواسطة تطبيق العميل الذي يرسل الأحداث إلى Event Grid دور RBAC EventGrid Data Sender المرتبط به.

مبادئ الأمان

توجد فئتان عريضتان من مبادئ الأمان يمكن تطبيقهما عند مناقشة مصادقة عميل نشر Event Grid:

  • الهويات المُدارة. يمكن تعيين هوية مُدارة بواسطة النظام، تقوم بتمكينها في مورد Azure، وتكون مرتبطة فقط بهذا المورد، أو المستخدم المعين، والذي قُمتَ بإنشائه وتسميته بشكل صريح. يمكن إقران الهويات المُدارة المعينة من قِبل المستخدم بأكثر من مورد واحد.
  • مبدأ أمان التطبيق. إنه نوع من أساسيات الأمان التي تمثل تطبيقا، والذي يصل إلى الموارد المحمية بواسطة معرف Microsoft Entra.

بغض النظر عن أساس الأمان المستخدم أو الهوية المدارة أو أساس أمان التطبيق، يستخدم العميل الخاص بك هذه الهوية للمصادقة قبل معرف Microsoft Entra والحصول على رمز وصول OAuth 2.0 الذي يتم إرساله مع الطلبات عند إرسال الأحداث إلى Event Grid. يتم توقيع هذا الرمز المميز بشكل مشفر وبمخزون استلامه لـ Event Grid، يتم التحقق من صحة الرمز المميز. على سبيل المثال، تم تأكيد أن الجمهور (المستلم المقصود للرمز المميز) هو Event Grid (https://eventgrid.azure.net)، من بين أشياء أخرى. يحتوي الرمز المميز على معلومات حول هوية العميل. تأخذ Event Grid هذه الهوية وتتحقق من أن العميل لديه الدور الذي تم تعيينه له EventGrid Data Sender . بتعبير أدق، تتحقق Event Grid من أن الهوية لديها إذن Microsoft.EventGrid/events/send/action في دور RBAC المرتبط بالهوية قبل السماح بإكمال طلب نشر الحدث.

إذا كنت تستخدم Event Grid SDK، فلا داعيَ للقلق بشأن التفاصيل حول كيفية تنفيذ اكتساب رموز الوصول وكيفية تضمينها مع كل طلب إلى Event Grid؛ لأن مستوى بيانات Event Grid SDKs يفعل ذلك لك.

خطوات تكوين العميل لاستخدام مصادقة Microsoft Entra

نفذ الخطوات التالية لتكوين العميل لاستخدام مصادقة Microsoft Entra عند إرسال الأحداث إلى موضوع أو مجال أو مساحة اسم شريك.

  1. قم بإنشاء أو استخدام مبدأ الأمان الذي تريد استخدامه للمصادقة. يمكنك استخدام هوية مُدارة أو مبدأ أمان التطبيق.
  2. امنح الإذن لمدير الأمان لنشر الأحداث من خلال تعيين دور EventGrid Data Sender لمدير الأمان.
  3. استخدم Event Grid SDK لنشر الأحداث على Event Grid.

المصادقة باستخدام هوية مُدارة

الهويات المدارة هي الهويات المرتبطة بموارد Azure. توفر الهويات المدارة هوية تستخدمها التطبيقات عند استخدام موارد Azure التي تدعم مصادقة Microsoft Entra. قد تستخدم التطبيقات الهوية المدارة لمورد الاستضافة مثل جهاز ظاهري أو خدمة Azure App للحصول على رموز Microsoft Entra المميزة التي يتم تقديمها مع الطلب عند نشر الأحداث إلى Event Grid. عند اتصال التطبيق، تربط Event Grid سياق الكيان المُدار بالعميل. بمخزون ارتباطه بهوية مُدارة، يمكن لعميل نشر Event Grid القيام بجميع العمليات المصرح بها. يتم منح التفويض من خلال إقران كيان مُدار بدور RBAC لـ Event Grid.

توفر الهوية المدارة خدمات Azure بهوية مدارة تلقائيا في معرف Microsoft Entra. على النقيض من طُرُق المصادقة الأخرى، لا تحتاج إلى تخزين وحماية مفاتيح الوصول أو توقيعات الوصول المشترك (SAS) في التعليمة المبرمجة للتطبيق أو التكوين، إما للهوية نفسها، أو للموارد التي تحتاج إلى الوصول إليها.

لمصادقة عميل نشر الحدث الخاص بك باستخدام الهويات المُدارة، حدد أولاً خدمة استضافة Azure لتطبيق العميل الخاص بك، ثم قم بتمكين الهويات المُدارة المعينة من قِبَل النظام، أو التي قام المستخدم بتعيينها على مثيل خدمة Azure هذا. على سبيل المثال، يمكنك تمكين الهويات المُدارة على VMأو خدمة تطبيق Azure أو وظائف Azure.

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

المصادقة باستخدام مبدأ الأمان لتطبيق العميل

إلى جانب الهويات المدارة، هناك خيار هوية آخر، وهو إنشاء أساس أمان لتطبيق العميل الخاص بك. لتحقيق هذه الغاية، تحتاج إلى تسجيل التطبيق الخاص بك مع معرف Microsoft Entra. تسجيل التطبيق الخاص بك هو إيماءة تقوم من خلالها بتفويض التحكم في إدارة الهوية والوصول إلى معرف Microsoft Entra. اتبع الخطوات الواردة في القسم تسجيل تطبيق وفي القسم إضافة سر عميل. تأكد من مراجعة المتطلبات الأساسية قبل البدء.

بمخزون حصولك على مبدأ أمان التطبيق واتباع الخطوات المذكورة أعلاه، قم بتعيين إذن لنشر الأحداث على تلك الهوية.

إشعار

عند تسجيل تطبيق في البوابة الإلكترونية، يتم إنشاء كائن تطبيق وأساسي خدمة تلقائيّاً في مستأجر منزلك. بدلاً من ذلك، يمكنك استخدام Microsoft Graph لتسجيل تطبيقك. ومع ذلك، إذا قمت بتسجيل أو إنشاء تطبيق باستخدام Microsoft Graph APIs، فإن إنشاء الكائن الأساسي للخدمة يُعد خطوة منفصلة.

تعيين إذن لمدير الأمان لنشر الأحداث

يجب أن تحصل الهوية المستخدمة لنشر الأحداث على Event Grid على الإذن Microsoft.EventGrid/events/send/action الذي يسمح لها بإرسال الأحداث إلى Event Grid. يتم تضمين هذا الإذن في دور RBAC المضمن مرسل بيانات شبكة الأحداث. يمكن تعيين هذا الدور إلى أساس أمان، لنطاق معين، والذي يمكن أن يكون مجموعة إدارة أو اشتراك Azure أو مجموعة موارد أو موضوع شبكة أحداث معين أو مجال أو مساحة اسم شريك. اتبع الخطوات الواردة في تعيين أدوار Azure لتعيين دور EventGrid Data Sender أساسي للأمان، وبهذه الطريقة امنح تطبيقاً يستخدم حق الوصول الأساسي للأمان لإرسال الأحداث. بدلاً من ذلك، يمكنك تحديد دور مخصص يتضمن إذناً Microsoft.EventGrid/events/send/action وتعيين هذا الدور المخصص لمدير الأمان الخاص بك.

مع الاهتمام بامتيازات RBAC، يمكنك الآن إنشاء تطبيق العميل الخاص بك لإرسال الأحداث إلى Event Grid.

إشعار

تدعم Event Grid مزيداً من أدوار RBAC لأغراض تتجاوز إرسال الأحداث. لمزيد من المعلومات، راجع الأدوار المضمنة في شبكة الأحداث.

انشر الأحداث باستخدام مجموعات SDK لعميل Event Grid

استخدم SDK لمستوى بيانات Event Grid لنشر الأحداث على Event Grid. تدعم SDK الخاصة ب Event Grid جميع أساليب المصادقة، بما في ذلك مصادقة Microsoft Entra.

فيما يلي نموذج التعليمات البرمجية الذي ينشر الأحداث إلى Event Grid باستخدام .NET SDK. يمكنك الحصول على نقطة نهاية الموضوع في صفحة نظرة عامة لموضوع Event Grid في مدخل Microsoft Azure. إنه في التنسيق https://<TOPIC-NAME>.<REGION>-1.eventgrid.azure.net/api/events.

ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredential();
EventGridPublisherClient client = new EventGridPublisherClient( new Uri("<TOPIC ENDPOINT>"), managedIdentityCredential);


EventGridEvent egEvent = new EventGridEvent(
        "ExampleEventSubject",
        "Example.EventType",
        "1.0",
        "This is the event data");

// Send the event
await client.SendEventAsync(egEvent);

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

فيما يلي المتطلبات الأساسية للمصادقة على Event Grid.

نشر الأحداث باستخدام مصادقة Microsoft Entra

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

العينة:

ينشئ مقتطف C# هذا عميل ناشر Event Grid باستخدام تطبيق (كيان الخدمة) مع سر العميل، لتمكين الأسلوب DefaultAzureCredential الذي تحتاج إليه لإضافة مكتبة Azure.Identity. إذا كنت تستخدم SDK الرسمي، فإن SDK يعالج الإصدار نيابة عنك.

Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", "");
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", "");
Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", "");

EventGridPublisherClient client = new EventGridPublisherClient(new Uri("your-event-grid-topic-domain-or-partner-namespace-endpoint"), new DefaultAzureCredential());

لمزيد من المعلومات، راجع المقالات التالية:

تعطيل مفتاح ومصادقة توقيع الوصول المشترك

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

بمجرد أن تقرر استخدام مصادقة Microsoft Entra، يمكنك تعطيل المصادقة استنادا إلى مفاتيح الوصول أو رموز SAS المميزة.

إشعار

مفاتيح الوصول أو مصادقة رمز SAS هي شكل من أشكال المصادقة المحلية. ستسمع أحيانا الإشارة إلى "المصادقة المحلية" عند مناقشة هذه الفئة من آليات المصادقة التي لا تعتمد على معرف Microsoft Entra. معلمة API المستخدمة لتعطيل المصادقة المحلية تُسَمَّى، بشكل مناسب disableLocalAuth.

مدخل Azure

عند إنشاء موضوع جديد، يُمكنك تعطيل المصادقة المحلية في علامة التبويب خيارات متقدمة في صفحة إنشاء موضوع.

لقطة شاشة تعرض علامة التبويب «خيارات متقدمة» في صفحة «إنشاء موضوع» عندما يُمكنك تعطيل المصادقة المحلية.

بالنسبة لموضوع موجود، اتبع الخطوات التالية لتعطيل المُصادقة المحلية:

  1. انتقل إلى صفحة Event Grid Topic للموضوع، وحـدد Enabled ضمن Local Authentication

    لقطة شاشة تعرض صفحة «نظرة عامة» لموضوع موجود.

  2. في صفحة المصادقة المحليةالمنبثقة، حدد Disabled، ثم حدد OK.

    لقطة شاشة تعرض نافذة المصادقة المحلية.

Azure CLI

يوضح أمر CLI التالي طريقة إنشاء موضوع مخصص مع تعطيل المصادقة المحلية. تتوافر ميزة تعطيل المصادقة المحلية حاليًّا كمعاينة وتحتاج إلى استخدام إصدار API 2021-06-01-preview.

az resource create --subscription <subscriptionId> --resource-group <resourceGroup> --resource-type Microsoft.EventGrid/topics --api-version 2021-06-01-preview --name <topicName> --location <location> --properties "{ \"disableLocalAuth\": true}"

كمرجع لك، فيما يلي قيِّم نوع الموارد التي يمكنك استخدامها وفقاً للموضوع الذي تقوم بإنشائه أو تحديثه.

نوع الموضوع نوع المورد
المجالات مجال خطوط شبكة الحدث لـ MICROSOFT
مساحة اسم الشريك Microsoft.EventGrid/partnerNamespaces
موضوع مخصص Microsoft.EventGrid/topics

Azure PowerShell

إذا كنت تستخدم PowerShell، فاستخدم أوامر cmdlets التالية لإنشاء موضوع مخصص، مع تعطيل المصادقة المحلية.


Set-AzContext -SubscriptionId <SubscriptionId>

New-AzResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.EventGrid/topics -ApiVersion 2021-06-01-preview -ResourceName <TopicName> -Location <Location> -Properties @{disableLocalAuth=$true}

إشعار

الموارد