الأدوار والأذونات والأمان في Azure Monitor

توضح هذه المقالة كيفية تطبيق أدوار مراقبة التحكم في الوصول استنادا إلى الدور (RBAC) لمنح الوصول أو تقييده، وتناقش اعتبارات الأمان للموارد المتعلقة ب Azure Monitor.

المراقبة المضمنة وأدوارها

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

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

قارئ المراقبة

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

  • يتعرض لوحات معلومات المراقبة في مدخل Microsoft Azure.
  • عرض قواعد التنبيه المعرفة في تنبيهات مدخل Azure.
  • استعلم عن مقاييس Azure Monitor باستخدام Azure Monitor REST API أو PowerShell cmdlets أو CLI عبر النظام الأساسي.
  • الاستعلام عن سجل "النشاط" باستخدام المدخل أو واجهة برمجة تطبيقات REST لـ Azure Monitor أو PowerShell cmdlets أو CLI عبر النظام الأساسي.
  • عرض إعدادات التشخيص لمورد.
  • عرض سجلملف تعريف السجل للاشتراك.
  • عرض إعدادات التحجيم التلقائي.
  • عرض زر نشاط التنبيه وإعداداته.
  • البحث في بيانات مساحة العمل سجل Analytics، بما في ذلك بيانات الاستخدام لمساحة العمل.
  • استرداد مخططات الجدول في مساحة عمل Log Analytics.
  • استرداد استعلامات السجل وتنفيذها في مساحة عمل Log Analytics.
  • الوصول إلى بيانات Application Insights.

إشعار

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

المساهم في المراقبة

يمكن للأشخاص المعينين لدور "المساعد في المراقبة" عرض كافة بيانات المراقبة في الاشتراك. كما يمكنهم أيضا إنشاء إعدادات المراقبة أو تعديلها، ولكن لا يمكنهم تعديل أي موارد أخرى.

يعد هذا الدور هو مجموعة كبيرة من دور "مراقب القارئ". يعد هذا الدور مناسبًا لأعضاء فريق المراقبة التابع للمؤسسة أو مُقدمي الخدمات المُدارة الذين يحتاجون، بالإضافة إلى الأذونات المذكورة سابقًا، إلى:

  • عرض لوحات المعلومات المراقبة في المدخل وإنشاء لوحات معلومات المراقبة الخاصة بها.
  • إنشاء إعدادات التشخيص وتحريرها لمورد. 1
  • تعيين نشاط وإعدادات قاعدة التنبيه باستخدام تنبيهات Azure.
  • مشاركة سرد المفاتيح المشتركة لمساحة عمل "تحليلات السجل".
  • إنشاء عمليات بحث محفوظة وحذفها وتنفيذها في مساحة عمل في سجل Analytics.
  • قم بإنشاء وتكوين مساحة التخزين لـ"تحليلات السجل" وحذفها.
  • قم إنشاء اختبارات الويب ومكونات التطبيق Insights.

1 لإنشاء إعداد تشخيص أو تحريره، يجب أيضا منح المستخدمين إذن ListKeys بشكل منفصل على المورد الهدف (حساب التخزين أو مساحة اسم مركز الحدث).

إشعار

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

مراقبة الأذونات وأدوار Azure المخصصة

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

على سبيل المثال، يمكنك استخدام أذونات دقيقة لإنشاء دور مخصص Azure لقارئ سجل النشاط باستخدام البرنامج النصي PowerShell التالي.

$role = Get-AzRoleDefinition "Reader"
$role.Id = $null
$role.Name = "Activity Log Reader"
$role.Description = "Can view activity logs."
$role.Actions.Clear()
$role.Actions.Add("Microsoft.Insights/eventtypes/*")
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/mySubscription")
New-AzRoleDefinition -Role $role 

إشعار

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

تعيين دور

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

لتعيين دور، راجع تعيين أدوار Azure باستخدام Azure PowerShell.

على سبيل المثال، يقوم البرنامج النصي PowerShell التالي بتعيين دور لمستخدم محدد.

استبدل <RoleId> بمعرف دور مراقبة التحكم في الوصول استنادا إلى الدور الذي تريد تعيينه.

استبدل <SubscriptionID>و <ResourceGroupName>و <UserPrincipalName> بالقيم المناسبة للبيئة الخاصة بك.

# Define variables
$SubscriptionId = "<SubscriptionID>"
$ResourceGroupName = "<ResourceGroupName>"
$UserPrincipalName = "<UserPrincipalName>"  # The UPN of the user to whom you want to assign the role
$RoleId = "<RoleId>"  # The ID of the role

# Get the user object
$User = Get-AzADUser -UserPrincipalName $UserPrincipalName

# Define the scope (e.g., subscription or resource group level)
$Scope = "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName"

# Assign the role
New-AzRoleAssignment -ObjectId $User.Id -RoleDefinitionId $RoleId -Scope $Scope

يمكنك أيضا تعيين أدوار Azure باستخدام مدخل Microsoft Azure.

هام

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

استعلام PowerShell المتعلق بتحديد عضوية الدور

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

الاستعلام عن الاشتراك بأكمله فيما يتعلق بأدوار المسؤول + أدوار المساهمين

(Get-AzRoleAssignment -IncludeClassicAdministrators | Where-Object {$_.RoleDefinitionName -in @('ServiceAdministrator', 'CoAdministrator', 'Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

الاستعلام في إطار مورد Application Insights محدد للمالكين والمساهمين

$resourceGroup = "ResourceGroupName"
$resourceName = "AppInsightsName"
$resourceType = "microsoft.insights/components"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup -ResourceType $resourceType -ResourceName $resourceName | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

الاستعلام في إطار مجموعة موارد محددة للمالكين والمساهمين

$resourceGroup = "ResourceGroupName"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

تعد اعتبارات الأمان الخاصة برصد البيانات

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

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

عندما يحتاج مستخدم أو تطبيق الوصول لمراقبة البيانات في حساب التخزين، أنشئ توقيع وصول مشترك (SAS) على حساب التخزين الذي يحتوي على بيانات المراقبة مع وصول القراءة فقط على مستوى الخدمة لتخزين كائن ثنائي كبير الحجم. في PowerShell، قد تبدو شفرة حساب SAS مثل تعليمة البرمجية التالية:

$context = New-AzStorageContext -ConnectionString "[connection string for your monitoring Storage Account]"
$token = New-AzStorageAccountSASToken -ResourceType Service -Service Blob -Permission "rl" -Context $context

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

بدلًا من ذلك، إذا كنت بحاجة إلى عنصر تحكم في هذا الإذن مع Azure RBAC، يمكنك منح هذا الكيان Microsoft.Storage/storageAccounts/listkeys/actionالإذن على حساب التخزين هذا. هذا الإذن ضروري للمستخدمين الذين يحتاجون إلى تعيين إعداد تشخيص لإرسال البيانات إلى حساب تخزين. على سبيل المثال، يمكنك إنشاء دور Azure المخصص ومتابعة المستخدم أو تطبيق يحتاج إلى القراءة من حساب تخزين واحد فقط:

$role = Get-AzRoleDefinition "Reader"
$role.Id = $null
$role.Name = "Monitoring Storage Account Reader"
$role.Description = "Can get the storage account keys for a monitoring storage account."
$role.Actions.Clear()
$role.Actions.Add("Microsoft.Storage/storageAccounts/listkeys/action")
$role.Actions.Add("Microsoft.Storage/storageAccounts/Read")
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/myMonitoringStorageAccount")
New-AzRoleDefinition -Role $role 

تحذير

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

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

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

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

    $role = Get-AzRoleDefinition "Reader"
    $role.Id = $null
    $role.Name = "Monitoring Event Hub Listener"
    $role.Description = "Can get the key to listen to an event hub streaming monitoring data."
    $role.Actions.Clear()
    $role.Actions.Add("Microsoft.EventHub/namespaces/authorizationrules/listkeys/action")
    $role.Actions.Add("Microsoft.EventHub/namespaces/Read")
    $role.AssignableScopes.Clear()
    $role.AssignableScopes.Add("/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.ServiceBus/namespaces/mySBNameSpace")
    New-AzRoleDefinition -Role $role 
    

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