Klien dapat terhubung ke cluster Managed Service untuk Apache Kafka menggunakan API Apache Kafka open source. Semua koneksi harus dienkripsi menggunakan TLS; komunikasi teks biasa tidak didukung. Autentikasi ditangani melalui salah satu dari dua mekanisme yang didukung, yang masing-masing memiliki jenis kredensial yang berbeda: SASL atau mTLS.
Dokumen ini menjelaskan cara melakukan autentikasi menggunakan metode SASL. Klien melakukan autentikasi menggunakan kredensial akun utama Identity and Access Management yang sah, seperti akun layanan. Managed Service untuk Apache Kafka mengelola sertifikat broker sisi server untuk semua koneksi.
Sebelum memulai
Pelajari lebih lanjut hal-hal berikut:
Memberikan peran klien Managed Kafka ke akun layanan
Anda harus memberikan peran IAM roles/managedkafka.client
di project yang berisi cluster kepada akun layanan yang akan Anda gunakan untuk terhubung ke cluster.
Peran klien Managed Kafka mencakup izin
managedkafka.clusters.connect yang diperlukan untuk semua koneksi.
Untuk memberikan peran klien Managed Kafka ke akun layanan,
ikuti langkah-langkah berikut:
Konsol
- Di konsol Google Cloud , buka halaman IAM.
Buka IAM - Pastikan project disetel ke project konsumen yang akan diakses oleh klien Managed Service untuk Apache Kafka.
- Klik Grant access.
- Di halaman baru, untuk Add Principals, masukkan alamat email akun layanan yang Anda gunakan.
- Untuk Assign roles, pilih peran Managed Kafka client.
- Klik Simpan.
gcloud CLI
-
Di konsol Google Cloud , aktifkan Cloud Shell.
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.
-
Jalankan perintah
gcloud projects add-iam-policy-binding:gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL \ --role roles/managedkafka.client
Ganti kode berikut:
-
PROJECT_ID adalah project ID.
-
SERVICE_ACCOUNT_EMAIL adalah alamat email akun layanan.
-
Konfigurasi klien Kafka untuk melakukan autentikasi ke Google Cloud
Anda dapat mengautentikasi klien Kafka ke Google Cloud dengan menggunakan salah satu mekanisme berikut:
OAUTHBEARER (Direkomendasikan): Mekanisme ini mengharuskan penggunaan Kredensial Default Aplikasi (ADC). ADC adalah strategi yang digunakan oleh library autentikasi untuk menemukan kredensial secara otomatis berdasarkan lingkungan aplikasi. Untuk mengetahui informasi selengkapnya tentang tempat ADC mencari kredensial dan urutannya, lihat Cara kerja Kredensial Default Aplikasi.
SASL/PLAIN: Mekanisme ini mengharuskan penggunaan nama pengguna dan sandi yang dapat diperoleh dari file JSON kunci akun layanan, atau token akses.
Secara umum, OAUTHBEARER adalah opsi yang direkomendasikan. Namun, SASL/PLAIN mungkin merupakan mekanisme yang lebih praktis untuk pengujian.
Autentikasi OAuthBearer
Untuk mengetahui informasi tentang cara mengautentikasi ke Kafka API open source, lihat dokumentasi di GitHub.
Autentikasi SASL/PLAIN
Managed Service untuk Apache Kafka mendukung autentikasi SASL/PLAIN dengan file JSON kunci akun layanan, atau token akses.
File JSON kunci akun layanan
Metode ini berlaku untuk semua klien Kafka.
Download file JSON kunci akun layanan untuk akun layanan yang akan Anda gunakan untuk klien.
Enkode file akun layanan menggunakan base64-encode untuk digunakan sebagai string autentikasi Anda. Asumsikan nama file sebagai
my_service_account_key.json.Pada sistem Linux atau macOS, gunakan perintah
base64(sering diinstal secara default) sebagai berikut:base64 -w 0 < my_service_account_key.json > password.txtPerintah ini melakukan tindakan berikut:
base64 < my_service_account_key.json: Membaca konten file bernamamy_service_account_key.json.Mengenkode isi file menggunakan encoding base64. Encoding Base64 adalah cara untuk merepresentasikan data biner (seperti data JSON dalam file akun layanan Anda) sebagai teks ASCII. Cara ini sering digunakan untuk mengirimkan data melalui saluran yang dirancang untuk teks.
> password.txt: Mengalihkan output perintahbase64(versi file akun layanan Anda yang dienkode base64) ke file baru bernamapassword.txt.
Anda dapat menggunakan konten file sandi untuk autentikasi dengan parameter berikut.
security.protocol=SASL_SSL sasl.mechanism=PLAIN sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \ username="SERVICE_ACCOUNT_EMAIL_ADDRESS" \ password="CONTENTS_OF_BASE64_ENCODED_PASSWORD_FILE";Ganti kode berikut:
SERVICE_ACCOUNT_EMAIL_ADDRESS: Alamat email akun layanan yang ingin Anda gunakan untuk autentikasi.CONTENTS_OF_BASE64_ENCODED_PASSWORD_FILE: Isi file sandi berenkode base64 yang Anda peroleh pada langkah sebelumnya. Ini harus berupa satu baris.
Saat mengautentikasi koneksi masuk ke cluster, Managed Service untuk Apache Kafka akan memeriksa hal berikut:
Nama pengguna yang diberikan cocok dengan akun layanan yang kuncinya digunakan dalam sandi.
Principal akun layanan yang diberikan memiliki izin
managedkafka.clusters.connect(termasuk dalam peran IAMroles/managedkafka.client) di cluster.
Token akses
Dapatkan token akses untuk akun utama yang ingin Anda gunakan untuk autentikasi. Misalnya, dapatkan token akses untuk prinsipal gcloud CLI saat ini:
gcloud auth print-access-tokenAnda dapat menggunakan token akses untuk autentikasi dengan parameter berikut.
security.protocol=SASL_SSL sasl.mechanism=PLAIN sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \ username="PRINCIPAL_EMAIL_ADDRESS" \ password="ACCESS_TOKEN_VALUE";Ganti kode berikut:
PRINCIPAL_EMAIL_ADDRESS: Alamat email principal yang Anda gunakan untuk mendapatkan token akses.ACCESS_TOKEN_VALUE: Nilai token akses yang Anda peroleh pada langkah sebelumnya.
Saat mengautentikasi koneksi masuk ke cluster, Managed Service untuk Apache Kafka akan memeriksa hal berikut:
Token akses valid dan belum habis masa berlakunya.
Nama pengguna yang diberikan cocok dengan email utama yang terkait dengan token akses.
Akun utama token akses memiliki izin
managedkafka.clusters.connect(termasuk dalam peran IAMroles/managedkafka.client) di cluster.
Workload Identity Federation for GKE
Managed Service untuk Apache Kafka mendukung autentikasi ke Apache Kafka API open source menggunakan Workload Identity Federation for GKE. Autentikasi didukung untuk SASL/PLAIN dan SASL/OAUTHBEARER.
Untuk menggunakan Workload Identity Federation for GKE dengan Managed Service untuk Apache Kafka, Anda harus mematuhi persyaratan berikut:
- Gunakan GKE versi
1.31.1-gke.1241000atau yang lebih baru. Anotasikan akun layanan Kubernetes Anda dengan
iam.gke.io/return-principal-id-as-email: "true". Contoh:apiVersion: v1 kind: ServiceAccount metadata: name: kafka-service-account annotations: iam.gke.io/return-principal-id-as-email: "true"Jika Anda menggunakan server autentikasi lokal, pastikan Anda juga menggunakan paket google-auth versi
2.40.3atau yang lebih tinggi.
Pastikan akun utama GKE memiliki izin
managedkafka.clusters.connect (termasuk dalam peran IAM roles/managedkafka.client).
Managed Service untuk Apache Kafka tidak mendukung autentikasi ke Apache Kafka API open source menggunakan Fleet workload identity. Sebagai alternatif, Anda dapat menautkan akun layanan Kubernetes ke akun layanan IAM.
Memecahkan masalah
Untuk mengetahui informasi tentang cara memecahkan masalah autentikasi SASL, lihat Error autentikasi.