Topik ini menjelaskan cara mengonfigurasi autentikasi identitas berbasis token untuk Kyuubi Gateway di EMR Serverless Spark. Metode ini menggunakan token yang terikat pada pengguna Resource Access Management (RAM) untuk mengaktifkan kontrol akses detail halus terhadap data Paimon Catalog di Data Lake Formation (DLF). Klien yang berbeda dapat menggunakan kredensial identitas unik mereka untuk mengakses gateway Kyuubi yang sama, tetapi hanya dapat melakukan kueri terhadap data yang memiliki izin akses.
Kasus penggunaan
Dalam platform analitik data perusahaan, banyak pengguna atau aplikasi mengakses data melalui gateway SQL terpadu seperti Kyuubi Gateway. Untuk memastikan keamanan data, akses dari identitas yang berbeda harus diisolasi sehingga setiap pengguna hanya dapat mengakses data dalam cakupan yang telah diotorisasi. Misalnya, Analis A hanya dapat melakukan kueri laporan bisnis, sedangkan Insinyur Data B dapat mengakses set data mentah yang mendasarinya. Solusi ini menyediakan isolasi izin data dalam lingkungan multitenancy serta memberikan autentikasi identitas dan kontrol akses end-to-end.
Prosedur
Langkah 1: Siapkan lingkungan dan izin pengguna RAM
Siapkan resource dasar.
Buat ruang kerja. Untuk informasi selengkapnya, lihat Manage workspaces.
Buat dan mulai Kyuubi Gateway di ruang kerja tersebut. Untuk informasi selengkapnya, lihat Manage Kyuubi Gateways.
Buat data catalog di DLF dan siapkan database serta tabel yang diperlukan.
Konfigurasikan pengguna RAM dan izinnya.Siapkan pengguna RAM dan berikan izin yang diperlukan kepadanya.
Izin EMR Serverless Spark: Berikan izin operasi dasar kepada pengguna RAM yang diperlukan untuk mengakses EMR Serverless Spark. Untuk informasi selengkapnya, lihat Grant permissions to a RAM user.
Izin ruang kerja: Tambahkan pengguna RAM ke ruang kerja dan tetapkan role sesuai fungsinya. Untuk informasi selengkapnya, lihat Manage users and roles.
Langkah 2: Berikan izin tabel kepada pengguna RAM di DLF
Berikan izin akses kepada pengguna RAM untuk tabel tertentu di DLF. Untuk memastikan Kyuubi Gateway dapat menginisialisasi sesi Spark, Anda juga harus memberikan izin Describe kepada pengguna RAM untuk database default di DLF.
Masuk ke .
Arahkan ke database dan tabel dalam katalog target.
Pilih tabel yang akan diberikan izinnya, lalu klik tab Permissions.
Klik Grant Permissions.
Principal: pilih DLF User/DLF Role.
Select DLF User: pilih pengguna RAM target.
Permissions: pilih izin yang diperlukan.
Klik OK. Otorisasi selesai.
CatatanEMR Serverless Spark secara default mengaktifkan cache untuk metadata dan data DLF. Jika Anda memberikan ulang izin untuk suatu tabel, perubahan tersebut memerlukan waktu sekitar 10 menit untuk berlaku.
Jika Anda ingin perubahan izin langsung berlaku, tambahkan konfigurasi
spark.sql.catalog.lakehouse.cache-enabled falseke konfigurasi Spark di Kyuubi Gateway.
Langkah 3: Hasilkan token Kyuubi untuk pengguna RAM
Pada halaman Kyuubi Gateway, temukan gateway target, lalu di kolom Actions, klik Tokens.
Klik Create Token. Pada kotak dialog yang muncul, konfigurasikan parameter berikut dan klik OK.
Parameter
Deskripsi
Name
Nama token baru.
Expired At
Tetapkan waktu kedaluwarsa token. Nilainya harus 1 atau lebih besar. Secara default, fitur ini diaktifkan dan token kedaluwarsa setelah 365 hari.
Assigned To
Dari daftar drop-down, pilih pengguna RAM target.
Salin informasi token tersebut.
PentingSetelah token dibuat, Anda harus segera menyalin informasi tokennya. Anda tidak dapat mengambilnya lagi nanti. Jika token kedaluwarsa atau hilang, Anda harus membuat yang baru atau mereset yang ada.
Langkah 4: Hubungkan menggunakan Beeline dan verifikasi izin
Buat perintah koneksi JDBC.
beeline -u "jdbc:hive2://<endpoint>:<port>/;transportMode=http;user=<UserName or RoleName>;httpPath=cliservice/token/<Token>"Deskripsi parameter:
Parameter
Deskripsi
<endpoint>Endpoint Kyuubi Gateway.
<port>Port akses. Port untuk Endpoint publik adalah
443. Port untuk Endpoint jaringan internal adalah80.<UserName or RoleName>Pengguna RAM atau Peran RAM. Anda dapat menggunakan nama pendek atau nama lengkap. Contoh:
Pengguna RAM:
agentatauagent@xxxx05398154xxxx.onaliyun.comPeran RAM:
AliyunServiceRoleForDataworksEngine
<Token>Token yang dihasilkan untuk pengguna RAM pada Langkah 3.

Verifikasi efek kontrol akses.
Lakukan kueri pada tabel yang diizinkan:
SELECT * FROM <database_name>.<authorized_table_name> LIMIT 10;Data kueri dikembalikan dengan sukses.

Lakukan kueri pada tabel yang tidak diizinkan:
SELECT * FROM <database_name>.<unauthorized_table_name> LIMIT 10;Kueri gagal dan mengembalikan error terkait izin, seperti
emr_test doesn't have privilege SELECT on TABLE.
FAQ
Q1: Setelah saya memberikan izin, saya masih bisa melakukan kueri pada tabel yang tidak diizinkan dan mendapatkan hasilnya. Apakah izin belum berlaku?
Masalah ini dapat terjadi karena alasan berikut:
Cache metadata DLF: Mesin Spark menyimpan cache informasi skema tabel, sehingga pemeriksaan otorisasi dapat dilewati.
Solusi: Tambahkanspark.sql.catalog.lakehouse.cache-enabled falseke konfigurasi Spark untuk menonaktifkan cache metadata.Latensi izin: Dalam kasus jarang terjadi, sinkronisasi izin DLF mungkin mengalami penundaan singkat, biasanya tidak lebih dari 10 detik.
Saran: Tunggu sebentar lalu coba lagi, atau pastikan izin telah diberikan dengan benar di Konsol DLF.
Q2: Saya tidak dapat melihat token setelah dibuat. Apa yang harus saya lakukan jika token tersebut hilang?
Token teks biasa hanya ditampilkan sekali dalam kotak dialog setelah dibuat. Sistem tidak menyimpan nilai aslinya. Jika token hilang atau bocor, Anda harus segera melakukan tindakan berikut:
Pada halaman Manajemen Token, temukan entri yang sesuai dan klik Reset Token.
Token lama secara otomatis tidak berlaku dan kredensial baru dihasilkan.
Perbarui semua konfigurasi klien dengan token baru tersebut.
Q3: Mengapa pengguna RAM memerlukan izin Describe untuk database default agar dapat terhubung ke Kyuubi Gateway?
Secara default, saat sesi Spark dibuat, Kyuubi Gateway mencoba memuat database default sebagai konteks awal. Jika identitas saat ini tidak memiliki izin untuk mengakses database tersebut, inisialisasi sesi gagal dan koneksi diputus. Pemeriksaan ini bersifat wajib, bahkan jika tabel bisnis Anda berada di database lain. Oleh karena itu, semua pengguna RAM yang terhubung ke gateway harus memiliki izin DescribeDatabase untuk database default.
Lampiran: Alur proxy identitas dan eksekusi izin
Inti dari solusi ini adalah menggunakan token Kyuubi Gateway sebagai kredensial identitas. Gateway melakukan proxy terhadap permintaan akses atas nama pemilik token, yaitu pengguna RAM. Proses ini mengintegrasikan sistem izin Data Lake Formation (DLF) ke dalam alur kerja kueri EMR Serverless Spark.
Alur kerjanya sebagai berikut:
Generasi token: Token sementara dihasilkan untuk pengguna RAM tertentu di Kyuubi Gateway. Token ini secara unik terikat pada identitas pengguna RAM tersebut.
Autentikasi klien: Saat klien, seperti Beeline, membuat koneksi Java Database Connectivity (JDBC), klien menyertakan token ini dan username RAM yang sesuai dalam permintaan koneksi ke Kyuubi Gateway.
Proxy identitas: Kyuubi Gateway memvalidasi token tersebut. Selama kueri Spark SQL, mesin EMR Serverless Spark melakukan impersonasi terhadap identitas pengguna RAM.
Otorisasi DLF: Saat mesin Spark mengakses metadata atau data di DLF, mesin tersebut mengirim permintaan ke DLF menggunakan identitas pengguna RAM yang di-impersonasi.
Penerapan izin: DLF mengotorisasi permintaan berdasarkan kebijakan akses yang dikonfigurasi untuk pengguna RAM tersebut dan mengembalikan hasilnya.