استخدام الأدوار للتحكم في الوصول إلى الموارد

مكتمل

أدوار مضمنة للموارد Azure (يستخدم PowerShell)

يوفر Azure العديد من الأدوار المضمنة لتغطية سيناريوهات الأمان الأكثر شيوعا. لفهم كيفية عمل الأدوار، دعنا نفحص ثلاثة أدوار تنطبق على كافة أنواع الموارد:

  • Owner: له حق الوصول الكامل إلى جميع الموارد، بما في ذلك الحق في تفويض الوصول إلى الآخرين.
  • Contributor: يمكنه إنشاء جميع أنواع موارد Azure وإدارتها، لكن لا يمكنه منح حق الوصول للآخرين.
  • القارئ - يمكنه مشاهدة موارد Azure الحالية فقط.

تعريفات الأدوار

كل دور عبارة عن مجموعة من الخصائص المعرفة في ملف "JavaScript Object Notation (JSON)". يتضمن تعريف الدور هذا اسمًاومعرفًا ووصفًا. كما يتضمن الأذونات المسموح بها (الإجراءات)، الأذونات التي تم رفضها (NotActions)، والنطاق (على سبيل المثال، الوصول للقراءة) للدور.

بالنسبة إلى دور المالك، يعني ذلك جميع الإجراءات، المشار إليها بعلامة نجمية (*)؛ لا نفي الإجراءات، وجميع النطاقات المشار إليها من قبل شرطة مائلة للأمام (/).

يمكنك الحصول على هذه المعلومات باستخدام Get-AzRoleDefinition Owner PowerShell cmdlet.

Get-AzRoleDefinition Owner

يجب أن تنتج هذه التعليمات البرمجية الإخراج التالي:

Name             : Owner
Id               : 8e3af657-a8ff-443c-a75c-2fe8c4bcb635
IsCustom         : False
Description      : Lets you manage everything, including access to resources.
Actions          : {*}
NotActions       : {}
DataActions      : {}
NotDataActions   : {}
AssignableScopes : {/}

حاول نفس الشيء بالنسبة إلى أدوار المساهم والقارئ لرؤية الإجراءات المسموح بها والرفض.

فحص الأدوار المضمنة

بعد ذلك، دعونا نستكشف بعض الأدوار المدمجة الأخرى.

  1. افتح مدخل Azure.

  2. في الصفحة الرئيسية ل Azure، حدد Resource groups في القائمة اليسرى.

  3. حدد مجموعة موارد. يظهر جزء Resource group لديك.

  4. في جزء القائمة الأيسر، حدد Access control (IAM). يظهر جزء Access control (IAM) لمجموعة الموارد الخاصة بك.

  5. في شريط القوائم الداخلي، حدد علامة التبويب Roles على النحو التالي للاطلاع على قائمة الأدوار المتوفرة.

    Screenshot showing the roles in the Azure portal.

ما هو تعريف الدور؟

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

كما هو موضح سابقا، يحتوي تعريف الدور على البنية التالية:

الاسم ‏‏الوصف
Id معرف فريد للدور، تم تعيينه بواسطة Azure
IsCustom True إذا كان دورا مخصصا، خطأ إذا كان دورا مضمنا
Description وصف قابل للقراءة للدور
Actions [] الأذونات المسموح بها؛ * يشير إلى الكل
NotActions [] الأذونات التي تم رفضها
DataActions [] الأذونات المسموح بها المحددة كما هي مطبقة على البيانات، على سبيل المثال Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
NotDataActions [] أذونات معينة مرفوضة كما هي مطبقة على البيانات.
AssignableScopes [] النطاقات التي ينطبق فيها هذا الدور؛ / يشير إلى عمومية، ولكن يمكن الوصول إلى شجرة هرمية

يتم تمثيل هذه البنية كـ JSON عند استخدامها في التحكم في الوصول المستند إلى الدور (RBAC) أو من واجهة برمجة التطبيقات الأساسية. على سبيل المثال، إليك تعريف دور المساهم بتنسيق JSON.

{
  "Name": "Contributor",
  "Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "IsCustom": false,
  "Description": "Lets you manage everything except access to resources.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Authorization/*/Delete",
    "Microsoft.Authorization/*/Write",
    "Microsoft.Authorization/elevateAccess/Action"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

الإجراءات وعدم الإجراءات

يمكنك تخصيص ActionsوNotActionsالخصائص لمنح الأذونات الدقيقة التي تحتاجها ورفضها. تكون هذه الخصائص دائمًا في التنسيق: {Company}.{ProviderName}/{resourceType}/{action} .

على سبيل المثال، فيما يلي الإجراءات للأدوار الثلاثة التي نظرنا إليها سابقا:

دور مدمج الإجراءات‬ عدم الإجراءات
المالك (السماح بكافة الإجراءات) * -
المساهم (السماح بكافة الإجراءات باستثناء كتابة تعيينات الدور أو حذفها) * Microsoft.Authorization/*/Delete, Microsoft.Authorization/*/Write, Microsoft.Authorization/elevateAccess/Action
قارئ (السماح بجميع إجراءات القراءة) */read -

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

يتم طرح العمليات ضمن NotActions من Actions . باستخدام دور Contributor، يزيل NotActions قدرة هذا الدور على إدارة الوصول إلى الموارد ويزيل أيضًا تعيين الوصول إلى الموارد.

معاملات البيانات وNotDataActions

يتم تحديد عمليات البيانات في DataActionsالخصائص NotDataActions. يمكنك تحديد عمليات البيانات بشكل منفصل عن عمليات الإدارة. وهذا يمنع تعيينات الدور الحالية مع أحرف البدل ( * ) من الوصول إلى البيانات فجأة. فيما يلي بعض عمليات البيانات التي يمكنك تحديدها في DataActions و NotDataActions:

  • قراءة قائمة النقط في حاوية
  • كتابة نقطة تخزين في حاوية
  • حذف رسالة في قائمة انتظار

يمكنك فقط إضافة عمليات البيانات إلى خصائص DataActions و NotDataActions . يقوم موفرو الموارد بتعريف العمليات التي تكون عمليات البيانات عن طريق تعيين isDataAction الخاصية إلى true . يمكن للأدوار التي لا تحتوي على عمليات بيانات حذف هذه الخصائص من تعريف الدور.

هذه الإجراءات تعمل تماما مثل أبناء عمومتهم في الإدارة. يمكنك تحديد الإجراءات التي تريد السماح بها (أو * للجميع)، ثم توفير قائمة بالإجراءات المحددة لإزالتها في NotDataActions المجموعة. فيما يلي بعض الأمثلة؛ يمكنك العثور على القائمة الكاملة للإجراءات وإجراءات البيانات في وثائق موفر الموارد:

عملية البيانات ‏‏الوصف
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete حذف بيانات النقطة
Microsoft.Compute/virtualMachines/login/action تسجيل الدخول إلى VM كمستخدم عادي
Microsoft.EventHub/namespaces/messages/send/action إرسال رسائل على لوحة وصل أحداث
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read إرجاع ملف/مجلد أو قائمة ملفات/مجلدات
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read قراءة رسالة من قائمة انتظار

نطاقات قابلة للتعيين

تعريف خصائص الإجراءات وعدم الإجراءات غير كافية لتنفيذ دور بشكل كامل. تحتاج أيضًا إلى نطاق دورك بشكل صحيح.

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

وإليك بعض الأمثلة:

إلى استخدام النطاق
تقييد الاشتراك "/subscriptions/{sub-id}"
تقييد مجموعة موارد معينة على اشتراك معين "/subscriptions/{sub-id}/resourceGroups/{rg-name}"
تقييد إلى مورد معين "/subscriptions/{sub-id}/resourceGroups/{rg-name}/{resource-name}"
توفير دور للتعيين في اشتراكين "/subscriptions/{sub-id}", "/subscriptions/{sub-id}"

إنشاء أدوار

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

إشعار

يتطلب إنشاء دور مخصص معرف Microsoft Entra P1 أو P2؛ لا يمكنك إنشاء أدوار مخصصة في المستوى المجاني.

يمكنك إنشاء دور جديد من خلال عدة آليات:

  • مدخل Microsoft Azure: يمكنك استخدام مدخل Microsoft Azure لإنشاء دور مخصص عن طريق تحديد أدوار معرف>Microsoft Entra والمسؤولين>دور مخصص جديد.

  • Azure PowerShell: يمكنك استخدام New-AzRoleDefinition cmdlet لتعريف دور جديد.

  • واجهة برمجة تطبيقات Azure Graph: يمكنك استخدام استدعاء REST إلى واجهة برمجة تطبيقات Graph لإنشاء دور جديد برمجيا.

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

‏‫اختبر معلوماتك

1.

ما هي المعلومات التي يوفرها تعريف Action الدور؟

2.

أيٌّ من التالي يحدد نطاق الدور ليكون مجموعة الموارد myResourceGroup ؟

3.

كيف يتم NotActions استخدامها في تعريف الدور؟