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:
Klien Kerberos mengirimkan principal dan rahasia (password atau file keytab) ke KDC.
KDC mengembalikan ticket-granting ticket (TGT).
Klien menyimpan TGT di cache tiket.
Klien JDBC (kyuubi-beeline) membaca TGT dari cache.
Klien JDBC mengirimkan TGT dan principal server Kyuubi ke KDC.
KDC mengembalikan tiket client-to-server.
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.
Masuk ke Endpoint console.
Pada halaman Create Endpoint, konfigurasikan parameter berikut lalu klik OK.
Parameter Description Region Pilih wilayah tempat endpoint berada. Harus sesuai dengan wilayah kluster Kerberos dan ruang kerja Serverless Spark. Endpoint name Masukkan nama kustom untuk endpoint. Endpoint type Pilih Interface Endpoint. Endpoint service Klik Select Service, lalu pilih atau masukkan ID Layanan titik akhir target. CatatanUntuk 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.VPC Pilih VPC kluster Kerberos. Security groups Pilih security group untuk diasosiasikan dengan endpoint elastic network interface (ENI). Secara default, Anda dapat menambahkan hingga sembilan security group per endpoint. Zone and vSwitch Pilih zona yang ditentukan dalam tiket dan vSwitch yang sesuai. IP version Pilih 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 group Pilih kelompok sumber daya untuk endpoint. Tag Masukkan Tag key dan Tag value jika diperlukan. 
Pada halaman Basic information, pastikan bahwa Status adalah Active. Nama domain endpoint memiliki format berikut:
ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.comLog on to the Kerberos cluster dan verifikasi bahwa koneksi jaringan berfungsi.

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.
Masuk ke konsol. Pada tab Authoritative zone, klik User defined zones, lalu klik Add zone.
Masukkan nama zona otoritatif, pilih VPC tempat nama domain berlaku, lalu klik OK. Panduan ini menggunakan
kyuubi-kerberos.abcsebagai 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.
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.
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.COMSetelah Anda mengklik OK, domain
test.kyuubi-kerberos.abcdipetakan ke endpoint tersebut.Log on to the Kerberos cluster dan uji konektivitas:
ping test.kyuubi-kerberos.abc
Buat keytab
Jalankan langkah-langkah berikut di kluster Kerberos.
Buka tool admin Kerberos:
kadmin.localBuat 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.COMEkspor file keytab dan keluar:
xst -kt /root/kyuubi.keytab kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD4*****C204.COM quitUnggah 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| Parameter | Description |
|---|---|
kyuubi.authentication | Metode otentikasi. Atur ke KERBEROS. |
kyuubi.kinit.principal | Principal yang digunakan Kyuubi Gateway untuk otentikasi Kerberos. Format: <user>/<host>@<realm>. |
kyuubi.kinit.keytab | Path lokal ke file keytab di dalam gateway. Path /opt/kyuubi/work-dir/ bersifat tetap — hanya ganti nama filenya. |
kyuubi.files | Path 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>| Parameter | Description |
|---|---|
spark.hadoop.hive.metastore.uris | Alamat HMS dalam format Thrift. |
spark.hadoop.hive.imetastoreclient.factory.class | Kelas factory untuk membuat klien HMS. Gunakan org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory. |
spark.hive.metastore.kerberos.principal | Principal HMS di lingkungan Kerberos. |
spark.hive.metastore.sasl.enabled | Atur ke true untuk mengaktifkan otentikasi Kerberos untuk HMS. |
spark.emr.serverless.network.service.name | Nama 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.principalharus dalam formathive/<hostname-of-HMS>@<REALM>.Notasi singkat
hive/_HOST@<REALM>(di mana_HOSTdiselesaikan ke hostname aktual saat runtime) hanya berfungsi ketikametastore.urismenggunakan hostname.
Simpan konfigurasi dan mulai Kyuubi Gateway.
Kirim pekerjaan
Gunakan kueri show databases untuk memverifikasi bahwa Kyuubi Gateway berfungsi dengan benar menggunakan otentikasi Kerberos.
Log on to the Kerberos cluster dan buat pengguna Kerberos untuk pengiriman pekerjaan:
kadmin.local addprinc -randkey hadoop xst -kt /root/hadoop.keytab hadoop quitLakukan otentikasi menggunakan keytab:
kinit -kt hadoop.keytab hadoopIni menyimpan TGT untuk principal
hadoopdi cache, yang akan dibaca oleh kyuubi-beeline pada langkah berikutnya.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:
principalmenentukan principal server Kyuubi. Nilainya harus sesuai dengankyuubi.kinit.principaldi sisi server._HOSTadalah placeholder yang diselesaikan ke hostname aktual saat runtime.URL dibungkus dengan tanda kutip tunggal untuk mencegah shell membagi perintah pada karakter
;.
Setelah terhubung, jalankan
show databasesuntuk memastikan pekerjaan Spark berhasil dimulai.
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.