Kontrol akses untuk Managed Service for Apache Kafka

Di Managed Service untuk Apache Kafka, Anda mengontrol akses ke cluster dan topik Kafka menggunakan kombinasi izin Identity and Access Management (IAM) dan daftar kontrol akses (ACL) Kafka:

  • Gunakan IAM untuk memberikan izin akses pengelolaan, dan agar klien dapat terhubung ke cluster saat menggunakan autentikasi SASL.

  • Gunakan ACL Kafka untuk akses dan operasi data dari klien Apache Kafka open source.

Halaman ini memberikan ringkasan tentang opsi kontrol akses ini.

Agen Layanan Kafka Terkelola

Managed Service untuk Apache Kafka menggunakan agen layanan untuk mengakses resource Google Cloud. Setelah Anda mengaktifkan Managed Kafka API, Agen Layanan Kafka Terkelola akan dibuat.

Agen Layanan Kafka Terkelola adalah akun utama 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 otomatis diberikan 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 sink, 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.

  • Apache Kafka API open source. Banyak klien Kafka open source 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, akun utama 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 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.connect tidak 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, asumsikan bahwa Anda ingin mencegah akun utama mengedit topik. Untuk melakukannya, Anda harus menyiapkan kontrol akses berikut:

  • Tolak izin managedkafka.topics.update untuk akun utama, guna mencegah akun utama menggunakan Managed Kafka API untuk memperbarui topik (misalnya, dengan menggunakan konsol Google Cloud ).

  • Secara opsional, tolak izin managedkafka.clusters.connect akun utama, untuk 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, dan DELETE pada topik. Untuk contoh spesifik, lihat Menolak pengubahan semua topik.

Kontrol akses tingkat resource

Untuk membatasi izin IAM akun utama ke resource Managed Service untuk Apache Kafka tertentu dalam sebuah project, seperti cluster atau topik individual, gunakan IAM Conditions.

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 update cluster, menampilkan operasi yang berjalan lama. Jika Anda memberikan akses di level cluster, sertakan akses untuk semua resource jenis managedkafka.googleapis.com/Operation, selain kondisi resource per cluster. Izin ini memastikan akun utama dapat memulai operasi dan memantau progresnya.

Langkah berikutnya

Apache Kafka® adalah merek dagang terdaftar dari Apache Software Foundation atau afiliasinya di Amerika Serikat dan/atau negara lainnya.