向托管 Kafka ACL 添加 ACL 条目

您可以向受管理的 Kafka ACL 资源添加单个新的权限规则(称为 ACL 条目),而无需替换整个条目列表。这有助于逐步授予特定权限。

此操作类似于创建单个 Apache Kafka ACL 绑定。它不需要 ACL 资源已存在,也不需要用于并发控制的 eTag。

所需的角色和权限

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

此预定义角色包含添加 ACL 条目所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需添加 ACL 条目,您需要具备以下权限:

  • 在父集群上授予此权限: managedkafka.acls.updateEntries

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

Managed Kafka ACL Editor (roles/managedkafka.aclEditor) 角色包含添加或移除各个 ACL 条目所需的权限。如需了解详情,请参阅 Google Cloud Managed Service for Apache Kafka 预定义角色

添加 ACL 条目

  1. Install the Google Cloud CLI.

  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 运行 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=HOST

    替换以下内容:

    • ACL_ID(必需):您要向其中添加 ACL 条目的受管 Kafka ACL 资源的唯一 ID。此参数用于标识新条目所适用的资源模式。如需详细了解 ACL ID,请参阅 ACL ID
    • CLUSTER_ID(必需):包含 ACL 资源的集群的 ID。
    • LOCATION(必需):集群所在的区域。请参阅支持的地区
    • PRINCIPAL(必需):ACL 条目所应用的主账号(用户或服务账号)。使用格式 User:{google_service_account_email} 或通配符 User:*
    • OPERATION(必需):ACL 条目授予或拒绝的操作类型。允许的值包括 ALLREADWRITECREATEDELETEALTERDESCRIBECLUSTER_ACTIONDESCRIBE_CONFIGSALTER_CONFIGSIDEMPOTENT_WRITE
    • PERMISSION_TYPE(可选,默认值 ALLOW):配置的访问权限类型:ALLOWDENY
    • HOST(可选,默认值 *): 客户端主机。对于 Google Cloud Managed Service for Apache Kafka,此值必须设置为通配符 '*'

示例命令

运行以下命令,以允许特定服务账号从 us-central1 区域中集群 test-cluster 内名为 test-topic 的主题读取数据。

gcloud managed-kafka acls add-acl-entry topic/test-topic \
  --cluster=test-cluster \
  --location=us-central1 \
  --host='*' \
  --operation=READ \
  --permission-type=ALLOW \
  --principal='User:service-account@test-project.iam.gserviceaccount.com' \

以下是输出示例:

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 或其关联公司在美国和/或其他国家/地区的注册商标。