替换受管理的 Kafka ACL 中的 ACL 条目

本文档介绍如何使用新的 ACL 条目列表更新受管理的 Kafka ACL 资源。

您无法使用空条目列表更新 ACL。如需移除 ACL 的所有 ACL 条目,请删除 Managed Kafka ACL 资源。如需了解详情,请参阅删除受管理的 Kafka ACL

您还可以添加或移除单个 ACL 条目。如需了解详情,请参阅以下文档:

所需的角色和权限

如需获得更新受管 Kafka ACL 所需的权限,请让您的管理员为您授予项目的 Managed Kafka ACL Editor (roles/managedkafka.aclEditor) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含更新受管 Kafka ACL 所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需更新托管 Kafka ACL,您需要具备以下权限:

  • 全部: managedkafka.acls.update

您也可以使用自定义角色或其他预定义角色来获取这些权限。

检索 ACL 的 ETag

对托管 Kafka ACL 执行更新操作时,您必须提供 ETag。ETag 可确保将更改应用于 Kafka 集群中存在的相同版本的 ACL 条目。

如需获取 ACL 的当前 ETag,请参阅查看托管 Kafka ACL

如果 ETag 包含结尾的 'T' 字符,则表示 ACL 条目被截断。在这种情况下,您无法使用 Managed Kafka API 执行更新操作。请改用标准 Apache Kafka 工具(例如 kafka-acls.shAdminClient)直接管理 ACL。

替换 ACL 条目

gcloud

运行 gcloud managed-kafka acls update 命令:

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='*' \
    --acl-entry= ...

替换以下内容:

  • ACL_ID:要更新的 Managed Kafka ACL 资源的 ID。如需了解详情,请参阅 ACL ID

  • CLUSTER_ID:Kafka 集群的 ID。

  • LOCATION:Kafka 集群所在的区域。

  • ETAG_VALUE:相应 ACL 的 ETag

对于要包含在更新后的 ACL 中的每个 ACL 条目,请单独指定一个 --acl-entry 标志,并替换以下内容:

  • PRINCIPAL:ACL 条目的正文

  • OPERATION操作类型,例如 READCREATE

  • PERMISSION_TYPE:主账号对相应操作拥有的权限。请指定 ALLOWDENY

替换 ACL 条目的示例

此命令会将位于 us-central1 中的 test-kafka-cluster 内的 topic/orders 资源模式的所有现有 ACL 条目替换为一个新条目。此新条目会向服务账号 producer-app@test-project.iam.gserviceaccount.com 授予 WRITE 权限。该命令需要 ACL 资源的当前 etag,在此示例中为 "AYk=Ags="

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='*'

如果命令成功,输出会显示更新后的 ACL 资源配置,包括新的 aclEntries 列表和新的 etag。系统会移除此 ACL 资源的所有先前存在的条目。

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

后续步骤

Apache Kafka® 是 Apache Software Foundation 或其关联公司在美国和/或其他国家/地区的注册商标。