Memperbarui ACL Managed Kafka

Setelah membuat resource ACL Managed Service for Apache Kafka, Anda dapat mengedit konfigurasinya untuk memperbarui daftar entri ACL.

Memperbarui resource ACL Managed Service for Apache Kafka dapat dilakukan dengan dua cara:

  • Penggantian penuh: menggantikan seluruh daftar entri ACL seperti yang didokumentasikan di halaman ini.

  • Pembaruan inkremental: menambahkan atau menghapus satu entri ACL seperti yang didokumentasikan di halaman Menambahkan entri ACL dan Menghapus entri ACL.

Anda tidak dapat mengubah daftar entri ACL menjadi kosong menggunakan operasi update. Untuk menghapus semua entri untuk pola resource, hapus resource ACL Managed Service for Apache Kafka.

Peran dan izin yang diperlukan

Untuk mendapatkan izin yang diperlukan guna memperbarui ACL Managed Service for Apache Kafka, minta administrator Anda untuk memberi Anda peran IAM Managed Kafka ACL Editor (roles/managedkafka.aclEditor) di project Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk memperbarui ACL Managed Service for Apache Kafka. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk memperbarui ACL Managed Service for Apache Kafka:

  • Berikan izin ini pada ACL yang diminta untuk diperbarui menggunakan penggantian penuh (API UpdateAcl): managedkafka.acls.update
  • Berikan izin ini pada ACL yang diminta untuk diupdate menggunakan perubahan inkremental (API AddAclEntry atau RemoveAclEntry): managedkafka.acls.updateEntries

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Untuk mengetahui informasi selengkapnya tentang peran Managed Kafka ACL Editor, lihat Peran standar Google Cloud Managed Service for Apache Kafka.

Properti etag

Kolom etag digunakan untuk kontrol konkurensi optimis. ETag ditampilkan dalam respons terhadap operasi GetAcl dan CreateAcl. Anda harus menyertakan etag ini dalam permintaan UpdateAcl untuk memastikan bahwa perubahan Anda berlaku pada versi resource ACL Managed Service for Apache Kafka yang sama dengan yang Anda ambil. Hal ini mencegah hilangnya update jika resource dimodifikasi secara serentak.

Karakter T terminal dalam etag menunjukkan bahwa daftar entri ACL dipangkas dalam respons karena melebihi jumlah maksimum item kolom yang dapat diulang. Entri lainnya untuk pola resource ini ada langsung di cluster Kafka, tetapi tidak dapat ditampilkan di resource ACL Managed Service untuk Apache Kafka. Pembaruan penggantian penuh tidak didukung untuk resource dengan entri ACL yang terpotong. Dalam skenario ini, gunakan Apache Kafka API standar seperti kafka-acls.sh atau AdminClient untuk mengelola ACL secara langsung.

Penggantian penuh entri ACL

Anda dapat menggunakan metode API UpdateAcl atau perintah gcloud managed-kafka acls update untuk melakukan penggantian seluruh daftar entri ACL. Seluruh kolom acl_entries dalam resource akan digantikan oleh daftar yang dikirim dalam permintaan pembaruan.

Untuk mengubah daftar menggunakan metode ini, misalnya, untuk menambahkan atau menghapus satu entri ACL sambil mempertahankan entri lainnya, lakukan langkah-langkah berikut:

  1. Ambil daftar entri ACL saat ini dan etag menggunakan perintah describe.

  2. Buat daftar entri ACL baru.

  3. Jalankan perintah gcloud managed-kafka acls update bersama dengan etag yang diambil.

Bagian berikut menunjukkan cara menggunakan perintah gcloud managed-kafka acls update untuk melakukan penggantian penuh daftar entri ACL.

  1. Install the Google Cloud CLI.

  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Jalankan perintah gcloud managed-kafka acls update untuk mengganti semua entri ACL yang ada dengan entri yang ditentukan:

  5. gcloud managed-kafka acls update ACL_ID \
        --cluster=CLUSTER_ID \
        --location=LOCATION \
        --etag=ETAG_VALUE \
        --acl-entry=principal='PRINCIPAL',operation=OPERATION_TYPE,permission_type=PERMISSION_TYPE,host='*' \

    Ganti kode berikut:

    • ACL_ID (wajib): ID resource ACL Managed Service untuk Apache Kafka yang akan diupdate. Untuk mengetahui informasi selengkapnya tentang ID ACL, lihat ID ACL.
    • CLUSTER_ID (wajib): ID cluster yang berisi resource ACL.
    • LOCATION (wajib): region tempat cluster berada. Untuk mengetahui informasi selengkapnya tentang region, lihat Lokasi yang didukung.
    • ETAG_VALUE (wajib): nilai etag yang diperoleh dari operasi deskripsi atau pembuatan sebelumnya untuk resource ACL ini.
    • --acl-entry (wajib): Menentukan entri ACL yang akan disertakan dalam daftar baru. Anda dapat mengulangi tanda ini untuk menyertakan beberapa entri. Seluruh daftar yang ada digantikan oleh entri yang ditentukan dalam perintah.
      • PRINCIPAL (wajib): prinsipal untuk entri ACL ini. Gunakan format User:{google_service_account_email} atau karakter pengganti User:*.
      • OPERATION_TYPE (wajib): jenis operasi untuk entri ACL ini. Nilai yang diizinkan mencakup ALL, READ, WRITE, CREATE, DELETE, ALTER, DESCRIBE, CLUSTER_ACTION, DESCRIBE_CONFIGS, ALTER_CONFIGS, dan IDEMPOTENT_WRITE.
      • PERMISSION_TYPE (wajib): jenis izin yang akan diperbarui: ALLOW atau DENY.
      • HOST (wajib): host klien entri ACL yang akan diperbarui. Untuk Google Cloud Managed Service for Apache Kafka, nilai ini harus ditetapkan ke wildcard '*'.

Contoh penggantian penuh

Perintah ini menggantikan semua entri ACL yang ada untuk pola resource topic/orders di test-kafka-cluster yang berada di us-central1 dengan satu entri baru. Entri baru ini memberikan izin WRITE ke akun layanan producer-app@test-project.iam.gserviceaccount.com. Perintah ini memerlukan etag saat ini dari resource ACL, yaitu "AYk=Ags=" dalam contoh ini.

gcloud managed-kafka acls update topic/orders \
    --cluster=test-kafka-cluster \
    --location=us-central1 \
    --project=test-project \
    --etag='"AYk=Ags="' \
    --acl-entry=principal='User:producer-app@test-project.iam.gserviceaccount.com',operation=WRITE,permission_type=ALLOW,host='*'

Jika perintah berhasil, output akan menampilkan konfigurasi resource ACL yang diperbarui, termasuk daftar aclEntries baru dan etag baru. Semua entri yang ada sebelumnya untuk resource ACL ini akan dihapus.

aclEntries:
-   host: '*'
  operation: WRITE
  permissionType: ALLOW
  principal: User:producer-app@test-project.iam.gserviceaccount.com
etag: '"Bcn=Def="'  # Note: The etag value changes after a successful update.
name: projects/test-project/locations/us-central1/clusters/my-kafka-cluster/acls/topic/orders
resourcePatternType: TOPIC

Update inkremental entri ACL

Anda dapat menambahkan atau menghapus item entri ACL satu per satu tanpa mengganti seluruh daftar menggunakan metode API AddAclEntry dan RemoveAclEntry atau perintah gcloud managed-kafka acls add-acl-entry dan gcloud managed-kafka acls remove-acl-entry yang sesuai. Metode ini tidak memerlukan etag.

  • Menggunakan AddAclEntry akan menambahkan satu entri ACL baru ke resource ACL Managed Service for Apache Kafka. Hal ini serupa dengan membuat AclBinding Apache Kafka baru tunggal. Untuk mengetahui informasi selengkapnya, lihat Menambahkan entri ACL.

  • Menggunakan RemoveAclEntry akan menghapus satu entri ACL yang ada dari resource ACL Managed Service for Apache Kafka. Hal ini serupa dengan menghapus satu AclBinding Apache Kafka. Untuk mengetahui informasi selengkapnya, lihat Menghapus entri ACL.

Langkah berikutnya

Apache Kafka® adalah merek dagang terdaftar milik The Apache Software Foundation atau afiliasinya di Amerika Serikat dan/atau negara lain.