تكوين نهج Apache Ranger ل Spark SQL في HDInsight باستخدام حزمة أمان المؤسسة
توضح هذه المقالة كيفية تكوين نهج Apache Ranger ل Spark SQL مع حزمة أمان المؤسسة في HDInsight.
في هذه المقالة، ستتعرف على كيفية:
- إنشاء نهج Apache Ranger.
- تحقق من نهج Ranger المطبقة.
- تطبيق إرشادات لإعداد Apache Ranger ل Spark SQL.
المتطلبات الأساسية
- مجموعة Apache Spark في الإصدار 5.1 من HDInsight مع حزمة أمان المؤسسة
الاتصال إلى واجهة مستخدم مسؤول Apache Ranger
من متصفح، اتصل بواجهة مستخدم مسؤول Ranger باستخدام عنوان URL
https://ClusterName.azurehdinsight.net/Ranger/
.قم بالتغيير
ClusterName
إلى اسم نظام مجموعة Spark.سجل الدخول باستخدام بيانات اعتماد مسؤول Microsoft Entra. بيانات اعتماد مسؤول Microsoft Entra ليست هي نفسها بيانات اعتماد نظام مجموعة HDInsight أو بيانات اعتماد عقدة Linux HDInsight Secure Shell (SSH).
إنشاء مستخدمي المجال
للحصول على معلومات حول كيفية إنشاء sparkuser
مستخدمي المجال، راجع إنشاء مجموعة HDInsight باستخدام ESP. في سيناريو الإنتاج، يأتي مستخدمو المجال من مستأجر Microsoft Entra.
إنشاء نهج Ranger
في هذا القسم، يمكنك إنشاء نهجي Ranger:
- نهج وصول للوصول
hivesampletable
من Spark SQL - نهج إخفاء لتعتيم الأعمدة في
hivesampletable
إنشاء نهج وصول Ranger
افتح واجهة مستخدم مسؤول Ranger.
ضمن HADOOP SQL، حدد hive_and_spark.
في علامة التبويب Access ، حدد إضافة نهج جديد.
أدخل القيم التالية:
الخاصية القيمة اسم السياسة read-hivesampletable-all قاعدة بيانات افتراضي طاولتنا hivesampletable العمود * تحديد مستخدم sparkuser
الأذونات حدد إذا لم يتم ملء مستخدم مجال تلقائيا ل Select User، فانتظر بضع لحظات حتى تتم مزامنة Ranger مع معرف Microsoft Entra.
حدد إضافة لحفظ السياسة.
افتح دفتر ملاحظات Zeppelin وقم بتشغيل الأمر التالي للتحقق من النهج:
%sql select * from hivesampletable limit 10;
إليك النتيجة قبل تطبيق النهج:
إليك النتيجة بعد تطبيق نهج:
إنشاء نهج إخفاء Ranger
يوضح المثال التالي كيفية إنشاء نهج لإخفاء عمود:
في علامة التبويب إخفاء ، حدد إضافة نهج جديد.
أدخل القيم التالية:
الخاصية القيمة اسم السياسة قناع hivesampletable قاعدة بيانات الخلية افتراضي جدول الخلية hivesampletable عمود الخلية جهاز/منشأ تحديد مستخدم sparkuser
أنواع الوصول حدد تحديد خيار الإخفاء Hash حدد حفظ لحفظ النهج.
افتح دفتر ملاحظات Zeppelin وقم بتشغيل الأمر التالي للتحقق من النهج:
%sql select clientId, deviceMake from hivesampletable;
إشعار
بشكل افتراضي، تكون نهج Hive وSpark SQL شائعة في Ranger.
تطبيق إرشادات لإعداد Apache Ranger ل Spark SQL
تستكشف السيناريوهات التالية إرشادات إنشاء مجموعة HDInsight 5.1 Spark باستخدام قاعدة بيانات Ranger جديدة وباستخدام قاعدة بيانات Ranger موجودة.
السيناريو 1: استخدام قاعدة بيانات Ranger جديدة أثناء إنشاء مجموعة HDInsight 5.1 Spark
عند استخدام قاعدة بيانات Ranger جديدة لإنشاء نظام مجموعة، يتم إنشاء مستودع Ranger ذي الصلة الذي يحتوي على نهج Ranger ل Hive وSpark تحت الاسم hive_and_spark في خدمة Hadoop SQL على قاعدة بيانات Ranger.
إذا قمت بتحرير النهج، يتم تطبيقها على كل من Hive وSpark.
ضع في اعتبارك هذه النقاط:
إذا كان لديك قاعدتا بيانات metastore بنفس الاسم المستخدم لكل من كتالوجات Hive (على سبيل المثال، DB1) وSpark (على سبيل المثال، DB1):
- إذا كان Spark يستخدم كتالوج Spark (
metastore.catalog.default=spark
)، يتم تطبيق النهج على قاعدة بيانات DB1 لكتالوج Spark. - إذا كان Spark يستخدم كتالوج Hive (
metastore.catalog.default=hive
)، يتم تطبيق النهج على قاعدة بيانات DB1 لكتالوج Apache Hive.
من منظور Ranger، لا توجد طريقة للتمييز بين DB1 من كتالوجات Hive وSpark.
في مثل هذه الحالات، نوصي إما بما يلي:
- استخدم كتالوج Apache Hive لكل من Hive وSpark.
- الاحتفاظ بأسماء مختلفة لقاعدة البيانات والجدول والأعمدة لكتالوجات Apache Hive وSpark بحيث لا يتم تطبيق النهج على قواعد البيانات عبر الكتالوجات.
- إذا كان Spark يستخدم كتالوج Spark (
إذا كنت تستخدم كتالوج Hive لكل من Hive وSpark، ففكر في المثال التالي.
لنفترض أنك تقوم بإنشاء جدول يسمى table1 من خلال Hive باستخدام مستخدم xyz الحالي. يقوم بإنشاء ملف نظام الملفات الموزعة Hadoop (HDFS) المسمى table1.db مالكه هو مستخدم xyz .
الآن تخيل أنك تستخدم abc المستخدم لبدء جلسة Spark SQL. في جلسة عمل المستخدم abc هذه، إذا حاولت كتابة أي شيء إلى table1، فمن المحتم أن يفشل لأن مالك الجدول هو xyz.
في مثل هذه الحالة، نوصي باستخدام نفس المستخدم في Hive وSpark SQL لتحديث الجدول. يجب أن يكون لدى هذا المستخدم امتيازات كافية لتنفيذ عمليات التحديث.
السيناريو 2: استخدام قاعدة بيانات Ranger موجودة (مع النهج الحالية) أثناء إنشاء مجموعة HDInsight 5.1 Spark
عند إنشاء مجموعة HDInsight 5.1 باستخدام قاعدة بيانات Ranger موجودة، يتم إنشاء مستودع Ranger جديد مرة أخرى على قاعدة البيانات هذه باسم المجموعة الجديدة بهذا التنسيق: hive_and_spark.
لنفترض أن لديك النهج المحددة في مستودع Ranger بالفعل تحت اسم oldclustername_hive على قاعدة بيانات Ranger الموجودة داخل خدمة Hadoop SQL. تريد مشاركة نفس النهج في مجموعة HDInsight 5.1 Spark الجديدة. لتحقيق هذا الهدف، استخدم الخطوات التالية.
إشعار
يمكن للمستخدم الذي لديه امتيازات مسؤول Ambari إجراء تحديثات التكوين.
افتح واجهة مستخدم Ambari من مجموعة HDInsight 5.1 الجديدة.
انتقل إلى خدمة Spark3 ، ثم انتقل إلى Configs.
افتح تكوين Advanced ranger-spark-security .
أو يمكنك أيضا فتح هذا التكوين في /etc/spark3/conf باستخدام SSH.
قم بتحرير تكوينين (ranger.plugin.spark.service.name وrangr.plugin.spark.policy.cache.dir) للإشارة إلى oldclustername_hive مستودع النهج القديم، ثم احفظ التكوينات.
Ambari:
ملف XML:
أعد تشغيل خدمات Ranger وSpark من Ambari.
افتح واجهة مستخدم مسؤول Ranger وانقر فوق زر التحرير ضمن خدمة HADOOP SQL .
للحصول على خدمة oldclustername_hive ، أضف مستخدم rangersparklookup في قائمة policy.download.auth.users و tag.download.auth.users وانقر فوق save.
يتم تطبيق النهج على قواعد البيانات في كتالوج Spark. إذا كنت ترغب في الوصول إلى قواعد البيانات في كتالوج Apache Hive:
مشكلات معروفة
- لا يعمل تكامل Apache Ranger مع Spark SQL إذا كان مسؤول Ranger معزولا.
- في سجلات تدقيق Ranger، عند تمرير الماوس فوق عمود Resource ، لا يمكنه إظهار الاستعلام بأكمله الذي قمت بتشغيله.