Kontrol akses untuk Managed Service for Apache Kafka

Dokumen ini menjelaskan cara kerja kontrol akses di Managed Service untuk Apache Kafka.

Agen Layanan Kafka Terkelola

Managed Service untuk Apache Kafka menggunakan a agen layanan untuk mengakses Google Cloud resource. 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 Google Cloud project Anda.

Agen layanan ini memerlukan peran IAM Agen Layanan Kafka Terkelola (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 panggilan REST API secara langsung, serta penggunaan Google Cloud CLI, Google Cloud konsol, atau library klien.

  • Apache Kafka API 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, 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 Editor Topik Kafka Terkelola 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 Klien Kafka Terkelola (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 Kafka ACL untuk mengotorisasi 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.

  • Kafka ACL untuk akses dan operasi data dalam cluster dari klien Apache Kafka open source, terlepas dari metode autentikasi.

Misalnya, asumsikan 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, menggunakan Google Cloud konsol).

  • Secara opsional, tolak izin managedkafka.clusters.connect untuk 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 Kafka ACL yang menolak ALTER, ALTER_CONFIGS, dan DELETE operasi 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 project, seperti cluster atau topik individual, gunakan Kondisi IAM.

Contoh berikut menunjukkan kondisi IAM yang hanya mengizinkan akses 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 berjenis 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 The Apache Software Foundation atau afiliasinya di Amerika Serikat dan/atau negara lain.