在代管 Kafka ACL 中新增 ACL 項目

本文說明如何建立 ACL 項目,並將其新增至代管 Kafka ACL 資源。如果代管 Kafka ACL 資源不存在,這項作業也會建立 ACL 資源。

這項作業類似於建立單一 Apache Kafka ACL 繫結。 與更新作業不同,這項作業不需要 ETag 進行並行控制。

所需角色和權限

如要取得新增 ACL 項目所需的權限,請要求管理員授予您專案的「代管 Kafka ACL 編輯者」 (roles/managedkafka.aclEditor) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備 managedkafka.acls.updateEntries 權限,可新增 ACL 項目。

您或許還可透過自訂角色或其他預先定義的角色取得這項權限。

新增 ACL 項目

控制台

  1. 前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。

    前往「Clusters」(叢集)

  2. 按一下要新增 ACL 項目所在的叢集名稱。

  3. 按一下「存取控管」分頁標籤。

  4. 按一下「建立 ACL 項目」。

  5. 在「建立 ACL 項目」面板中,輸入 ACL 項目的詳細資料:

    1. 在「資源類型」清單中,選取這項存取控制清單適用的叢集資源類型。詳情請參閱「ACL ID」。

    2. 如果資源類型為 Topic、Consumer group 或 Transactional ID,請選取或輸入資源 ID。

    3. 如果資源類型為 Topic prefix、Consumer group prefix 或 Transactional ID prefix,請輸入要比對的 ACL 前置字元。

    4. 在「Principal」(主體) 欄位中,輸入 ACL 項目適用的主體。

    5. 在「權限類型」清單中,選取「ALLOW」或「DENY」。

    6. 在「Operation」(作業) 清單中,選取 ACL 項目適用的作業類型。

  6. 點選「建立」。

gcloud

請執行 gcloud managed-kafka acls add-acl-entry 指令。

gcloud managed-kafka acls add-acl-entry ACL_ID \
  --cluster=CLUSTER_ID \
  --location=LOCATION \
  --principal=PRINCIPAL \
  --operation=OPERATION \
  --permission-type=PERMISSION_TYPE \
  --host=*

更改下列內容:

  • ACL_ID。要更新的代管 Kafka ACL 資源 ID。詳情請參閱「ACL ID」。如果沒有這個 ID 的代管 Kafka ACL,系統會自動建立一個。

  • CLUSTER_ID:Kafka 叢集的 ID。

  • LOCATION:Kafka 叢集所在的區域。

  • PRINCIPAL:新 ACL 項目的主體。

  • OPERATION:作業類型,例如 READ 或 CREATE。

  • PERMISSION_TYPE:主體對作業擁有的權限。指定 ALLOW 或 DENY。

指令範例

執行下列指令,允許特定服務帳戶從 us-central1 區域的 test-cluster 叢集中,讀取名為 test-topic 的主題。

gcloud managed-kafka acls add-acl-entry topic/test-topic \
  --cluster=test-cluster \
  --location=us-central1 \
  --principal='User:service-account@test-project.iam.gserviceaccount.com' \
  --operation=READ \
  --permission-type=ALLOW \
  --host='*'

以下是輸出內容範例:

acl:
  aclEntries:
  - host: '*'
    operation: READ
    permissionType: ALLOW
    principal: 'User:service-account@test-project.iam.gserviceaccount.com'
  etag: W/another-new-etag
  name: projects/test-project/locations/us-central1/clusters/test-cluster/acls/topic/test-topic
  patternType: LITERAL
  resourceName: test-topic
  resourceType: TOPIC
aclCreated: false

add-acl-entry 指令的輸出內容會提供 ACL 狀態的相關資訊:

  • acl:這個部分說明新增項目後更新的 ACL 資源。

    • aclEntries:這是包含此 ACL 所有存取控制項目的清單。在這個範例中,現在會包含剛才新增的項目。每個項目都有下列欄位:

      • host:ACL 項目主機。
      • operation:這個項目適用的 Kafka 作業。
      • permissionType:存取權是 ALLOW 或 DENY。
      • principal:這個項目適用的使用者或服務帳戶。
    • etag:這是更新後存取控制清單的實體標記。用於後續更新期間的樂觀並行控制。新增項目後,值會隨之變更。

    • name:ACL 資源的專屬 ID。格式為 projects/{project}/locations/{location}/clusters/{cluster}/acls/{acl_id}。

    • patternType:這個 ACL 的資源模式類型。

    • resourceName:這個 ACL 適用的 Kafka 資源名稱。

    • resourceType:Kafka 資源的類型。

  • aclCreated:布林值,指出是否因新增這個項目而建立 ACL 資源。

後續步驟

Apache Kafka® 是 The Apache Software Foundation 或其在美國和/或其他國家/地區的關聯企業的註冊商標。