您可以將稱為 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 項目
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init 執行
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 項目授予或拒絕的作業類型。允許的值包括ALL、READ、WRITE、CREATE、DELETE、ALTER、DESCRIBE、CLUSTER_ACTION、DESCRIBE_CONFIGS、ALTER_CONFIGS和IDEMPOTENT_WRITE。PERMISSION_TYPE(選用,預設值為ALLOW):設定的存取類型,可以是ALLOW或DENY。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:存取權是ALLOW或DENY。principal:這個項目適用的使用者或服務帳戶。
etag:這是更新後 ACL 的實體標記。用於後續更新期間的樂觀並行控制。新增項目後,值會隨之變更。name:ACL 資源的專屬 ID。格式為projects/{project}/locations/{location}/clusters/{cluster}/acls/{acl_id}。patternType:這個 ACL 的資源模式類型。resourceName:這個 ACL 適用的 Kafka 資源名稱。resourceType:Kafka 資源類型。
aclCreated:布林值,表示是否因新增這個項目而建立 ACL 資源。