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 使用以下命名模式:
适用于集群的 ACL:
cluster适用于集群中特定资源的 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 操作,例如
ALL、READ、WRITE、CREATE、DELETE、ALTER、DESCRIBE、CLUSTER_ACTION、DESCRIBE_CONFIGS、ALTER_CONFIGS或IDEMPOTENT_WRITE。该值不区分大小写。如需了解有效的操作和资源类型组合,请参阅 Apache Kafka 文档中的协议上的操作和资源 。 - 权限类型
- 权限的类型。支持的值包括
ALLOW和DENY(不区分大小写)。 - 主机
- 对于 Managed Service for Apache Kafka,此字段必须设置为通配符 (
*)。
仅限输出的 ACL 属性
创建 Managed Kafka ACL 时,该服务会为其设置以下属性:
资源类型:ACL 资源类型。以下其中一项:
CLUSTER、TOPIC、GROUP或TRANSACTIONAL_ID。资源名称:ACL 资源名称或匹配的前缀。对于
CLUSTER资源类型,该值始终为"kafka-cluster"。可以是通配符 字面量"*"。ACL 模式类型:
LITERAL或PREFIXED。
这些字段仅限输出。您可以使用它们将 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 标志并替换以下内容:
在文件中指定 ACL 条目
gcloud
创建一个本地文件,以 YAML 格式定义 ACL 条目:
--- aclEntries: - principal: PRINCIPAL operation: OPERATION permissionType: PERMISSION_TYPE host: "*" - principal: ... operation: ... permissionType: ... host: "*"对于
aclEntries列表中的每个 ACL 条目,请替换以下内容:PRINCIPAL:ACL 条目的主账号 。PERMISSION_TYPE:主账号对操作拥有的权限。请指定ALLOW或DENY。
运行
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 条目列表的本地文件的路径。