向托管 Kafka ACL 添加 ACL 条目

本文档介绍了如何创建 ACL 条目并将其添加到托管 Kafka ACL 资源。如果托管 Kafka ACL 资源不存在,此操作还会创建 ACL 资源。

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

所需的角色和权限

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

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

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

添加 ACL 条目

控制台

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到“集群”

  2. 点击要向其中添加 ACL 条目的集群的名称。

  3. 点击访问权限控制标签页。

  4. 点击 Create ACL entry(创建 ACL 条目)。

  5. 在创建 ACL 条目面板中,输入 ACL 条目的详细信息:

    1. 在资源类型列表中,选择此 ACL 适用的集群资源类型。如需了解详情,请参阅 ACL ID。

    2. 如果资源类型为 Topic、Consumer group 或 Transactional ID,请选择或输入资源的 ID。

    3. 如果资源类型为 Topic prefix、Consumer group prefix 或 Transactional ID prefix,请输入要匹配的 ACL 前缀。

    4. 在主账号字段中,输入 ACL 条目的主账号。

    5. 在权限类型列表中,选择 ALLOW 或 DENY。

    6. 在操作列表中,为 ACL 条目选择操作类型。

  6. 点击创建。

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 的受管 Kafka ACL,系统会自动创建一个。

  • CLUSTER_ID:Kafka 集群的 ID。

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

  • PRINCIPAL:新 ACL 条目的主体。

  • OPERATION:操作类型,例如 READ 或 CREATE。

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

示例命令

运行以下命令,以允许特定服务账号从 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 或其关联公司在美国和/或其他国家/地区的注册商标。