إخلاء المسؤولية: جميع الآراء والآراء المعبر عنها في المدونة تنتمي بشكل حصري إلى المؤلف وليس بالضرورة إلى جهة عمل المؤلف أو أي مجموعة أو فرد آخر. هذه المقالة ليست ترويجًا لأي منصة لإدارة البيانات/السحابية. جميع الصور ومقاطع الشفرة متاحة علنيًا على موقع Azure/Databricks.
في مقالاتي الأخرى على DZone، تحدثت عن ما هو دليل وحدة Databricks، وكيفية عمل نموذج الامتياز في دليل Unity، مستوى المخطط، والنص البرمجي لتوتير إدارة الأذونات على مستويات الدليل والمخطط
في هذه المقالة، أهدف إلى توفير النص البرمجي الذي سيوتمت إدارة الأذونات على مستوى جدول دليل Unity.
الامتيازات على مستوى جدول دليل Unity
في دليل Unity (Databricks)، تطبيق الأذونات على مستوى الجدول ضروري عندما ترغب في التحكم في الوصول إلى جداول أو عروض معينة، بدلاً من تطبيق الأذونات على جميع الكائنات داخل مخطط معين. تكون الأذونات على مستوى الجدول مفيدة في السيناريوهات التالية:
1. التحكم في الوصول التفصيلي
عندما تحتاج إلى منح أو تقييد الوصول إلى جداول أو عروض معينة دون التأثير على المخطط بأكمله.
هذا مهم بشكل خاص عندما يحتوي النظام الخاص بك على بيانات حساسة، وترغب في السماح بالوصول إلى بعض الجداول مع تقييد الوصول إلى البعض الآخر.
2. حماية البيانات الحساسة
إذا احتوت بعض الجداول ضمن النظام على بيانات سرية أو محظورة (على سبيل المثال، معلومات تعريف شخصية، بيانات مالية)، يمكنك تطبيق أذونات على مستوى الجدول لضمان أن يمكن للمستخدمين المعتمدين فقط عرض أو استعلام هذه الجداول.
على سبيل المثال، قد تسمح بالوصول إلى بعض الجداول التي تحتوي على بيانات ملخصة أو مجمعة ولكن تقيد الوصول إلى الجداول الخامة والتفصيلية التي تحتوي على معلومات حساسة.
3. تفويض الوصول للفرق/المستخدمين المحددين إذا كانت النظام يحتوي على جداول مخصصة لعدة فرق
عندما يحتاج مستخدمون أو فرق مختلفة إلى الوصول إلى جداول مختلفة ضمن نفس النظام. على سبيل المثال، قد يحتاج فريق المبيعات إلى الوصول إلى جداول متعلقة بالعملاء، بينما يحتاج فريق المالية إلى الوصول إلى جداول الإيرادات.
تطبيق الأذونات على مستوى الجدول يضمن أن يمكن لكل فريق الوصول فقط إلى الجداول ذات الصلة بعملهم.
4. الامتثال لحوكمة البيانات
عند فرض سياسات صارمة لحوكمة البيانات، قد تحتاج إلى التحكم في الوصول على مستوى أكثر تفصيلاً (حتى على مستوى الجدول الفردي). تساعد أذونات مستوى الجدول في ضمان الامتثال من خلال منح الوصول فقط إلى البيانات التي يُفترض أن يعمل بها المستخدم أو الدور.
5. التعامل مع احتياجات الوصول المختلطة ضمن نظام واحد
في الحالات التي تحتوي فيها مخططات على جداول ذات مستويات متفاوتة من الحساسية أو السرية، قد يكون تطبيق الأذونات على مستوى المخطط واسعًا جدًا. تتيح أذونات مستوى الجدول لك إدارة الوصول لكل جدول بشكل فردي استنادًا إلى الاحتياجات المحددة.
الأذونات التي يمكن تطبيقها على مستوى الجدول
- SELECT: تمنح الوصول للقراءة إلى الجدول، مما يسمح للمستخدمين باستعلامه.
- MODIFY: يمنح القدرة على إضافة وحذف وتعديل البيانات إلى أو من كائن.
- APPLY TAG: يمنح القدرة على تطبيق العلامات على كائن.
- ALL PRIVILEGES: يمنح جميع الامتيازات.
نص السيناريو التلقائي
المتطلبات المسبقة
- تم إعداد كتالوج Unity بالفعل.
- الممثل(ون) مرتبط(ون) بمساحة العمل Databricks.
- يجب أن يمتلك المستخدم الذي يقوم بتشغيل النص التوجيهي الأذونات السليمة على الجدول(الجداول)، المخطط، والكتالوج.
الخطوة 1: إنشاء دفتر وتعريف المتغيرات
قم بإنشاء دفتر في مساحة العمل Databricks. لإنشاء دفتر في مساحة العمل الخاصة بك، انقر فوق “+” جديد في الشريط الجانبي، ثم اختر دفتر.
يفتح دفتر فارغ في مساحة العمل. تأكد من تحديد Python كلغة الدفتر.
انسخ والصق قطعة الكود أدناه في خانة الدفتر وقم بتشغيل الخانة.
catalog = 'main' # Specify your catalog name
schema = 'default' # Specify your schema name
tables_arr= 'test1,test2' # Specify the Comma(,) seperated values of table name
tables = tables_arr.split(',')
principals_arr = '' # Specify the Comma(,) seperated values for principals in the blank text section (e.g. groups, username)
principals = principals_arr.split(',')
privileges_arr = 'SELECT,APPLY TAG' # Specify the Comma(,) seperated values for priviledges in the blank text section (e.g. SELECT,APPLY TAG)
privileges = privileges_arr.split(',')
الخطوة 2: تعيين الفهرس والمخطط
انسخ، الصق، وقم بتشغيل كتلة الكود أدناه في خانة جديدة أو في الخانة الحالية وقم بتشغيل الخانة.
query = f"USE CATALOG `{catalog}`" #Sets the Catalog
spark.sql(query)
query = f"USE SCHEMA `{schema}`" #Sets the Schema
spark.sql(query)
الخطوة 3: تكرار عبر المبادئ والامتيازات وتطبيق الإذن على الفهرس والمخطط والجداول
انسخ، الصق، وقم بتشغيل كتلة الكود أدناه في خانة جديدة أو موجودة، ثم قم بتشغيل الخانة لتطبيق الأذونات.
for principal in principals:
query = f"GRANT USE_CATALOG ON CATALOG `{catalog}` TO `{principal}`" # Use catalog permission at Catalog level
spark.sql(query)
query = f"GRANT USE_SCHEMA ON SCHEMA `{schema}` TO `{principal}`" # Use schema permission at Schema level
spark.sql(query)
for table in tables:
for privilege in privileges:
query = f"GRANT `{privilege}` ON `{table}` TO `{principal}`" # Grant priviledges on the tables to the pricipal
print(query)
spark.sql(query)
التحقق
يمكنك التحقق من الأذونات عن طريق فتح واجهة مستخدم Databricks والانتقال إلى “الفهرس” في مستكشف البيانات. عندما يظهر الفهرس في قسم البيانات، انقر فوق الفهرس، ثم قم بتوسيع المخطط وتحديد الجدول داخل المخطط حيث قمت بتطبيق الأذونات، وانتقل إلى علامة التبويب “الأذونات”. يمكنك الآن رؤية جميع الامتيازات المطبقة على الجدول. فيما يلي لقطة شاشة للأذونات المطبقة في جدول الفهرس الأصلي والمخطط information_schema
.
يمكنك أيضًا تشغيل النص البرمجي SQL أدناه في دفتر لعرض جميع الأذونات لجدول كجزء من التحقق.
SHOW GRANTS ON TABLE table_name;
الاستنتاج
تؤدي توحيد إدارة الامتيازات في كتالوج الوحدة Databricks على مستوى الجدول إلى ضمان نهج متسق وفعال لتطبيق الأذونات على أدنى مستوى في كتالوج الوحدة. يوضح الكود المقدم طريقة عملية لتعيين امتيازات متعددة على مستوى الجدول لعدة مبادئ وجداول في كتالوج ومخطط واحد. في كتالوج يحتوي على مئات الجداول ويجب توفير أذونات مختلفة لمبادئ مختلفة، تقلل الأتمتة المذكورة أعلاه بشكل كبير من الأخطاء اليدوية والجهد.
Source:
https://dzone.com/articles/automate-databricks-unity-catalog-permissions-at-table-level