Bagikan melalui


Mengonfigurasi kebijakan Apache Ranger untuk Spark SQL di HDInsight dengan Paket Keamanan Perusahaan

Artikel ini menjelaskan cara mengonfigurasi kebijakan Apache Ranger untuk Spark SQL dengan Paket Keamanan Perusahaan di HDInsight.

Dalam artikel ini, Anda akan mempelajari cara:

  • Buat kebijakan Apache Ranger.
  • Verifikasi kebijakan Ranger yang diterapkan.
  • Terapkan panduan untuk mengatur Apache Ranger untuk Spark SQL.

Prasyarat

Koneksi ke UI admin Apache Ranger

  1. Dari browser, sambungkan ke antarmuka pengguna admin Ranger dengan menggunakan URL https://ClusterName.azurehdinsight.net/Ranger/.

    Ubah ClusterName ke nama kluster Spark Anda.

  2. Masuk dengan menggunakan kredensial admin Microsoft Entra Anda. Kredensial admin Microsoft Entra tidak sama dengan kredensial kluster HDInsight atau kredensial Secure Shell simpul HDInsight Linux (SSH).

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

Membuat pengguna domain

Untuk informasi tentang cara membuat sparkuser pengguna domain, lihat Membuat kluster HDInsight dengan ESP. Dalam skenario produksi, pengguna domain berasal dari penyewa Microsoft Entra Anda.

Membuat kebijakan Ranger

Di bagian ini, Anda membuat dua kebijakan Ranger:

  • Kebijakan akses untuk mengakses hivesampletable dari Spark SQL
  • Kebijakan masking untuk mengaburkan kolom di hivesampletable

Membuat kebijakan akses Ranger

  1. Buka UI admin Ranger.

  2. Di bawah HADOOP SQL, pilih hive_and_spark.

    Screenshot that shows the selection of Hive and Spark.

  3. Pada tab Akses , pilih Tambahkan Kebijakan Baru.

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

  4. Masukkan nilai berikut:

    Properti Nilai
    Nama Kebijakan read-hivesampletable-all
    database Default
    tabel hivesampletable
    column *
    Pilih Pengguna sparkuser
    Izin select

    Screenshot that shows sample details for an access policy.

    Jika pengguna domain tidak diisi secara otomatis untuk Pilih Pengguna, tunggu beberapa saat agar Ranger disinkronkan dengan ID Microsoft Entra.

  5. Pilih Tambahkan untuk menyimpan kebijakan.

  6. Buka notebook Zeppelin dan jalankan perintah berikut untuk memverifikasi kebijakan:

         %sql 
         select * from hivesampletable limit 10;
    

    Berikut hasilnya sebelum kebijakan diterapkan:

    Screenshot that shows the result before an access policy.

    Berikut hasilnya setelah kebijakan diterapkan:

    Screenshot that shows the result after an access policy.

Membuat kebijakan masking Ranger

Contoh berikut menunjukkan cara membuat kebijakan untuk menutupi kolom:

  1. Pada tab Masking , pilih Tambahkan Kebijakan Baru.

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

  2. Masukkan nilai berikut:

    Properti Nilai
    Nama Kebijakan mask-hivesampletable
    Database Apache Hive Default
    Tabel Apache Hive hivesampletable
    Kolom Apache Hive devicemake
    Pilih Pengguna sparkuser
    Jenis Akses select
    Pilih Opsi Masking Hash

    Screenshot shows masking policy details.

  3. Pilih Simpan untuk menyimpan kebijakan.

  4. Buka notebook Zeppelin dan jalankan perintah berikut untuk memverifikasi kebijakan:

         %sql
         select clientId, deviceMake from hivesampletable; 
    

    Screenshot that shows an open Zeppelin notebook.

Catatan

Secara default, kebijakan untuk Apache Hive dan Spark SQL umum di Ranger.

Menerapkan panduan untuk menyiapkan Apache Ranger untuk Spark SQL

Skenario berikut menjelajahi panduan untuk membuat kluster HDInsight 5.1 Spark dengan menggunakan database Ranger baru dan dengan menggunakan database Ranger yang ada.

Skenario 1: Gunakan database Ranger baru saat membuat kluster HDInsight 5.1 Spark

Saat Anda menggunakan database Ranger baru untuk membuat kluster, repositori Ranger relevan yang berisi kebijakan Ranger untuk Apache Hive dan Spark dibuat dengan nama hive_and_spark dalam layanan Hadoop SQL pada database Ranger.

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

Jika Anda mengedit kebijakan, kebijakan tersebut diterapkan ke Apache Hive dan Spark.

Pertimbangkan poin-poin ini:

  • Jika Anda memiliki dua database metastore dengan nama yang sama yang digunakan untuk katalog Apache Hive (misalnya, DB1) dan Spark (misalnya, DB1):

    • Jika Spark menggunakan katalog Spark (metastore.catalog.default=spark), kebijakan diterapkan ke database DB1 katalog Spark.
    • Jika Spark menggunakan katalog Apache Hive (metastore.catalog.default=hive), kebijakan diterapkan ke database DB1 katalog Apache Hive.

    Dari perspektif Ranger, tidak ada cara untuk membedakan antara DB1 katalog Apache Hive dan Spark.

    Dalam kasus seperti itu, kami sarankan Anda:

    • Gunakan katalog Apache Hive untuk Apache Hive dan Spark.
    • Pertahankan nama database, tabel, dan kolom yang berbeda untuk katalog Apache Hive dan Spark sehingga kebijakan tidak diterapkan ke database di seluruh katalog.
  • Jika Anda menggunakan katalog Apache Hive untuk Apache Hive dan Spark, pertimbangkan contoh berikut.

    Katakanlah Anda membuat tabel bernama table1 melalui Apache Hive dengan pengguna xyz saat ini. Ini membuat file Hadoop Distributed File System (HDFS) bernama table1.db yang pemiliknya adalah pengguna xyz .

    Sekarang bayangkan Anda menggunakan pengguna abc untuk memulai sesi Spark SQL. Dalam sesi pengguna abc ini, jika Anda mencoba menulis apa pun ke table1, itu terikat untuk gagal karena pemilik tabel adalah xyz.

    Dalam kasus seperti itu, kami sarankan Anda menggunakan pengguna yang sama di Apache Hive dan Spark SQL untuk memperbarui tabel. Pengguna tersebut harus memiliki hak istimewa yang memadai untuk melakukan operasi pembaruan.

Skenario 2: Gunakan database Ranger yang ada (dengan kebijakan yang ada) saat membuat kluster HDInsight 5.1 Spark

Saat Anda membuat kluster HDInsight 5.1 dengan menggunakan database Ranger yang ada, repositori Ranger baru dibuat lagi pada database ini dengan nama kluster baru dalam format ini: hive_and_spark.

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

Katakanlah Anda memiliki kebijakan yang ditentukan dalam repositori Ranger yang sudah dinamai oldclustername_hive pada database Ranger yang ada di dalam layanan Hadoop SQL. Anda ingin berbagi kebijakan yang sama di kluster HDInsight 5.1 Spark baru. Untuk mencapai tujuan ini, gunakan langkah-langkah berikut.

Catatan

Pengguna yang memiliki hak istimewa admin Ambari dapat melakukan pembaruan konfigurasi.

  1. Buka UI Ambari dari kluster HDInsight 5.1 baru Anda.

  2. Buka layanan Spark3, lalu buka Konfigurasi.

  3. Buka konfigurasi Advanced ranger-spark-security.

    Screenshot shows Ambari config ranger security.

    atau Anda juga dapat membuka konfigurasi ini di /etc/spark3/conf dengan menggunakan SSH.

    Edit dua konfigurasi (ranger.plugin.spark.service.name dan ranger.plugin.spark.policy.cache.dir) untuk menunjuk ke repositori kebijakan lama oldclustername_hive, lalu simpan konfigurasi.

    Ambari:

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

    File XML:

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

  4. Mulai ulang layanan Ranger dan Spark dari Ambari.

  5. Buka UI admin Ranger dan klik tombol edit di bawah layanan HADOOP SQL .

    Screenshot that shows edit option for ranger service.

  6. Untuk layanan oldclustername_hive , tambahkan pengguna rangersparklookup di daftar policy.download.auth.users dan tag.download.auth.users dan klik simpan.

    Screenshot that shows how to add user in Ranger service.

Kebijakan diterapkan pada database di katalog Spark. Jika Anda ingin mengakses database di katalog Apache Hive:

  1. Di Ambari, buka Konfigurasi Spark3>.

  2. Ubah metastore.catalog.default dari spark ke hive.

    Screenshot that shows changing a metastore configuration.

Masalah yang diketahui

  • Integrasi Apache Ranger dengan Spark SQL tidak berfungsi jika admin Ranger tidak berfungsi.
  • Di log audit Ranger, saat Anda mengarahkan mouse ke atas kolom Sumber Daya , itu tidak dapat memperlihatkan seluruh kueri yang Anda jalankan.