您可以向受管理的 Kafka ACL 资源添加单个新的权限规则(称为 ACL 条目),而无需替换整个条目列表。这有助于逐步授予特定权限。
此操作类似于创建单个 Apache Kafka ACL 绑定。它不需要 ACL 资源已存在,也不需要用于并发控制的 eTag。
所需的角色和权限
如需获得添加 ACL 条目所需的权限,请让您的管理员为您授予项目的 Managed Kafka ACL Editor (roles/managedkafka.aclEditor) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含添加 ACL 条目所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需添加 ACL 条目,您需要具备以下权限:
-
在父集群上授予此权限:
managedkafka.acls.updateEntries
Managed Kafka ACL Editor (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 资源的唯一标识符。其格式为projects/{project}/locations/{location}/clusters/{cluster}/acls/{acl_id}。patternType:相应 ACL 的资源模式类型。resourceName:相应 ACL 所适用的 Kafka 资源的名称。resourceType:Kafka 资源类型。
aclCreated:一个布尔值,用于指示是否因添加此条目而创建了 ACL 资源。