创建 Managed Kafka ACL

Managed Kafka 访问权限控制列表 (ACL) 可为 Managed Service for Apache Kafka 集群内的操作提供精细的授权。创建 Managed Kafka ACL 资源可为特定的 Kafka 资源模式定义一组权限规则。如需了解基本概念,请参阅 使用 IAM 进行访问权限控制和 Kafka ACL

准备工作

确保您拥有现有的 Managed Service for Apache Kafka 集群

所需的角色和权限

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

此预定义角色包含创建 Managed Kafka ACL 所需的 managedkafka.acls.create 权限。

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

Managed Kafka ACL 的属性

创建 Managed Kafka ACL 资源时,您必须定义以下属性:

ACL ID

ACL ID 是集群中 Managed Kafka ACL 资源的唯一标识符。ACL ID 还定义了 ACL 适用于哪些集群资源。 请为 ACL ID 使用以下命名模式:

  • 适用于集群的 ACLcluster

  • 适用于集群中特定资源的 ACL

    • 主题:topic/RESOURCE_NAME
    • 使用方群组:consumerGroup/RESOURCE_NAME
    • 交易 ID:transactionalId/RESOURCE_NAME

    RESOURCE_NAME 替换为资源的名称。

    例如,如需授予对名为 my-topic 的主题的权限,ACL ID 为 topic/my-topic

  • 适用于与前缀匹配的资源的 ACL

    • 主题:topicPrefixed/PREFIX
    • 使用方群组:consumerGroupPrefixed/PREFIX
    • 交易 ID:transactionalIdPrefixed/PREFIX

    PREFIX 替换为要匹配的前缀。

    例如,如需授予对所有以 test- 开头的主题的权限, ACL ID 为 topicPrefixed/test-

  • 适用于给定类型的所有资源的 ACL

    • 所有主题:allTopics
    • 所有使用方群组:allConsumerGroups
    • 所有交易 ID:allTransactionalIds

创建 Managed Kafka ACL 后,您无法更改 ACL ID。

ACL 条目

ACL 条目定义了正文对与 ACL 匹配的集群资源拥有的特定权限。创建 Managed Kafka ACL 时,您必须至少指定一个 ACL 条目。您可以添加或移除现有 ACL 的 ACL 条目。

每个 Managed Kafka ACL 资源最多可以有 100 个 ACL 条目。 如果需要为单个资源模式设置更多规则,您必须使用标准 Apache Kafka 工具直接管理 ACL。

每个 ACL 条目都包含以下字段:

主账号
权限适用的用户账号或服务账号。请使用以下 格式:User:PRINCIPAL_EMAIL。将 PRINCIPAL_EMAIL替换为 主账号的电子邮件地址。您还可以将此字段设置为 User:*,以匹配每个主账号。
操作类型
权限适用的 Kafka 操作,例如 ALLREADWRITECREATEDELETEALTERDESCRIBECLUSTER_ACTIONDESCRIBE_CONFIGSALTER_CONFIGSIDEMPOTENT_WRITE。该值不区分大小写。如需了解有效的操作和资源类型组合,请参阅 Apache Kafka 文档中的协议上的操作和资源
权限类型
权限的类型。支持的值包括 ALLOWDENY(不区分大小写)。
主机
对于 Managed Service for Apache Kafka,此字段必须设置为通配符 (*)。

仅限输出的 ACL 属性

创建 Managed Kafka ACL 时,该服务会为其设置以下属性:

  • 资源类型:ACL 资源类型。以下其中一项:CLUSTERTOPICGROUPTRANSACTIONAL_ID

  • 资源名称:ACL 资源名称或匹配的前缀。对于 CLUSTER 资源类型,该值始终为 "kafka-cluster"。可以是通配符 字面量 "*"

  • ACL 模式类型:LITERALPREFIXED

这些字段仅限输出。您可以使用它们将 Managed Kafka ACL 资源映射到 Kafka ACL 绑定。

ETag

创建、查看或更新 Managed Kafka ACL 时,响应会包含 ETag。ETag 用于乐观并发控制。对 Managed Kafka ACL 执行的更新操作必须包含 ETag,以确保更改应用于 Kafka 集群中存在的同一版本。如需了解详情,请参阅 替换 Managed Kafka ACL 中的 ACL 条目

如果 ETag 包含终止 'T' 字符,则表示 ACL 条目被截断。Kafka 集群中存在更多 ACL 条目,但由于重复字段的限制,无法在 ACL 说明中返回这些条目。

创建 ACL

创建 Managed Kafka ACL 时,您可以直接在命令行中指定 ACL 条目,也可以通过创建包含 ACL 条目的文件来指定。

在命令行中指定 ACL 条目

gcloud

运行 gcloud managed-kafka acls create 命令:

gcloud managed-kafka acls create ACL_ID \
  --cluster=CLUSTER_ID \
  --location=LOCATION \
  --acl-entry=principal=PRINCIPAL,operation=OPERATION,permission-type=PERMISSION_TYPE,host=*

替换以下内容:

  • ACL_ID:新 ACL 资源的 ID。该 ID 定义了 ACL 适用于哪些集群资源。如需了解详情, 请参阅 ACL ID

  • CLUSTER_ID:Kafka 集群的 ID。

  • LOCATION:Kafka 集群的区域。

对于每个 ACL 条目,请指定单独的 --acl-entry 标志并替换以下内容:

  • PRINCIPAL:ACL 条目的 主账号

  • OPERATION操作类型, 例如 READCREATE

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

在文件中指定 ACL 条目

gcloud

  1. 创建一个本地文件,以 YAML 格式定义 ACL 条目:

    ---
    aclEntries:
    - principal: PRINCIPAL
      operation: OPERATION
      permissionType: PERMISSION_TYPE
      host: "*"
    - principal: ...
      operation: ...
      permissionType: ...
      host: "*"
    

    对于 aclEntries 列表中的每个 ACL 条目,请替换以下内容:

  2. 运行 gcloud managed-kafka acls create 命令:

    gcloud managed-kafka acls create ACL_ID \
      --cluster=CLUSTER_ID \
      --location=LOCATION \
      --acl-entries-from-file=FILE_PATH
    

    替换以下内容:

    • ACL_ID:新 ACL 资源的 ID。该 ID 定义了 ACL 适用于哪些集群资源。如需了解更多 信息,请参阅 ACL ID

    • CLUSTER_ID:Kafka 集群的 ID。

    • LOCATION:Kafka 集群的区域。

    • FILE_PATH:包含 ACL 条目列表的本地文件的路径。

接下来怎么做?

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