Halaman ini menjelaskan cara mengonfigurasi Kerberos untuk layanan Dataproc Metastore yang menggunakan protokol endpoint Thrift. Jika layanan Dataproc Metastore Anda menggunakan protokol endpoint gRPC, lihat Mengonfigurasi Kerberos untuk endpoint gRPC.
Sebelum memulai
Pahami dasar-dasar Kerberos.
Dalam petunjuk ini, Anda akan menggunakan cluster Dataproc untuk membuat aset Kerberos berikut:
- File Keytab.
- File
krb5.conf
- Principal Kerberos.
Untuk mengetahui informasi selengkapnya tentang cara kerja aset Kerberos ini dengan layanan Dataproc Metastore, lihat Tentang Kerberos.
Buat dan host KDC Kerberos Anda sendiri atau pelajari cara menggunakan KDC lokal dari cluster Dataproc.
Buat bucket Cloud Storage atau dapatkan akses ke bucket yang sudah ada. Anda harus menyimpan file
krb5.conf
di bucket ini.
Pertimbangan jaringan
Sebelum mengonfigurasi Kerberos, pertimbangkan setelan jaringan berikut:
Siapkan koneksi IP antara jaringan VPC dan KDC Anda. Anda harus melakukannya untuk mengautentikasi file KDC dengan layanan Dataproc Metastore.
Siapkan aturan Firewall yang diperlukan di KDC Anda. Aturan ini diperlukan untuk mengizinkan traffic dari Dataproc Metastore. Untuk mengetahui informasi selengkapnya, lihat Aturan firewall untuk layanan Anda.
Jika Anda menggunakan Kontrol Layanan VPC, maka secret Secret Manager dan objek Cloud Storage
krb5.conf
harus dimiliki oleh project yang berada di perimeter layanan yang sama dengan layanan Dataproc Metastore.Tentukan jaringan peering VPC yang ingin Anda gunakan. Anda harus mengonfigurasi cluster Dataproc dan layanan Dataproc Metastore dengan jaringan peering VPC yang sama.
Peran yang Diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk membuat Dataproc Metastore dengan Kerberos, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda, berdasarkan prinsip hak istimewa paling rendah:
-
Memberikan kontrol penuh atas resource Dataproc Metastore (
roles/metastore.editor
) -
Memberikan akses penuh ke semua resource Dataproc Metastore, termasuk administrasi kebijakan IAM (
roles/metastore.admin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin
metastore.services.create
yang
diperlukan untuk
membuat Dataproc Metastore dengan Kerberos.
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Untuk mengetahui informasi selengkapnya tentang peran dan izin Dataproc Metastore tertentu, lihat Mengelola akses dengan IAM.Untuk mengetahui informasi selengkapnya, lihat IAM dan kontrol akses Dataproc Metastore.
Mengaktifkan Kerberos untuk Dataproc Metastore
Petunjuk berikut menunjukkan cara mengonfigurasi Kerberos untuk layanan Dataproc Metastore yang terlampir ke cluster Dataproc.
Buat cluster Dataproc dan aktifkan Kerberos
gcloud
Untuk menyiapkan cluster Dataproc dengan Kerberos, jalankan perintah gcloud dataproc clusters create
berikut:
gcloud dataproc clusters create CLUSTER_NAME \ --image-version=2.0 \ --enable-kerberos \ --scopes 'https://www.googleapis.com/auth/cloud-platform'
Ganti kode berikut:
CLUSTER_NAME
: nama cluster Dataproc Anda.
Mengonfigurasi cluster Dataproc untuk kerberos
Petunjuk berikut menunjukkan cara menggunakan SSH untuk terhubung ke cluster Dataproc utama yang terkait dengan layanan Dataproc Metastore Anda.
Setelah itu, Anda memodifikasi file hive-site.xml
dan mengonfigurasi Kerberos untuk layanan Anda.
- Di konsol Google Cloud , buka halaman VM Instances.
Di daftar instance virtual machine, klik SSH di baris node utama Dataproc (
your-cluster-name-m
).Jendela browser akan terbuka di direktori beranda Anda di node.
Buka file
/etc/hive/conf/hive-site.xml
.sudo vim /etc/hive/conf/hive-site.xml
Anda akan melihat output yang mirip dengan berikut ini:
<property> <name>hive.metastore.kerberos.principal</name> <value>PRINCIPAL_NAME</value> </property> <property> <name>hive.metastore.kerberos.keytab.file</name> <value>METASTORE_PRINCPAL_KEYTAB</value> </property>
Ganti:
PRINCIPAL_NAME
: Nama akun utama, dalam format berikutprimary/instance@REALM
. Contohnya,hive/test@C.MY-PROJECT.INTERNAL
.METASTORE_PRINCIPAL_KEYTAB
: lokasi file keytab Hive Metastore Anda. Gunakan nilai berikut/etc/security/keytab/metastore.service.keytab
.
Membuat file keytab
Petunjuk berikut menunjukkan cara membuat file keytab.
File keytab berisi pasangan akun utama Kerberos dan pasangan kunci terenkripsi. Kunci ini digunakan untuk mengautentikasi akun utama layanan dengan KDC Kerberos.
Untuk membuat file keytab
Di sesi SSH Dataproc, buat keytab dan principal.
sudo kadmin.local -q "addprinc -randkey PRINCIPAL_NAME" sudo kadmin.local -q "ktadd -k /etc/security/keytab/metastore.service.keytab PRINCIPAL_NAME"
Di sesi SSH Dataproc, buat dan upload file keytab ke Secret Manager.
gcloud secrets create SECRET_NAME --replication-policy automatic sudo gcloud secrets versions add SECRET_NAME --data-file /etc/security/keytab/metastore.service.keytab
Ganti kode berikut:
SECRET_NAME
: nama secret Anda.
Perbarui file krb5.conf
Selanjutnya, Anda harus memperbarui file krb5.conf
untuk mengaitkannya dengan
cluster Dataproc Anda.
Tentukan alamat IP internal utama instance utama cluster Dataproc.
gcloud compute instances list
Misalnya, menjalankan perintah ini akan menghasilkan output yang serupa:
~$ gcloud compute instances list --project kerberos-project NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS cluster-236-m us-central1-c n2-standard-4 192.0.2.2 *.*.*.* RUNNING ...
Dalam hal ini, alamat IP internal cluster adalah
192.0.2.2
.Buka file
krb5.conf
.sudo vim /etc/krb5.conf
Dalam file, ganti parameter
KDC
dan parameteradmin_server
yang ada dengan alamat IP internal cluster Dataproc Anda.Misalnya, menggunakan nilai alamat IP dari langkah sebelumnya akan terlihat mirip dengan output ini.
[realms] US-CENTRAL1-A.C.MY-PROJECT.INTERNAL = { kdc = 192.0.2.2 admin_server = 192.0.2.2 }
Upload file
/etc/krb5.conf
dari VM utama Dataproc ke bucket Cloud Storage Anda.gcloud storage cp /etc/krb5.conf gs://PATH_TO_KRB5
Ganti:
PATH_TO_KRB5
: URI Cloud Storage yang berisi filekrb5.conf
Anda.
Setelah upload selesai, salin jalur upload. Anda harus menggunakannya saat membuat layanan Dataproc Metastore.
Memberikan peran dan izin IAM
Berikan izin kepada akun layanan Dataproc Metastore untuk mengakses file keytab. Akun ini dikelola Google dan tercantum di halaman UI izin IAM dengan memilih Sertakan pemberian peran yang diberikan Google.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com \ --role roles/secretmanager.secretAccessor
Beri akun layanan Dataproc Metastore izin untuk mengakses file
krb5.conf
.gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com \ --role roles/storage.objectViewer
Membuat layanan Dataproc Metastore dengan Kerberos
Buat layanan Dataproc Metastore baru yang dikonfigurasi dengan file Kerberos Anda.
Pastikan Anda membuat layanan di jaringan VPC sebagai cluster Dataproc Anda.
gcloud metastore services create SERVICE \ --location=LOCATION \ --instance-size=medium \ --network=VPC_NETWORK \ --kerberos-principal=KERBEROS_PRINCIPAL \ --krb5-config=KRB5_CONFIG \ --keytab=CLOUD_SECRET
Ganti kode berikut:
SERVICE
: nama layanan Dataproc Metastore Anda.LOCATION
: lokasi layanan Dataproc Metastore Anda.VPC_NETWORK
:nama jaringan VPC Anda. Gunakan jaringan yang sama yang dikonfigurasi di cluster Dataproc Anda.KERBEROS_PRINCIPAL
: nama principal kerberos yang Anda buat sebelumnya.KRB5_CONFIG
: lokasi filekrb5.config
. Gunakan URI objek Cloud Storage yang mengarah ke file Anda.CLOUD_SECRET
: nama resource relatif dari versi secret Secret Manager.
Setelah Anda membuat cluster, Dataproc Metastore akan mencoba terhubung dengan kredensial kerberos Anda menggunakan file krb5.conf
, keytab, dan principal yang diberikan. Jika koneksi gagal, pembuatan Dataproc Metastore juga akan gagal.
Tautkan cluster Dataproc ke Dataproc Metastore
Setelah layanan Dataproc Metastore dibuat, temukan URI endpoint Thrift dan direktori gudang Anda.
Lakukan SSH ke instance utama cluster Dataproc Anda.
Di sesi SSH, buka file
/etc/hive/conf/hive-site.xml
.sudo vim /etc/hive/conf/hive-site.xml
Ubah
/etc/hive/conf/hive-site.xml
di cluster Dataproc.<property> <name>hive.metastore.uris</name> <!-- Update this value. --> <value>ENDPOINT_URI</value> </property> <!-- Add this property entry. --> <property> <name>hive.metastore.warehouse.dir</name> <value>WAREHOUSE_DIR</value> </property>
Mulai ulang HiveServer2:
sudo systemctl restart hive-server2.service
Mengonfigurasi Dataproc sebelum mengirimkan tugas
Untuk menjalankan tugas Dataproc, Anda harus menambahkan pengguna hive
ke properti allowed.system.users
dalam file container-executor.cfg
Hadoop. Hal ini memungkinkan pengguna menjalankan kueri untuk mengakses data, seperti select * from
.
Di sesi SSH, buka file
container-executor.cfg
Hadoop.sudo vim /etc/hadoop/conf/container-executor.cfg
Tambahkan baris berikut di setiap node Dataproc.
allowed.system.users=hive
Mendapatkan tiket kerberos
Dapatkan tiket kerberos, sebelum terhubung ke instance Dataproc Metastore.
sudo klist -kte /etc/security/keytab/metastore.service.keytab sudo kinit -kt /etc/security/keytab/metastore.service.keytab PRINCIPAL_NAME sudo klist # gets the ticket information. sudo hive
Ganti kode berikut:
PRINCIPAL_NAME
: nama principal Anda.