نموذج التحكم في الوصول في Azure Data Lake Storage Gen2
يدعم Data Lake Storage Gen2 آليات الترخيص التالية:
- تفويض المفتاح المشترك
- تخويل توقيع الوصول المشترك (SAS)
- التحكم في الوصول استنادًا إلى الدور من Azure
- قوائم التحكم في الوصول (ACL)
المفتاح المشترك وتصريح SAS يمنح الوصول إلى المستخدم (أو التطبيق) دون الحاجة إلى أن يكون له هوية في Azure Active Directory (Azure AD). مع هذين الشكلين من المصادقة، لا يكون لـAzure RBAC و ACLs أي تأثير.
يتطلب كل من Azure RBAC وACL أن يكون للمستخدم (أو التطبيق) هوية في Azure AD. يتيح لك Azure RBAC الوصول "الخشن" لبيانات حساب التخزين، مثل قراءة أو كتابة الوصول إلى جميع البيانات في حساب التخزين، في حين تتيح لك ACLs منح الوصول "الدقيق"، مثل كتابة الوصول إلى دليل أو ملف معين.
تركز هذه المقالة على Azure RBAC وACLs، وكيف يقوم النظام بتقييمهما معًا لاتخاذ قرارات التفويض لموارد حساب التخزين.
التحكم في الوصول استنادًا إلى الدور من Azure
يستخدم Azure RBAC تعيينات الأدوار لتطبيق مجموعات من الأذونات على مديري الأمن . مبدأ الأمان هو عنصر يمثل المستخدم أو المجموعة أو مدير الخدمة أو الهوية المدارة المحددة في Azure Active Directory (AD). يمكن أن تمنح مجموعة التصاريح مدير الأمان مستوى وصول "خشن" مثل قراءة أو كتابة الوصول إلى جميع البيانات في حساب التخزين أو جميع البيانات في حاوية.
تسمح الأدوار التالية لمدير الأمان بالوصول إلى البيانات في حساب التخزين.
| الدور | الوصف |
|---|---|
| مالك بيانات كائن ثنائي كبير الحجم للتخزين | الوصول الكامل إلى حاويات تخزين كائن ثنائي كبير الحجم والبيانات. يسمح هذا الوصول لمدير الأمان بتعيين عنصر للمالك، وتعديل ACLs لجميع العناصر. |
| مساهم بيانات للبيانات الثنائية الكبيرة للتخزين | قراءة وكتابة وحذف الوصول إلى حاويات تخزين كائن ثنائي كبير الحجم والكائنات الثنائية كبيرة الحجم. لا يسمح هذا الوصول لمدير الأمان بتعيين ملكية عنصر ما، ولكنه يمكن أن يعدل ACL للعناصر المملوكة لمدير الأمان. |
| قارئ بيانات للبيانات الثنائية الكبيرة للتخزين | اقرأ واسرد حاويات تخزين كائن ثنائي كبير الحجم و كائنات ثنائية كبيرة الحجم. |
تسمح أدوار مثل المالك و المساهم و القارئ و المساهم في حساب التخزين لمدير الأمان بإدارة حساب التخزين، ولكنها لا توفر الوصول إلى البيانات داخل هذا الحساب. ومع ذلك، يمكن لهذه الأدوار (باستثناء القارئ) الوصول إلى مفاتيح التخزين، والتي يمكن استخدامها في أدوات العميل المختلفة للوصول إلى البيانات.
قوائم التحكم بالوصول (ACLs)
تمنحك ACLs القدرة على تطبيق مستوى "الحبوب الدقيقة" للوصول إلى الأدلة والملفات. ACL عبارة عن هيكل تصريح يحتوي على سلسلة من إدخالات ACL. كل إدخال ACL يربط مدير الأمن بمستوى الوصول. لمعرفة المزيد، راجع قوائم التحكم في الوصول (ACLs) في Azure Data Lake Storage Gen2.
كيفية تقييم الأذونات
أثناء التفويض المستند إلى مبدأ الأمان، يتم تقييم الأذونات بالترتيب التالي.
1️⃣يتم تقييم مهام دور Azure أولًا وتأخذ الأولوية على أي مهام ACL.
2️⃣ إذا كانت العملية مصرح بها بالكامل استنادًا إلى تعيين دور Azure، فلا يتم تقييم ACLs على الإطلاق.
3️⃣إذا كانت العملية غير مصرح بها بالكامل، يتم تقييم ACLs.

نظرًا للطريقة التي يتم بها تقييم أذونات الوصول من قبل النظام، لا يمكنك استخدام ACL لتقييد الوصول الذي تم منحه بالفعل من خلال تعيين الدور. وذلك لأن النظام يقيّم مهام دور Azure أولًا، وإذا كانت المهمة تمنح إذن وصول كافٍ، يتم تجاهل ACLs.
يُبين الرسم البياني التالي تدفق الإذن لثلاث عمليات شائعة: إدراج محتويات الدليل وقراءة ملف وكتابة ملف.

جدول الأذونات: الجمع بين Azure RBAC وACL
يُبين الجدول التالي كيفية الجمع بين أدوار Azure وإدخالات ACL حتى يتمكن مدير الأمان من تنفيذ العمليات المدرجة في عمود العملية. يعرض هذا الجدول عمودًا يمثل كل مستوى من مستويات التسلسل الهرمي للدليل الوهمي. هناك عمود للدليل الجذري للحاوية (/)، ودليل فرعي يسمى Oregon، ودليل فرعي لدليل Oregon يسمى Portland، وملف نصي في دليل Portland يسمى Data.txt. يظهر في هذه الأعمدة تمثيل قصير لإدخال ACL المطلوب لمنح الأذونات. لا ينطبق (لا ينطبق) يظهر في العمود إذا لم يكن إدخال ACL مطلوبًا لإجراء العملية.
| التشغيل | دور Azure المعين | / | Oregon/ | Portland/ | Data.txt |
|---|---|---|---|---|---|
| اقرأ Data.txt | مالك بيانات كائن ثنائي كبير الحجم للتخزين | غير متوفر | غير متوفر | غير متوفر | غير متوفر |
| مساهم بيانات Storage Blob | غير متوفر | غير متوفر | غير متوفر | غير متوفر | |
| قارئ بيانات كائن ثنائي كبير الحجم للتخزين | غير متوفر | غير متوفر | غير متوفر | غير متوفر | |
| بلا | --X |
--X |
--X |
R-- |
|
| إلحاق Data.txt | مالك بيانات كائن ثنائي كبير الحجم للتخزين | غير متوفر | غير متوفر | غير متوفر | غير متوفر |
| مساهم بيانات Storage Blob | غير متوفر | غير متوفر | غير متوفر | غير متوفر | |
| قارئ بيانات كائن ثنائي كبير الحجم للتخزين | --X |
--X |
--X |
-W- |
|
| بلا | --X |
--X |
--X |
RW- |
|
| حذف Data.txt | مالك بيانات كائن ثنائي كبير الحجم للتخزين | غير متوفر | غير متوفر | غير متوفر | غير متوفر |
| مساهم بيانات Storage Blob | غير متوفر | غير متوفر | غير متوفر | غير متوفر | |
| قارئ بيانات كائن ثنائي كبير الحجم للتخزين | --X |
--X |
-WX |
غير متوفر | |
| بلا | --X |
--X |
-WX |
غير متوفر | |
| إنشاء Data.txt | مالك بيانات كائن ثنائي كبير الحجم للتخزين | غير متوفر | غير متوفر | غير متوفر | غير متوفر |
| مساهم بيانات Storage Blob | غير متوفر | غير متوفر | غير متوفر | غير متوفر | |
| قارئ بيانات كائن ثنائي كبير الحجم للتخزين | --X |
--X |
-WX |
غير متوفر | |
| بلا | --X |
--X |
-WX |
غير متوفر | |
| قائمة / | مالك بيانات كائن ثنائي كبير الحجم للتخزين | غير متوفر | غير متوفر | غير متوفر | غير متوفر |
| مساهم بيانات Storage Blob | غير متوفر | غير متوفر | غير متوفر | غير متوفر | |
| قارئ بيانات كائن ثنائي كبير الحجم للتخزين | غير متوفر | غير متوفر | غير متوفر | غير متوفر | |
| بلا | R-X |
غير متوفر | غير متوفر | غير متوفر | |
| قائمة /Oregon/ | مالك بيانات كائن ثنائي كبير الحجم للتخزين | غير متوفر | غير متوفر | غير متوفر | غير متوفر |
| مساهم بيانات Storage Blob | غير متوفر | غير متوفر | غير متوفر | غير متوفر | |
| قارئ بيانات كائن ثنائي كبير الحجم للتخزين | غير متوفر | غير متوفر | غير متوفر | غير متوفر | |
| بلا | --X |
R-X |
غير متوفر | غير متوفر | |
| قائمة /Oregon/Poetland/ | مالك بيانات كائن ثنائي كبير الحجم للتخزين | غير متوفر | غير متوفر | غير متوفر | غير متوفر |
| مساهم بيانات Storage Blob | غير متوفر | غير متوفر | غير متوفر | غير متوفر | |
| قارئ بيانات كائن ثنائي كبير الحجم للتخزين | غير متوفر | غير متوفر | غير متوفر | غير متوفر | |
| بلا | --X |
--X |
R-X |
غير متوفر |
ملاحظة
لعرض محتويات حاوية في Azure Storage Explorer، يجب على مديري الأمان تسجيل الدخول إلى Storage Explorer باستخدام Azure AD، و (على الأقل) قراءة الوصول (R --) إلى المجلد الجذري (\) للحاوية. يمنحهم هذا المستوى من الإذن القدرة على سرد محتويات المجلد الجذري. إذا كنت لا تريد أن تكون محتويات المجلد الجذر مرئية، فيمكنك تعيين دور القارئ لهم. مع هذا الدور، سيتمكنون من إدراج الحاويات في الحساب، ولكن ليس محتويات الحاوية. يمكنك بعد ذلك منح حق الوصول إلى أدلة وملفات معينة باستخدام ACLs.
مجموعات الأمان
استخدم دائمًا مجموعات أمان Azure AD كمدير معين في إدخال ACL. مقاومة الفرصة للتعيين المباشر للمستخدمين الفرديين أو كيانات الخدمة. سيسمح لك استخدام هذه البنية بإضافة وإزالة المستخدمين أو كيانات الخدمة دون الحاجة إلى إعادة تطبيق قوائم التحكم بالوصول على بنية دليل بأكمله. بل يمكنك فقط إضافة مستخدمين وكيانات الخدمة أو إزالتها من مجموعة أمان Microsoft Azure AD المناسبة.
هناك العديد من الطرق المختلفة لإنشاء مجموعات. على سبيل المثال، تخيل أن لديك دليلاً باسم /LogData يحتوي على بيانات السجل التي يتم إنشاؤها بواسطة الخادم الخاص بك. يستوعب Azure Data Factory (ADF) البيانات في هذا المجلد. سيقوم مستخدمون محددون من فريق هندسة الخدمة بتحميل السجلات وإدارة المستخدمين الآخرين لهذا المجلد، وستقوم مجموعات Databricks المختلفة بتحليل السجلات من هذا المجلد.
لتمكين هذه الأنشطة، يمكنك إنشاء LogsWriter مجموعة و LogsReader مجموعة. ومن ثم يمكنك تعيين الأذونات على النحو التالي:
- أضف مجموعة
LogsWriterإلى ACL لدليل / LogData بأذوناتrwx. - أضف مجموعة
LogsReaderإلى ACL لدليل / LogData بأذوناتr-x. - أضف عنصر الخدمة الرئيسي أو هوية الخدمة المدارة (MSI) لوحدة التغذية التلقائية للمستندات إلى مجموعة
LogsWriters. - أضف المستخدمين في فريق هندسة الخدمة إلى مجموعة
LogsWriter. - أضف عنصر الخدمة الرئيسي أو MSI لقاعدة البيانات إلى المجموعة
LogsReader.
إذا ترك أحد المستخدمين في فريق هندسة الخدمة الشركة، فيمكنك إزالته من مجموعة LogsWriter. إذا لم تضف هذا المستخدم إلى مجموعة ولكن قمت، بدلاً من ذلك، بإضافة إدخال ACL مخصص لذلك المستخدم، يجب إزالة إدخال ACL هذا من الدليل /LogData. قد تحتاج أيضًا إلى إزالة الإدخال من جميع الدلائل الفرعية والملفات في التسلسل الهرمي للدليل بأكمله من الدليل /LogData.
لإنشاء مجموعة وإضافة أعضاء، راجع إنشاء مجموعة أساسية وإضافة أعضاء باستخدام Microsoft Azure Active Directory.
حدود تعيينات دور Azure وإدخالات ACL
باستخدام المجموعات، يقل احتمال أن تتجاوز الحد الأقصى لعدد مهام الدور لكل اشتراك والحد الأقصى لعدد إدخالات ACL لكل ملف أو دليل. يُبين الجدول التالي هذه الحدود.
| آلِيَّة | النطاق | الحدود | مستوى الإذن المدعوم |
|---|---|---|---|
| Azure RBAC | حسابات التخزين والحاويات. مهام دور Azure عبر الموارد على مستوى الاشتراك أو مجموعة الموارد. |
2000 مهام دور Azure في الاشتراك | أدوار Azure (مضمنة أو مخصصة) |
| قائمة التحكم بالوصول (ACL) | دليل، ملف | 32 إدخالات ACL (فعليًا 28 إدخالات ACL) لكل ملف ولكل دليل. يحتوي كل من ACLs و ACLs الافتراضية على حد دخول ACL 32 الخاص بها. | إذن ACL |
تفويض المفتاح المشترك وتوقيع الوصول المشترك (SAS)
يدعم Azure Data Lake Storage Gen2 أيضًا طرق المفتاح المشترك و SAS للمصادقة. تتمثل إحدى خصائص طرق المصادقة هذه في عدم وجود هوية مرتبطة بالمتصل، وبالتالي لا يمكن تنفيذ التفويض المستند إلى تصريح الأمان الرئيسي.
في حالة المفتاح المشترك، يحصل المتصل بشكل فعال على وصول "المستخدم الفائق"، مما يعني الوصول الكامل إلى جميع العمليات على جميع الموارد بما في ذلك البيانات، وإعداد المالك، وتغيير ACLs.
تتضمن رموز SAS الأذونات المسموح بها كجزء من الرمز. يتم تطبيق الأذونات المضمنة في رمز SAS بشكل فعال على جميع قرارات التفويض، ولكن لا يتم إجراء فحوصات ACL إضافية.
الخطوات التالية
لمعرفة المزيد حول قوائم التحكم في الوصول، راجع قوائم التحكم في الوصول (ACLs) في Azure Data Lake Storage Gen2.