向托管 Kafka ACL 添加 ACL 条目

本文档介绍了如何向托管 Kafka ACL 资源添加 ACL 条目

此操作类似于创建单个 Apache Kafka ACL 绑定。与更新操作不同,此操作不需要 ETag 来进行并发控制。

所需的角色和权限

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

此预定义角色可提供添加 ACL 条目所需的 managedkafka.acls.updateEntries 权限。

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

添加 ACL 条目

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. 要更新的 Managed Kafka ACL 资源的 ID。如需了解详情,请参阅 ACL ID。如果不存在具有此 ID 的 Managed Kafka ACL,系统会自动创建一个。

  • CLUSTER_ID:Kafka 集群的 ID。

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

  • PRINCIPAL:新 ACL 条目的正文

  • OPERATION操作类型,例如 READCREATE

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

示例命令

运行以下命令,以允许特定服务账号从 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:这是更新后的 ACL 的实体标记。它用于在后续更新期间进行乐观并发控制。添加条目后,该值会发生变化。

    • name:ACL 资源的唯一标识符。格式为 projects/{project}/locations/{location}/clusters/{cluster}/acls/{acl_id}

    • patternType:相应 ACL 的资源模式类型。

    • resourceName:此 ACL 所适用的 Kafka 资源的名称。

    • resourceType:Kafka 资源类型。

  • aclCreated:一个布尔值,用于指示 ACL 资源是否因添加此条目而创建。

后续步骤

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