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

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

目前,Amazon MSK 的 IAM 访问控制不支持 Kafka 的内部集群操作。这包括 Kafka 用于终止事务的 WriteTxnMarkers API。要终止事务,建议使用带有相应的 ACL 的 SCRAM 或 mTLS 身份验证,而不是进行 IAM 身份验证。

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

授权策略操作

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

操作 描述 所需的操作 所需的 资源 适用于无服务器集群
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 的 CREATE 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 授予描述集群上事务 ID 的权限,相当于 Apache Kafka 的 DESCRIBE TRANSACTIONAL_ID ACL。

kafka-cluster:Connect

transactional-id
kafka-cluster:AlterTransactionalId 授予更改集群上事务 ID 的权限,相当于 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 访问控制时可在授权策略中使用的四种资源。您可以从 Amazon Web Services 管理控制台 或通过使用 DescribeCluster API 或 describe-cluster Amazon CLI 命令,获取集群 Amazon 资源名称(ARN)。然后,您可以使用集群 ARN 来构造主题、组和事务 ID ARN。要在授权策略中指定资源,请使用该资源的 ARN。

资源 ARN 格式
集群 arn:aws:kafka:region:account-id:cluster/cluster-name/cluster-uuid
主题 arn:aws:kafka:region:account-id:topic/cluster-name/cluster-uuid/topic-name
arn:aws:kafka:region:account-id:group/cluster-name/cluster-uuid/group-name
事务 ID arn:aws:kafka:region:account-id:transactional-id/cluster-name/cluster-uuid/transactional-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:在名为 MyTestCluster 且 UUID 为 abcd1234-0123-abcd-5678-1234abcd-1 的集群中,名称以“_test”结尾的所有主题。

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