تنصيح: كل الآراء والآراء المعبر عنها في المدونة تنتمي بصفة حصرية إلى المؤلف وليس بالضرورة إلى جهة عمل المؤلف أو أي مجموعة أو شخص آخر. هذه المقالة ليست ترويجاً لأي منصة سحابية/إدارة بيانات. جميع الصور ومقاطع الشفرة متاحة علناً على موقع Azure/Databricks.
في هذه المقالة، سأقدم السيناريو لأتمتة إدارة الصلاحيات على مستوى مخطط Unity Catalog.
الامتيازات على مستوى مخطط Unity Catalog
يمكن لنموذج الامتيازات الهرمي في Unity Catalog للمستخدمين تطبيق الامتيازات على أي مستوى في التسلسل الهرمي، ويورث الكائن(ات) الفرعي(ن) نفس الأذونات تلقائيًا. لذا، إذا تم تطبيق الإذن على مستوى المخطط، سيتم تطبيقه تلقائيًا على جميع الجداول والعروض والأحجام والوظائف داخل المخطط.
في Unity Catalog (Databricks)، يتم تطبيق الأذونات على مستوى المخطط عندما ترغب في التحكم في الوصول إلى مجموعة من الجداول والعروض داخل مخطط محدد. تُطبق الأذونات على مستوى المخطط عادة في السيناريوهات التالية:
- منح الوصول إلى مجموعات الكائنات: إذا كنت ترغب في إدارة الأذونات لعدة جداول وعروض بشكل جماعي، فإنه من الكفء تطبيق الأذونات على مستوى المخطط بدلاً من تطبيقها بشكل فردي على كل جدول أو عرض. يتيح لك ذلك التحكم في الوصول إلى جميع الكائنات داخل ذلك المخطط بشكل متزامن.
- التحكم التنظيمي: عندما تحتاج الفرق أو الأقسام المختلفة داخل منظمة ما إلى الوصول إلى مجموعات بيانات محددة، التي يتم تخزينها تحت مخططات منفصلة. يسمح تطبيق أذونات مستوى المخطط بمنح أو تقييد الوصول إلى جميع الكائنات ذات الصلة بفريق داخل ذلك المخطط.
- إدارة الأذونات المتسقة: بالنسبة للبيئات التي يتم فيها إضافة كائنات جديدة (جداول/عرض) بشكل متكرر إلى مخطط، فإن ضبط الأذونات على مستوى المخطط يضمن أن ترث الكائنات الجديدة الأذونات تلقائيًا، مما يقلل من الحاجة إلى تحديثات الأذونات اليدوية.
- الحفاظ على أمان البيانات: عندما تريد فرض ضوابط الوصول على فئة معينة من مجموعات البيانات (مثل بيانات المالية، بيانات الموارد البشرية) التي تم تنظيمها منطقيًا تحت مخطط. من خلال ضبط الأذونات على مستوى المخطط، تحافظ على أمان البيانات مع تبسيط الإدارة.
نص الأتمتة
المتطلبات الأساسية
- تم إعداد دليل الوحدة بالفعل.
- الجهة الرئيسية مرتبطة بمساحة عمل Databricks.
- لدى المستخدم الذي يقوم بتشغيل نص الأذونات الأذونات المناسبة على المخطط والدليل.
الخطوة 1: إنشاء دفتر ملاحظات وإعلان المتغيرات
قم بإنشاء دفتر ملاحظات في مساحة عمل Databricks. لإنشاء دفتر ملاحظات في مساحة العمل الخاصة بك، انقر على “+” جديد في الشريط الجانبي، ثم اختر دفتر ملاحظات.
انسخ والصق مقتطف الكود أدناه في خلية دفتر الملاحظات وقم بتشغيل الخلية.
catalog = 'main' # Specify your catalog name
schema = 'default' # Specify your schema name
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)
الخطوة 3: تكرار الأدوار والامتيازات وتطبيق الإذن على الكتالوج والمخطط
انسخ والصق وقم بتشغيل الكود أدناه في خلية جديدة أو موجودة، ثم قم بتشغيل الخلية لتطبيق الأذونات.
for principal in principals:
query = f"GRANT USE_CATALOG ON CATALOG `{catalog}` TO `{principal}`" # Apply use catalog permission at Catalog level
spark.sql(query)
query = f"USE SCHEMA `{schema}`" # Sets the schema
spark.sql(query)
query = f"GRANT USE_SCHEMA ON SCHEMA `{schema}` TO `{principal}`" # Apply use schema permission at Schema level
spark.sql(query)
for privilege in privileges:
query = f"GRANT `{privilege}` ON SCHEMA `{schema}` TO `{principal}`" # Use schema permission at Schema level
spark.sql(query)
التحقق
يمكنك التحقق من الامتيازات عن طريق فتح واجهة مستخدم Databricks والانتقال إلى الكتالوج في مستكشف البيانات. بمجرد ظهور الكتالوج في قسم البيانات، انقر فوق الكتالوج، ثم حدد المخطط الذي طبقت عليه الأذونات وانتقل إلى علامة الأذونات. يمكنك الآن رؤية جميع الامتيازات التي تم تطبيقها على المخطط.
يمكنك أيضًا تشغيل النص البرمجي SQL أدناه في دفتر ملاحظات لعرض جميع الأذونات لمخطط كجزء من التحقق.
SHOW GRANTS ON SCHEMA my_schema;
الاستنتاج
تتمثل أهمية توحيد إدارة الامتيازات في كتالوج وحدة Databricks على مستوى المخطط في ضمان التحكم في الوصول المتسق والفعال لمجموعة الكائنات (على سبيل المثال، الجداول، والعروض، والوظائف، وحجوم) في الكتالوج. يبرز الكود المقدم طريقة عملية لتعيين امتيازات على مستوى المخطط، مما يجعل إدارة الأذونات أسهل عبر الأدوار (مثل المستخدمين والمجموعات). يساعد هذا النهج في تقليل المهام الإدارية وفرص الأخطاء اليدوية من خلال تجميع الجداول والعروض داخل مخطط واحد وتطبيق أذونات متسقة على المخطط بأكمله.
Source:
https://dzone.com/articles/automate-databricks-unity-catalog-permissions-at-schema-level