All Products
Search
Document Center

E-MapReduce:Gunakan Kerberos dengan Kyuubi Gateway

Last Updated:Mar 26, 2026

Serverless Spark mendukung otentikasi Kerberos untuk Kyuubi Gateway, yang menerapkan verifikasi identitas dan kontrol akses untuk semua pengiriman pekerjaan. Setelah pengaturan selesai, klien harus melakukan otentikasi dengan Kerberos sebelum mengirimkan tugas ke gateway.

Cara kerja

Kerberos menggunakan model otentikasi berbasis tiket. Sebelum klien dapat terhubung ke Kyuubi Gateway, klien tersebut menukar kredensial dengan Key Distribution Center (KDC) untuk mendapatkan tiket. Alur otentikasi dijelaskan dalam langkah-langkah berikut:

  1. Klien Kerberos mengirimkan principal dan rahasia (password atau file keytab) ke KDC.

  2. KDC mengembalikan ticket-granting ticket (TGT).

  3. Klien menyimpan TGT di cache tiket.

  4. Klien JDBC (kyuubi-beeline) membaca TGT dari cache.

  5. Klien JDBC mengirimkan TGT dan principal server Kyuubi ke KDC.

  6. KDC mengembalikan tiket client-to-server.

  7. Klien JDBC menyerahkan tiket client-to-server ke Kyuubi Gateway untuk melakukan otentikasi.

Pemahaman terhadap alur ini menjelaskan mengapa setiap langkah konfigurasi diperlukan: file keytab memungkinkan Kyuubi Gateway mengotentikasi dirinya sendiri ke KDC, perintah kinit digunakan untuk mendapatkan TGT bagi klien, dan parameter principal pada URL JDBC memberi tahu klien server mana yang harus dimintai tiket.

Batasan

  • Kluster E-MapReduce (EMR) dan ruang kerja Serverless Spark harus berada di wilayah yang sama.

  • Hanya satu Kyuubi Gateway yang dapat dibuat di ruang kerja tempat Kerberos diaktifkan.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Kluster EMR on ECS dengan otentikasi Kerberos yang diaktifkan. Untuk detailnya, lihat Create a cluster.

  • Ruang kerja Serverless Spark dengan otentikasi Kerberos yang diaktifkan. Untuk detailnya, lihat Enable Kerberos authentication.

Buat konektivitas jaringan

Kyuubi Gateway berjalan di dalam Serverless Spark. Untuk mengakses kluster Kerberos, konfigurasikan PrivateLink guna membuat koneksi jaringan pribadi antara kedua lingkungan tersebut.

Buat endpoint

Endpoint dibuat dan dikelola oleh konsumen layanan. Asosiasikan endpoint tersebut dengan Layanan titik akhir untuk mengakses kluster Kerberos melalui PrivateLink. Untuk detailnya, lihat Endpoints.

  1. Masuk ke Endpoint console.

  2. Pada halaman Create Endpoint, konfigurasikan parameter berikut lalu klik OK.

    ParameterDescription
    RegionPilih wilayah tempat endpoint berada. Harus sesuai dengan wilayah kluster Kerberos dan ruang kerja Serverless Spark.
    Endpoint nameMasukkan nama kustom untuk endpoint.
    Endpoint typePilih Interface Endpoint.
    Endpoint serviceKlik Select Service, lalu pilih atau masukkan ID Layanan titik akhir target.
    Catatan

    Untuk mendapatkan ID Layanan titik akhir, submit a ticket dengan informasi berikut: ID ruang kerja Serverless Spark (misalnya, w-f8cfXXXXXX), ID VPC kluster Kerberos (misalnya, vpc-bp1tXXXXXX), dan dua zona yang memiliki vSwitch tersedia (misalnya, I,J). Hubungi layanan pelanggan melalui tiket tersebut untuk mengetahui zona yang didukung di wilayah Anda.

    VPCPilih VPC kluster Kerberos.
    Security groupsPilih security group untuk diasosiasikan dengan endpoint elastic network interface (ENI). Secara default, Anda dapat menambahkan hingga sembilan security group per endpoint.
    Zone and vSwitchPilih zona yang ditentukan dalam tiket dan vSwitch yang sesuai.
    IP versionPilih jenis jaringan: IPv4 untuk akses klien IPv4-only, atau Dual-stack untuk IPv4 dan IPv6. Dual-stack memerlukan penyedia layanan untuk menyelesaikan konfigurasi dual-stack terlebih dahulu.
    Resource groupPilih kelompok sumber daya untuk endpoint.
    TagMasukkan Tag key dan Tag value jika diperlukan.

    image

  3. Pada halaman Basic information, pastikan bahwa Status adalah Active. Nama domain endpoint memiliki format berikut:

    ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com
  4. Log on to the Kerberos cluster dan verifikasi bahwa koneksi jaringan berfungsi.

    image

Konfigurasikan resolusi nama domain (opsional)

Nama domain endpoint default cukup panjang. Untuk kemudahan, petakan ke nama kustom yang lebih pendek menggunakan zona DNS otoritatif internal. Untuk detailnya, lihat Internal authoritative domain names.

  1. Masuk ke konsol. Pada tab Authoritative zone, klik User defined zones, lalu klik Add zone.

  2. Masukkan nama zona otoritatif, pilih VPC tempat nama domain berlaku, lalu klik OK. Panduan ini menggunakan kyuubi-kerberos.abc sebagai contoh.

    Jika opsi Domain name type tersedia, pilih Internal authoritative acceleration zone. Jika opsi tidak ditampilkan, jenis zona secara otomatis diatur ke internal authoritative acceleration.
  3. Pada tab User defined zones, temukan zona tersebut lalu klik Settings di kolom Actions. Di kotak dialog, klik Add record dan pilih Form editor mode.

  4. Atur Record type ke CNAME. Untuk Hostname, masukkan nilai seperti test. Untuk Record value, masukkan nama domain endpoint:

    addprinc -randkey kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD4*****C204.COM

    Setelah Anda mengklik OK, domain test.kyuubi-kerberos.abc dipetakan ke endpoint tersebut.

  5. Log on to the Kerberos cluster dan uji konektivitas:

    ping test.kyuubi-kerberos.abc

Buat keytab

Jalankan langkah-langkah berikut di kluster Kerberos.

  1. Log on to the Kerberos cluster.

  2. Buka tool admin Kerberos:

    kadmin.local
  3. Buat principal dengan format kyuubi/<fqdn>@<REALM>. Untuk <fqdn>, gunakan nama domain endpoint. Jika Anda telah mengonfigurasi CNAME, gunakan nama domain kustom sebagai gantinya:

    addprinc -randkey kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD4*****C204.COM
  4. Ekspor file keytab dan keluar:

    xst -kt /root/kyuubi.keytab kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD4*****C204.COM
    quit
  5. Unggah keytab ke bucket Object Storage Service (OSS):

    hadoop fs -put /root/kyuubi.keytab oss://<YOUR_BUCKET>.<region>.oss-dls.aliyuncs.com/

Konfigurasikan Kyuubi Gateway

Tambahkan parameter Kyuubi configuration berikut ke gateway:

kyuubi.authentication              KERBEROS
kyuubi.kinit.principal             kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD43******7C204.COM
kyuubi.kinit.keytab                /opt/kyuubi/work-dir/kyuubi.keytab
kyuubi.files                       oss://bucket/path/to/kyuubi.keytab
ParameterDescription
kyuubi.authenticationMetode otentikasi. Atur ke KERBEROS.
kyuubi.kinit.principalPrincipal yang digunakan Kyuubi Gateway untuk otentikasi Kerberos. Format: <user>/<host>@<realm>.
kyuubi.kinit.keytabPath lokal ke file keytab di dalam gateway. Path /opt/kyuubi/work-dir/ bersifat tetap — hanya ganti nama filenya.
kyuubi.filesPath OSS file keytab yang diunggah pada langkah sebelumnya. Kyuubi mengunduhnya ke path yang ditentukan oleh kyuubi.kinit.keytab saat startup.

Jika pekerjaan Spark Anda mengakses Hive Metastore (HMS) yang diaktifkan Kerberos, tambahkan parameter Spark configuration berikut:

spark.hadoop.hive.metastore.uris                    thrift://master-1-1.c-1d36*****e840c.cn-hangzhou.emr.aliyuncs.com:9083
spark.hadoop.hive.imetastoreclient.factory.class    org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory
spark.hive.metastore.kerberos.principal             hive/_HOST@EMR.C-DFD4*****C204.COM
spark.hive.metastore.sasl.enabled                   true
spark.emr.serverless.network.service.name           <network_name>
ParameterDescription
spark.hadoop.hive.metastore.urisAlamat HMS dalam format Thrift.
spark.hadoop.hive.imetastoreclient.factory.classKelas factory untuk membuat klien HMS. Gunakan org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory.
spark.hive.metastore.kerberos.principalPrincipal HMS di lingkungan Kerberos.
spark.hive.metastore.sasl.enabledAtur ke true untuk mengaktifkan otentikasi Kerberos untuk HMS.
spark.emr.serverless.network.service.nameNama koneksi jaringan antara Serverless Spark dan kluster EMR.

Aturan format alamat HMS:

  • Kluster high availability (HA): Tentukan beberapa alamat Thrift yang dipisahkan koma. Gunakan hostname — alamat IP tidak didukung dalam mode HA.

  • Alamat HMS tunggal: Anda dapat menggunakan alamat IP, tetapi spark.hive.metastore.kerberos.principal harus dalam format hive/<hostname-of-HMS>@<REALM>.

  • Notasi singkat hive/_HOST@<REALM> (di mana _HOST diselesaikan ke hostname aktual saat runtime) hanya berfungsi ketika metastore.uris menggunakan hostname.

Simpan konfigurasi dan mulai Kyuubi Gateway.

Kirim pekerjaan

Gunakan kueri show databases untuk memverifikasi bahwa Kyuubi Gateway berfungsi dengan benar menggunakan otentikasi Kerberos.

  1. Log on to the Kerberos cluster dan buat pengguna Kerberos untuk pengiriman pekerjaan:

    kadmin.local
    addprinc -randkey hadoop
    xst -kt /root/hadoop.keytab hadoop
    quit
  2. Lakukan otentikasi menggunakan keytab:

    kinit -kt hadoop.keytab hadoop

    Ini menyimpan TGT untuk principal hadoop di cache, yang akan dibaca oleh kyuubi-beeline pada langkah berikutnya.

  3. Terhubung ke Kyuubi Gateway dan jalankan kueri uji:

    /opt/apps/KYUUBI/kyuubi-1.9.2-1.0.0/bin/kyuubi-beeline -u 'jdbc:hive2://ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com:10009/;principal=kyuubi/_HOST@EMR.C-DFD43*****7C204.COM'

    Catatan mengenai URL JDBC:

    • principal menentukan principal server Kyuubi. Nilainya harus sesuai dengan kyuubi.kinit.principal di sisi server.

    • _HOST adalah placeholder yang diselesaikan ke hostname aktual saat runtime.

    • URL dibungkus dengan tanda kutip tunggal untuk mencegah shell membagi perintah pada karakter ;.

  4. Setelah terhubung, jalankan show databases untuk memastikan pekerjaan Spark berhasil dimulai.

    image

Konfigurasikan akses proxy user untuk HDFS dan HMS

Jika pekerjaan Spark perlu mengakses HMS atau Hadoop Distributed File System (HDFS) yang diaktifkan Kerberos, tambahkan dua properti berikut ke core-site.xml untuk komponen HADOOP-COMMON atau HDFS di kluster:

hadoop.proxyuser.kyuubi.hosts = *
hadoop.proxyuser.kyuubi.groups = *

Properti-properti ini memungkinkan akun layanan kyuubi (pengguna yang menjalankan Kyuubi Gateway) untuk berpura-pura menjadi pengguna lain saat mengakses HDFS atau HMS atas nama mereka. Nilai hosts mengontrol alamat host mana yang dapat diakses oleh akun kyuubi; nilai groups mengontrol kelompok pengguna mana yang dapat dipalsukan. Tanpa properti ini, koneksi dari pekerjaan Spark yang dijalankan sebagai pengguna non-kyuubi dapat gagal.

Nilai wildcard (*) memberikan akses dari semua host dan untuk semua kelompok pengguna. Untuk lingkungan produksi, ganti * dengan nilai spesifik — misalnya, atur hosts ke alamat IP node Kyuubi Gateway Anda dan groups ke kelompok yang diikuti pengguna klien Anda.

Versi EMR DataLake yang lebih baru sudah menyertakan properti ini secara default. Setelah menambahkan properti tersebut, restart layanan HDFS atau HMS agar perubahan diterapkan.