Klien dapat terhubung ke cluster Managed Service untuk Apache Kafka menggunakan Apache Kafka API open source. Semua koneksi harus dienkripsi menggunakan TLS; komunikasi teks biasa tidak didukung. Autentikasi ditangani melalui salah satu dari dua mekanisme yang didukung, masing-masing dengan 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 diotorisasi, seperti akun layanan. Managed Service untuk Apache Kafka mengelola sertifikat broker sisi server untuk semua koneksi.
Sebelum memulai
Pelajari lebih lanjut hal berikut:
Memberikan peran klien Managed Kafka ke akun layanan
Anda harus memberikan peran roles/managedkafka.client
IAM pada project yang berisi cluster ke 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 Google Cloud konsol, buka halaman IAM.
Buka IAM - Pastikan project ditetapkan 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 Save.
gcloud CLI
-
Di Google Cloud konsol, aktifkan Cloud Shell.
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan prompt 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.
-
Mengonfigurasi 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 mudah untuk pengujian.
Autentikasi OAuthBearer
Untuk mengetahui informasi tentang cara melakukan autentikasi 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 ingin Anda gunakan untuk klien Anda.
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 kali 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 konten file menggunakan encoding base64. Encoding Base64 adalah cara untuk merepresentasikan data biner (seperti data JSON dalam file akun layanan Anda) sebagai teks ASCII. Hal 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: Konten file sandi yang dienkode base64 yang Anda peroleh pada langkah sebelumnya. Ini harus berupa satu baris.
Saat mengautentikasi koneksi masuk ke cluster, Managed Service untuk Apache Kafka memeriksa hal berikut:
Nama pengguna yang diberikan cocok dengan akun layanan yang kuncinya digunakan dalam sandi.
Akun utama akun layanan yang diberikan memiliki izin
managedkafka.clusters.connect(tercakup 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 akun utama 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 akun utama 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 memeriksa hal berikut:
Token akses valid dan belum habis masa berlakunya.
Nama pengguna yang diberikan cocok dengan email akun utama yang terkait dengan token akses.
Akun utama token akses memiliki izin
managedkafka.clusters.connect(tercakup dalamroles/managedkafka.clientperan IAM) 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 baru.
Verifikasi bahwa akun utama GKE memiliki izin
managedkafka.clusters.connect (tercakup dalam roles/managedkafka.client
peran IAM).
Managed Service untuk Apache Kafka tidak mendukung autentikasi ke Apache Kafka API open source menggunakan identitas workload**Fleet**. 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.