在代管 Kafka ACL 中新增 ACL 項目

您可以將稱為 ACL 項目的一項新權限規則新增至代管 Kafka ACL 資源,而不必取代整個項目清單。這項功能有助於逐步授予特定權限。

這項作業類似於建立單一 Apache Kafka ACL 繫結。這項作業不需要 ACL 資源,也不需要 eTag 進行並行控制。

必要角色和權限

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

這個預先定義的角色具備新增 ACL 項目所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要新增 ACL 項目,必須具備下列權限:

  • 在父項叢集上授予這項權限: managedkafka.acls.updateEntries

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

代管 Kafka ACL 編輯者 (roles/managedkafka.aclEditor) 角色包含新增或移除個別 ACL 項目的必要權限。詳情請參閱「Google Cloud Managed Service for Apache Kafka 預先定義的角色」。

新增 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. 執行 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=HOST

    更改下列內容:

    • ACL_ID (必要):您要新增 ACL 項目之代管 Kafka ACL 資源的專屬 ID。這項設定會識別新項目適用的資源模式。如要進一步瞭解 ACL ID,請參閱「ACL ID」。
    • CLUSTER_ID (必要):包含 ACL 資源的叢集 ID。
    • LOCATION (必要):叢集所在的區域。請參閱「支援的位置」。
    • PRINCIPAL (必要):ACL 項目適用的主體 (使用者或服務帳戶)。使用格式 User:{google_service_account_email} 或萬用字元 User:*
    • OPERATION (必要):ACL 項目授予或拒絕的作業類型。允許的值包括 ALLREADWRITECREATEDELETEALTERDESCRIBECLUSTER_ACTIONDESCRIBE_CONFIGSALTER_CONFIGSIDEMPOTENT_WRITE
    • PERMISSION_TYPE (選用,預設值為 ALLOW):設定的存取類型,可以是 ALLOWDENY
    • HOST (選用,預設值 *): 用戶端主機。如果是 Google Cloud Managed Service for Apache Kafka,這項設定必須設為萬用字元 '*'

指令範例

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

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

輸出內容範例如下:

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:存取權是 ALLOWDENY
      • principal:這個項目適用的使用者或服務帳戶。
    • etag:這是更新後 ACL 的實體標記。用於後續更新期間的樂觀並行控制。新增項目後,值會隨之變更。
    • 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 或其關聯企業在美國與/或其他國家/地區的註冊商標。