IAM 授权策略、操作和资源的语义 - Amazon Managed Streaming for Apache Kafka
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

IAM 授权策略、操作和资源的语义

注意

对于运行 Apache Kafka 3.8 或更高版本的集群,IAM 访问控制支持用于终止 WriteTxnMarkers 交易的 API。对于运行 Kafka 版本低于 3.8 的集群,IAM 访问控制不支持内部集群操作,包括 WriteTxnMarkers。对于这些早期版本,要终止交易,请使用带有相应的 SCRAM 或 mTLS 身份验证, ACLs 而不是 IAM 身份验证。

本部分解释了可以在 IAM 授权策略中使用的操作和资源元素的语义。有关策略示例,请参阅 为 IAM 角色创建授权策略

授权策略操作

下表列出了在使用 Amazon MSK 的 IAM 访问控制时可以在授权策略中包含的操作。当您在授权策略中包含表操作列中的操作时,还必须包含所需操作列中的相应操作。

Action 说明 所需的操作 所需的资源 适用于无服务器集群
kafka-cluster:Connect 授予连接和验证集群的权限。 cluster
kafka-cluster:DescribeCluster 授予描述集群各个方面的权限,相当于 Apache Kafka 的 DESCRIBE CLUSTER ACL。

kafka-cluster:Connect

cluster
kafka-cluster:AlterCluster 授予更改集群各个方面的权限,相当于 Apache Kafka 的 ALTER CLUSTER ACL。

kafka-cluster:Connect

kafka-cluster:DescribeCluster

cluster
kafka-cluster:DescribeClusterDynamicConfiguration 授予描述集群动态配置的权限,相当于 Apache Kafka 的 DESCRIBE_CONFIGS CLUSTER ACL。

kafka-cluster:Connect

cluster
kafka-cluster:AlterClusterDynamicConfiguration 授予更改集群动态配置的权限,相当于 Apache Kafka 的 ALTER_CONFIGS CLUSTER ACL。

kafka-cluster:Connect

kafka-cluster:DescribeClusterDynamicConfiguration

cluster
kafka-cluster:WriteDataIdempotently 授予在集群上以幂等方式写入数据的权限,相当于 Apache Kafka 的 IDEMPOTENT_WRITE CLUSTER ACL。

kafka-cluster:Connect

kafka-cluster:WriteData

cluster
kafka-cluster:CreateTopic 授予在集群上创建主题的权限,相当于 Apache Kafka 的创建 CLUSTER/TOPIC ACL。

kafka-cluster:Connect

topic
kafka-cluster:DescribeTopic 授予描述集群上主题的权限,相当于 Apache Kafka 的 DESCRIBE TOPIC ACL。

kafka-cluster:Connect

topic
kafka-cluster:AlterTopic 授予更改集群上主题的权限,相当于 Apache Kafka 的 ALTER TOPIC ACL。

kafka-cluster:Connect

kafka-cluster:DescribeTopic

topic
kafka-cluster:DeleteTopic 授予删除集群上主题的权限,相当于 Apache Kafka 的 DELETE TOPIC ACL。

kafka-cluster:Connect

kafka-cluster:DescribeTopic

topic
kafka-cluster:DescribeTopicDynamicConfiguration 授予描述集群上主题动态配置的权限,相当于 Apache Kafka 的 DESCRIBE_CONFIGS TOPIC ACL。

kafka-cluster:Connect

topic
kafka-cluster:AlterTopicDynamicConfiguration 授予更改集群上主题动态配置的权限,相当于 Apache Kafka 的 ALTER_CONFIGS TOPIC ACL。

kafka-cluster:Connect

kafka-cluster:DescribeTopicDynamicConfiguration

topic
kafka-cluster:ReadData 授予从集群上主题中读取数据的权限,相当于 Apache Kafka 的 READ TOPIC ACL。

kafka-cluster:Connect

kafka-cluster:DescribeTopic

kafka-cluster:AlterGroup

topic
kafka-cluster:WriteData 授予向集群上的主题写入数据的权限,相当于 Apache Kafka 的 WRITE TOPIC ACL

kafka-cluster:Connect

kafka-cluster:DescribeTopic

topic
kafka-cluster:DescribeGroup 授予描述集群上群组的权限,相当于 Apache Kafka 的 DESCRIBE GROUP ACL。

kafka-cluster:Connect

kafka-cluster:AlterGroup 授予加入集群上群组的权限,相当于 Apache Kafka 的 READ GROUP ACL。

kafka-cluster:Connect

kafka-cluster:DescribeGroup

kafka-cluster:DeleteGroup 授予删除集群上群组的权限,相当于 Apache Kafka 的 DELETE GROUP ACL。

kafka-cluster:Connect

kafka-cluster:DescribeGroup

kafka-cluster:DescribeTransactionalId 授予描述集群 IDs 上交易的权限,相当于 Apache Kafka 的 DESCRIBE TRANSACTIONAL_ID ACL。

kafka-cluster:Connect

transactional-id
kafka-cluster:AlterTransactionalId 授予在集群 IDs 上更改事务的权限,相当于 Apache Kafka 的 WRITE TRANSACTIONAL_ID ACL。

kafka-cluster:Connect

kafka-cluster:DescribeTransactionalId

kafka-cluster:WriteData

transactional-id

在冒号之后的操作中,您可以任意次数地使用星号 (*) 通配符。示例如下。

  • kafka-cluster:*Topic 代表 kafka-cluster:CreateTopickafka-cluster:DescribeTopickafka-cluster:AlterTopickafka-cluster:DeleteTopic。它不包括 kafka-cluster:DescribeTopicDynamicConfigurationkafka-cluster:AlterTopicDynamicConfiguration

  • kafka-cluster:* 代表所有权限。

授权策略资源

下表显示了在使用 Amazon MSK 的 IAM 访问控制时可在授权策略中使用的四种资源。您可以使用 DescribeClusterAPI 或 d es Amazon CLI cribe-cluster 命令从 Amazon Web Services 管理控制台 或中获取集群 Amazon 资源名称 (ARN)。然后,您可以使用集群 ARN 来构造主题、群组和交易 ID。 ARNs要在授权策略中指定资源,请使用该资源的 ARN。

资源 ARN 格式
Cluster arn: aws: kafka::: cluster/ region account-id cluster-name cluster-uuid
Topic arn: aws: kafka::: topic//regionaccount-idcluster-namecluster-uuidtopic-name
Group arn: aws: kafka::: group//regionaccount-idcluster-namecluster-uuidgroup-name
事务 ID arn: aws: kafka::: transactional-id///regionaccount-idcluster-namecluster-uuidtransactional-id

您可以在 ARN 中 :cluster/:topic/:group/:transactional-id/ 之后的任意位置,任意次数地使用星号 (*) 通配符。以下是如何使用星号 (*) 通配符引用多个资源的部分示例:

  • arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/*:任何名为的集群中的所有主题 MyTestCluster,无论集群的 UUID 如何。

  • arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*_test:集群中名称以 “_test” 结尾的所有主题,其名称为,UUID 为 abcd1234-0123-abcd-56 MyTestCluster 78-1234abcd-1。

  • arn:aws:kafka:us-east-1:0123456789012:transactional-id/MyTestCluster/*/5555abcd-1111-abcd-1234-abcd1234-1:所有交易 ID 为 5555abcd-1111-abcd-1234-abcd-1234-1 的交易,涉及你账户中命名的集群的所有化身。 MyTestCluster 这意味着,如果您创建了一个名为 MyTestCluster的集群,然后将其删除,然后创建另一个同名集群,则可以使用此资源 ARN 在两个集群上表示相同的交易 ID。但是,无法访问已删除的集群。