استخدام الأدوار للتحكم في الوصول إلى الموارد
أدوار مضمنة للموارد 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 : {/}
حاول نفس الشيء بالنسبة إلى أدوار المساهم والقارئ لرؤية الإجراءات المسموح بها والرفض.
فحص الأدوار المضمنة
بعد ذلك، دعونا نستكشف بعض الأدوار المدمجة الأخرى.
افتح مدخل Azure.
في الصفحة الرئيسية ل Azure، حدد Resource groups في القائمة اليسرى.
حدد مجموعة موارد. يظهر جزء Resource group لديك.
في جزء القائمة الأيسر، حدد Access control (IAM). يظهر جزء Access control (IAM) لمجموعة الموارد الخاصة بك.
في شريط القوائم الداخلي، حدد علامة التبويب Roles على النحو التالي للاطلاع على قائمة الأدوار المتوفرة.
ما هو تعريف الدور؟
تعريف الدور هو مجموعة من الأذونات. يسرد تعريف الدور العمليات التي يمكن أن يقوم بها الدور، مثل القراءة والكتابة والحذف. كما يمكن أن تسرد العمليات التي لا يمكن تنفيذها أو العمليات المتعلقة بالبيانات الأساسية.
كما هو موضح سابقا، يحتوي تعريف الدور على البنية التالية:
الاسم | الوصف |
---|---|
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 لإنشاء دور جديد برمجيا.
يتضمن قسم الملخص في هذه الوحدة رابطا إلى الوثائق لجميع الأساليب الثلاثة.