Saat membuat cluster Dataproc, Anda dapat mengaktifkan Hadoop Secure Mode melalui Kerberos untuk menyediakan multi-tenancy melalui autentikasi pengguna, isolasi, dan enkripsi di dalam cluster Dataproc.
Autentikasi Pengguna dan Layanan Google Cloud Platform Lainnya. Autentikasi per pengguna melalui Kerberos hanya berlaku di dalam cluster. Interaksi dengan layanan Google Cloud lainnya, seperti Cloud Storage, tetap diautentikasi sebagai akun layanan untuk cluster tersebut.
Mengaktifkan Hadoop Secure Mode melalui Kerberos
Mengaktifkan Mode Aman Kerberos dan Hadoop untuk cluster akan mencakup distribusi MIT Kerberos dan mengonfigurasi Apache Hadoop YARN, HDFS, Hive, Spark, dan komponen terkait agar menggunakannya untuk autentikasi.
Jika Kerberos diaktifkan, Key Distribution Center (KDC) di cluster, yang berisi akun utama layanan dan akun utama root. Root Principal adalah akun dengan izin administrator ke KDC di cluster. Objek ini juga dapat berisi akun utama pengguna standar atau dihubungkan melalui cross-realm trust ke KDC lain yang berisi akun utama pengguna.
Membuat cluster Kerberos
Anda dapat menggunakan Google Cloud CLI, Dataproc API, atau Google Cloud Console untuk mengaktifkan Kerberos pada cluster yang menggunakan Dataproc image versi 1.3 dan yang lebih baru.
Perintah gcloud
Untuk mengonfigurasi cluster Dataproc Kerberos baru secara otomatis (image versi 1.3 dan yang lebih baru), gunakan perintah gcloud dataproc clusters create.
gcloud dataproc clusters create cluster-name \ --image-version=2.0 \ --enable-kerberos
Properti cluster: Alih-alih menggunakan flag --enable-kerberos
seperti yang ditunjukkan di atas, Anda dapat otomatis mengonfigurasi Kerberos dengan meneruskan flag --properties "dataproc:kerberos.beta.automatic-config.enable=true"
ke perintah pembuatan cluster (lihat Properti layanan Dataproc).
REST API
Cluster Kerberos dapat dibuat melalui ClusterConfig.SecurityConfig.KerberosConfig
sebagai bagian dari permintaan
clusters.create. Anda harus menetapkan enableKerberos
ke true
.
Konsol
Anda dapat mengonfigurasi Kerberos secara otomatis di cluster baru dengan memilih "Enable" dari bagian Kerberos and Hadoop Secure Mode di panel Manage security di halaman Create a cluster pada Konsol Google Cloud.
Membuat cluster Kerberos dengan Sandi Utama Root Anda Sendiri
Ikuti langkah-langkah di bawah ini untuk menyiapkan cluster Kerberos yang menggunakan sandi utama root Anda.
Siapkan sandi utama root Kerberos Anda
Root Principal Kerberos adalah akun
dengan izin administrator ke KDC di cluster. Agar dapat memberikan sandi untuk root Principal Kerberos dengan aman, pengguna dapat mengenkripsinya dengan kunci Key Management Service (KMS), lalu menyimpannya di bucket Google Cloud Storage yang dapat diakses akun layanan cluster. Akun layanan cluster harus diberi peran IAM cloudkms.cryptoKeyDecrypter
.
Berikan peran Encrypter/Decrypter Cloud KMS ke akun layanan cluster:
gcloud projects add-iam-policy-binding project-id \ --member serviceAccount:project-number-compute@developer.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyDecrypter
Membuat key ring:
gcloud kms keyrings create my-keyring --location global
Buat kunci di key ring:
gcloud kms keys create my-key \ --location global \ --keyring my-keyring \ --purpose encryption
Enkripsi sandi utama root Kerberos Anda:
echo "my-password" | \ gcloud kms encrypt \ --location=global \ --keyring=my-keyring \ --key=my-key \ --plaintext-file=- \ --ciphertext-file=kerberos-root-principal-password.encrypted
- Upload sandi terenkripsi ke bucket Cloud Storage di project Anda.
- Contoh:
gsutil cp kerberos-root-principal-password.encrypted gs://my-bucket
- Contoh:
- Upload sandi terenkripsi ke bucket Cloud Storage di project Anda.
Membuat cluster
Anda dapat menggunakan perintah gcloud
atau Dataproc API untuk mengaktifkan Kerberos pada cluster dengan sandi utama root Anda sendiri.
Perintah gcloud
Untuk membuat cluster Dataproc Kerberos (image versi 1.3 dan yang lebih baru), gunakan perintah gcloud dataproc clusters create.
gcloud dataproc clusters create cluster-name \ --region=region \ --image-version=2.0 \ --kerberos-root-principal-password-uri=gs://my-bucket/kerberos-root-principal-password.encrypted \ --kerberos-kms-key=projects/project-id/locations/global/keyRings/my-keyring/cryptoKeys/my-key
Gunakan file konfigurasi YAML (atau JSON). Daripada meneruskan flag kerberos-*
ke perintah gcloud
seperti yang ditunjukkan di atas, Anda dapat menempatkan setelan kerberos dalam file konfigurasi YAML (atau JSON), lalu mereferensikan file konfigurasi untuk membuat cluster kerberos.
- Buat file konfigurasi (lihat Sertifikat SSL, Setelan Kerberos Tambahan, dan Cross-realm trust untuk setelan konfigurasi tambahan yang dapat disertakan dalam file):
root_principal_password_uri: gs://my-bucket/kerberos-root-principal-password.encrypted kms_key_uri: projects/project-id/locations/global/keyRings/mykeyring/cryptoKeys/my-key
- Gunakan perintah
gcloud
berikut untuk membuat cluster kerberos:gcloud dataproc clusters create cluster-name \ --region=region \ --kerberos-config-file=local path to config-file \ --image-version=2.0
Pertimbangan Keamanan. Dataproc menghapus bentuk sandi yang didekripsi
setelah menambahkan akun utama root ke KDC. Untuk tujuan keamanan, setelah membuat cluster, Anda dapat memutuskan untuk menghapus file sandi dan kunci yang digunakan untuk mendekripsi rahasia, serta menghapus akun layanan dari peran kmsKeyDecrypter
. Jangan lakukan ini jika Anda berencana meningkatkan skala cluster, yang memerlukan file sandi dan kunci, serta peran akun layanan.
REST API
Cluster Kerberos dapat dibuat melalui ClusterConfig.SecurityConfig.KerberosConfig
sebagai bagian dari permintaan
clusters.create. Tetapkan enableKerberos
ke benar (true) dan tetapkan kolom
rootPrincipalPasswordUri
dan kmsKeyUri
.
Konsol
Saat membuat cluster dengan image versi 1.3+, pilih "Enable" dari bagian Kerberos dan Hadoop Secure Mode pada panel Manage security di halaman Create a cluster pada Konsol Google Cloud, lalu selesaikan opsi keamanan (dibahas di bagian berikut).
Login OS
Pengelolaan KDC di cluster dapat dilakukan dengan perintah kadmin
menggunakan akun utama pengguna Kerberos root atau menggunakan sudo kadmin.local
.
Aktifkan Login OS untuk mengontrol siapa yang dapat menjalankan perintah superuser.
Sertifikat SSL
Sebagai bagian dari pengaktifan Hadoop Secure Mode, Dataproc membuat sertifikat yang ditandatangani sendiri untuk mengaktifkan enkripsi SSL cluster. Sebagai alternatif, Anda dapat memberikan sertifikat untuk enkripsi SSL cluster dengan menambahkan setelan berikut ke file konfigurasi saat membuat cluster kerberos:
ssl:keystore_password_uri
: Lokasi di Cloud Storage file terenkripsi KMS yang berisi sandi ke file keystore.ssl:key_password_uri
: Lokasi di Cloud Storage file yang dienkripsi KMS yang berisi sandi ke kunci dalam file keystore.ssl:keystore_uri
: Lokasi di Cloud Storage file keystore yang berisi sertifikat karakter pengganti dan kunci pribadi yang digunakan oleh node cluster.ssl:truststore_password_uri
: Lokasi di Cloud Storage file terenkripsi KMS yang berisi sandi ke file truststore.ssl:truststore_uri
: Lokasi di Cloud Storage file trust store yang berisi sertifikat tepercaya.
Contoh file konfigurasi:
root_principal_password_uri: gs://my-bucket/kerberos-root-principal-password.encrypted kms_key_uri: projects/project-id/locations/global/keyRings/mykeyring/cryptoKeys/my-key ssl: key_password_uri: gs://bucket/key_password.encrypted keystore_password_uri: gs://bucket/keystore_password.encrypted keystore_uri: gs://bucket/keystore.jks truststore_password_uri: gs://bucket/truststore_password.encrypted truststore_uri: gs://bucket/truststore.jks
Setelan Kerberos Tambahan
Untuk menentukan realm Kerberos, buat cluster kerberos dengan properti berikut yang ditambahkan dalam file konfigurasi Kerberos:
realm
: Nama realm Kerberos di cluster.
Jika properti ini tidak disetel, domain nama host (dalam huruf besar) akan menjadi realm.
Untuk menentukan kunci master database KDC, buat cluster kerberos dengan properti berikut yang ditambahkan dalam file konfigurasi Kerberos:
kdc_db_key_uri
: Lokasi di Cloud Storage file yang dienkripsi KMS yang berisi kunci master database KDC.
Jika properti ini tidak ditetapkan, Dataproc akan menghasilkan kunci master.
Untuk menentukan masa aktif maksimum ticket-granting ticket (dalam jam), buat cluster kerberos dengan properti berikut yang ditambahkan dalam file konfigurasi Kerberos:
tgt_lifetime_hours
: Waktu masa aktif maksimum ticket-granting ticket dalam jam.
Jika properti ini tidak ditetapkan, Dataproc akan menetapkan masa aktif tiket ticket-granting ke 10 jam.
Kepercayaan lintas dunia
KDC pada cluster awalnya hanya berisi akun utama administrator dan akun utama layanan root. Anda dapat menambahkan akun utama pengguna secara manual atau membangun kepercayaan lintas realm dengan server KDC eksternal atau Active Directory yang menyimpan akun utama pengguna. Cloud VPN atau Cloud Interconnect direkomendasikan untuk terhubung ke KDC/Active Directory lokal.
Untuk membuat cluster kerberos yang mendukung kepercayaan lintas realm, tambahkan setelan yang tercantum di bawah ke file konfigurasi Kerberos saat Anda membuat cluster kerberos. Enkripsikan sandi bersama dengan KMS dan simpan di bucket Cloud Storage yang dapat diakses oleh akun layanan cluster.
cross_realm_trust:admin_server
: nama host/alamat server admin jarak jauh.cross_realm_trust:kdc
: nama host/alamat KDC jarak jauh.cross_realm_trust:realm
: nama realm jarak jauh yang akan dipercaya.cross_realm_trust:shared_password_uri
: Lokasi di Cloud Storage sandi bersama yang dienkripsi dengan KMS.
Contoh file konfigurasi:
root_principal_password_uri: gs://my-bucket/kerberos-root-principal-password.encrypted kms_key_uri: projects/project-id/locations/global/keyRings/mykeyring/cryptoKeys/my-key cross_realm_trust: admin_server: admin.remote.realm kdc: kdc.remote.realm realm: REMOTE.REALM shared_password_uri: gs://bucket/shared_password.encrypted
Untuk mengaktifkan kepercayaan lintas realm ke KDC jarak jauh:
Tambahkan kode berikut dalam file
/etc/krb5.conf
di KDC jarak jauh:[realms] DATAPROC.REALM = { kdc = MASTER-NAME-OR-ADDRESS admin_server = MASTER-NAME-OR-ADDRESS }
Membuat pengguna kepercayaan:
kadmin -q "addprinc krbtgt/DATAPROC.REALM@REMOTE.REALM"
Jika diminta, masukkan sandi pengguna. Sandi harus cocok dengan konten file sandi bersama yang dienkripsi
Untuk mengaktifkan kepercayaan lintas realm dengan Active Directory, jalankan perintah berikut di PowerShell sebagai Administrator:
Buat definisi KDC di {i>Active Directory<i}.
ksetup /addkdc DATAPROC.REALM DATAPROC-CLUSTER-MASTER-NAME-OR-ADDRESS
Membangun kepercayaan di Active Directory.
Sandi harus cocok dengan konten file sandi bersama yang dienkripsi.netdom trust DATAPROC.REALM /Domain AD.REALM /add /realm /passwordt:TRUST-PASSWORD
dataproc
akun utama
Saat Anda mengirimkan tugas melalui jobs API Dataproc ke cluster kerberos Dataproc, tugas tersebut akan berjalan sebagai akun utama keberos dataproc
dari realm kerberos cluster.
Multi-tenancy didukung dalam cluster kerberos Dataproc jika Anda mengirim tugas secara langsung, ke cluster, misalnya melalui SSH. Namun, jika tugas membaca atau menulis ke layanan Google Cloud lainnya, seperti Cloud Storage, tugas tersebut akan bertindak sebagai akun layanan cluster.
Properti Cluster Default dan Kustom
Mode aman Hadoop dikonfigurasi dengan properti dalam file konfigurasi. Dataproc menetapkan nilai default untuk properti ini.
Anda dapat mengganti properti default saat membuat cluster dengan flag
gcloud dataproc clusters create
--properties
atau dengan memanggil clusters.create API dan menyetel
SoftwareConfig properties (lihat
contoh properti cluster).
Mode Ketersediaan Tinggi
Dalam mode Ketersediaan Tinggi (HA),
cluster kerberos akan memiliki 3 KDC: satu untuk setiap master. KDC yang berjalan pada
master "pertama" ($CLUSTER_NAME-m-0
) akan menjadi KDC Master dan juga berfungsi sebagai Server Admin.
Database Master KDC akan disinkronkan ke dua KDC replika dengan interval 5 menit
melalui cron job, dan 3 KDC akan menyalurkan traffic baca.
Kerberos secara native tidak mendukung replikasi real-time atau failover otomatis jika KDC master tidak aktif. Untuk melakukan failover manual:
- Pada semua mesin KDC, di
/etc/krb5.conf
, ubahadmin_server
menjadi FQDN (Nama Domain yang Memenuhi Syarat Sepenuhnya) untuk Master baru. Hapus Master lama dari daftar KDC. - Di KDC Master baru, siapkan cron job untuk menyebarkan database.
- Di KDC Master baru, mulai ulang proses admin_server (
krb5-admin-server
). - Di semua mesin KDC, mulai ulang proses KDC (
krb5-kdc
).
Konfigurasi Jaringan
Untuk memastikan node pekerja dapat berkomunikasi dengan Server Admin KDC dan Kerberos yang berjalan pada master, pastikan aturan firewall VPC mengizinkan traffic TCP dan UDP masuk di port 88 dan traffic TCP masuk di port 749 pada master. Dalam mode Ketersediaan Tinggi, pastikan aturan firewall VPC mengizinkan traffic TCP masuk pada port 754 di master untuk memungkinkan penerapan perubahan yang dibuat ke KDC master. Kerberos memerlukan DNS terbalik agar dapat diatur dengan benar. Selain itu, untuk kanonikalisasi utama layanan berbasis host, pastikan DNS terbalik disiapkan dengan benar untuk jaringan cluster.
Untuk Informasi Selengkapnya
Lihat Dokumentasi Kerberos MIT.