Dokumen ini menjelaskan cara kerja kontrol akses di Managed Service untuk Apache Kafka.
Agen Layanan Kafka Terkelola
Managed Service untuk Apache Kafka menggunakan agen layanan untuk mengakses Google Cloud resource. Setelah Anda mengaktifkan Managed Kafka API, Managed Kafka Service Agent akan dibuat.
Agen Layanan Kafka Terkelola adalah pokok dengan ID
service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com,
dengan PROJECT_NUMBER adalah nomor project Google Cloud
Anda.
Agen layanan ini memerlukan peran IAM Managed Kafka Service Agent (roles/managedkafka.serviceAgent) di project. Peran ini
diberikan secara otomatis saat Anda mengaktifkan API. Jika Anda mencabut peran ini,
Managed Service untuk Apache Kafka tidak dapat membuat, memperbarui, atau menghapus cluster.
Untuk beberapa tugas, Agen Layanan Kafka Terkelola memerlukan peran tambahan. Misalnya, jika Anda menggunakan Kafka Connect, Anda mungkin perlu memberikan izin kepada agen layanan untuk mengakses sumber dan tujuan, seperti Pub/Sub atau BigQuery.
Kontrol akses untuk klien
Secara umum, ada dua cara untuk melakukan operasi pada resource Managed Service untuk Apache Kafka:
Managed Kafka API. Opsi ini mencakup pemanggilan REST API secara langsung, serta penggunaan Google Cloud CLI, konsol Google Cloud , atau library klien.
API Apache Kafka open source. Banyak klien Kafka open source yang menggunakan API ini.
Kontrol akses menggunakan Managed Kafka API
Saat menggunakan Managed Kafka API, otorisasi dilakukan oleh Identity and Access Management (IAM). Untuk melakukan operasi pada resource, prinsipal harus memiliki izin Managed Kafka API yang diperlukan untuk operasi tersebut. Dokumentasi untuk setiap tugas mencantumkan peran IAM yang diperlukan untuk tugas tersebut. Misalnya, untuk mengizinkan akun utama membuat topik Kafka, berikan peran Managed Kafka Topic Editor kepada akun utama.
Kontrol akses menggunakan Apache Kafka API
Klien yang menggunakan Apache Kafka API melakukan autentikasi dengan menggunakan autentikasi SASL atau mutual TLS (mTLS).
Jika klien terhubung dengan SASL, akun utama yang melakukan autentikasi memerlukan izin IAM
managedkafka.clusters.connect. Untuk memberikan izin ini, Anda dapat memberikan peran Managed Kafka Client (roles/managedkafka.client) pada akun utama.Jika klien terhubung dengan mTLS, izin
managedkafka.clusters.connecttidak diperlukan. Sebagai gantinya, klien menggunakan sertifikat klien untuk melakukan autentikasi.
Setelah klien terhubung, layanan akan menggunakan ACL Kafka untuk mengizinkan operasi klien, seperti membaca atau mengubah resource.
Kontrol akses gabungan
Untuk keamanan yang komprehensif, Anda harus mengonfigurasi hal berikut:
Izin IAM untuk akses pengelolaan.
Izin IAM untuk terhubung ke cluster, jika klien menggunakan SASL.
ACL Kafka untuk akses dan operasi data dalam cluster dari klien Apache Kafka open source, terlepas dari metode autentikasinya.
Misalnya, anggap Anda ingin mencegah principal mengedit topik. Untuk melakukannya, Anda harus menyiapkan kontrol akses berikut:
Tolak izin
managedkafka.topics.updateuntuk prinsipal, guna mencegah prinsipal menggunakan Managed Kafka API untuk memperbarui topik (misalnya, dengan menggunakan konsol Google Cloud ).Secara opsional, tolak izin
managedkafka.clusters.connectuntuk akun utama, guna mencegah akun utama terhubung ke cluster dengan autentikasi SASL.Jika akun utama memerlukan akses SASL karena alasan lain, atau jika akun utama terhubung menggunakan mTLS, buat ACL Kafka yang menolak operasi
ALTER,ALTER_CONFIGS, danDELETEpada topik. Untuk contoh spesifik, lihat Menolak modifikasi semua topik.
Kontrol akses tingkat resource
Untuk membatasi izin IAM entitas ke resource Managed Service untuk Apache Kafka tertentu dalam project, seperti cluster atau topik individual, gunakan IAM Condition.
Contoh berikut menunjukkan kondisi IAM yang mengizinkan akses
hanya jika jenis resource adalah managedkafka.googleapis.com/Topic dan
nama resource diakhiri dengan "test-topic":
{
"expression": "resource.name.endsWith(\"topic-1\") &&\nresource.type == \"managedkafka.googleapis.com/Topic\"",
"title": "topic-1",
"description": "Grant access only to topic-1"
}
Beberapa permintaan Managed Service untuk Apache Kafka, seperti pembuatan atau pembaruan cluster, menampilkan operasi yang berjalan lama. Jika Anda memberikan akses di tingkat cluster,
sertakan akses untuk semua resource jenis
managedkafka.googleapis.com/Operation, selain kondisi resource per cluster. Izin ini memastikan bahwa prinsipal dapat memulai operasi dan
memantau progresnya.
Langkah berikutnya
Untuk mempelajari lebih lanjut konsep dasar IAM, lihat Ringkasan IAM.
Untuk mempelajari berbagai komponen kebijakan IAM, lihat Kebijakan IAM.
Untuk mempelajari cara menggunakan ACL Kafka untuk akses data dalam cluster, lihat ACL Kafka.