مشاركة عبر


تكوين نهج Apache Ranger ل Spark SQL في HDInsight باستخدام حزمة أمان المؤسسة

توضح هذه المقالة كيفية تكوين نهج Apache Ranger ل Spark SQL مع حزمة أمان المؤسسة في HDInsight.

في هذه المقالة، ستتعرف على كيفية:

  • إنشاء نهج Apache Ranger.
  • تحقق من نهج Ranger المطبقة.
  • تطبيق إرشادات لإعداد Apache Ranger ل Spark SQL.

المتطلبات الأساسية

الاتصال إلى واجهة مستخدم مسؤول Apache Ranger

  1. من متصفح، اتصل بواجهة مستخدم مسؤول Ranger باستخدام عنوان URL https://ClusterName.azurehdinsight.net/Ranger/.

    قم بالتغيير ClusterName إلى اسم نظام مجموعة Spark.

  2. سجل الدخول باستخدام بيانات اعتماد مسؤول Microsoft Entra. بيانات اعتماد مسؤول Microsoft Entra ليست هي نفسها بيانات اعتماد نظام مجموعة HDInsight أو بيانات اعتماد عقدة Linux HDInsight Secure Shell (SSH).

    Screenshot that shows the Service Manager page in the Ranger user interface.

إنشاء مستخدمي المجال

للحصول على معلومات حول كيفية إنشاء sparkuser مستخدمي المجال، راجع إنشاء مجموعة HDInsight باستخدام ESP. في سيناريو الإنتاج، يأتي مستخدمو المجال من مستأجر Microsoft Entra.

إنشاء نهج Ranger

في هذا القسم، يمكنك إنشاء نهجي Ranger:

  • نهج وصول للوصول hivesampletable من Spark SQL
  • نهج إخفاء لتعتيم الأعمدة في hivesampletable

إنشاء نهج وصول Ranger

  1. افتح واجهة مستخدم مسؤول Ranger.

  2. ضمن HADOOP SQL، حدد hive_and_spark.

    Screenshot that shows the selection of Hive and Spark.

  3. في علامة التبويب Access ، حدد إضافة نهج جديد.

    Screenshot that shows the button for adding a new access policy.

  4. أدخل القيم التالية:

    الخاصية القيمة
    اسم السياسة read-hivesampletable-all
    قاعدة بيانات افتراضي
    طاولتنا hivesampletable
    العمود *
    تحديد مستخدم sparkuser
    الأذونات حدد

    Screenshot that shows sample details for an access policy.

    إذا لم يتم ملء مستخدم مجال تلقائيا ل Select User، فانتظر بضع لحظات حتى تتم مزامنة Ranger مع معرف Microsoft Entra.

  5. حدد إضافة لحفظ السياسة.

  6. افتح دفتر ملاحظات Zeppelin وقم بتشغيل الأمر التالي للتحقق من النهج:

         %sql 
         select * from hivesampletable limit 10;
    

    إليك النتيجة قبل تطبيق النهج:

    Screenshot that shows the result before an access policy.

    إليك النتيجة بعد تطبيق نهج:

    Screenshot that shows the result after an access policy.

إنشاء نهج إخفاء Ranger

يوضح المثال التالي كيفية إنشاء نهج لإخفاء عمود:

  1. في علامة التبويب إخفاء ، حدد إضافة نهج جديد.

    Screenshot that shows the button for adding a new masking policy.

  2. أدخل القيم التالية:

    الخاصية القيمة
    اسم السياسة قناع hivesampletable
    قاعدة بيانات الخلية افتراضي
    جدول الخلية hivesampletable
    عمود الخلية جهاز/منشأ
    تحديد مستخدم sparkuser
    أنواع الوصول حدد
    تحديد خيار الإخفاء Hash

    Screenshot shows masking policy details.

  3. حدد حفظ لحفظ النهج.

  4. افتح دفتر ملاحظات Zeppelin وقم بتشغيل الأمر التالي للتحقق من النهج:

         %sql
         select clientId, deviceMake from hivesampletable; 
    

    Screenshot that shows an open Zeppelin notebook.

إشعار

بشكل افتراضي، تكون نهج 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.

Screenshot that shows the repo that contains the Ranger policies for Hive and Spark.

إذا قمت بتحرير النهج، يتم تطبيقها على كل من 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 بحيث لا يتم تطبيق النهج على قواعد البيانات عبر الكتالوجات.
  • إذا كنت تستخدم كتالوج 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.

Screenshot that shows a new repo with an old ranger database.

لنفترض أن لديك النهج المحددة في مستودع Ranger بالفعل تحت اسم oldclustername_hive على قاعدة بيانات Ranger الموجودة داخل خدمة Hadoop SQL. تريد مشاركة نفس النهج في مجموعة HDInsight 5.1 Spark الجديدة. لتحقيق هذا الهدف، استخدم الخطوات التالية.

إشعار

يمكن للمستخدم الذي لديه امتيازات مسؤول Ambari إجراء تحديثات التكوين.

  1. افتح واجهة مستخدم Ambari من مجموعة HDInsight 5.1 الجديدة.

  2. انتقل إلى خدمة Spark3 ، ثم انتقل إلى Configs.

  3. افتح تكوين Advanced ranger-spark-security .

    Screenshot shows Ambari config ranger security.

    أو يمكنك أيضا فتح هذا التكوين في /etc/spark3/conf باستخدام SSH.

    قم بتحرير تكوينين (ranger.plugin.spark.service.name وrangr.plugin.spark.policy.cache.dir) للإشارة إلى oldclustername_hive مستودع النهج القديم، ثم احفظ التكوينات.

    Ambari:

    Screenshot that shows a configuration update for service name in Ambari.

    ملف XML:

    Screenshot that shows a configuration update for service name in XML.

  4. أعد تشغيل خدمات Ranger وSpark من Ambari.

  5. افتح واجهة مستخدم مسؤول Ranger وانقر فوق زر التحرير ضمن خدمة HADOOP SQL .

    Screenshot that shows edit option for ranger service.

  6. للحصول على خدمة oldclustername_hive ، أضف مستخدم rangersparklookup في قائمة policy.download.auth.users و tag.download.auth.users وانقر فوق save.

    Screenshot that shows how to add user in Ranger service.

يتم تطبيق النهج على قواعد البيانات في كتالوج Spark. إذا كنت ترغب في الوصول إلى قواعد البيانات في كتالوج Apache Hive:

  1. في Ambari، انتقل إلى Spark3>Configs.

  2. تغيير metastore.catalog.default من spark إلى الخلية.

    Screenshot that shows changing a metastore configuration.

مشكلات معروفة

  • لا يعمل تكامل Apache Ranger مع Spark SQL إذا كان مسؤول Ranger معزولا.
  • في سجلات تدقيق Ranger، عند تمرير الماوس فوق عمود Resource ، لا يمكنه إظهار الاستعلام بأكمله الذي قمت بتشغيله.