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。 |
|
cluster | 是 |
kafka-cluster:AlterCluster |
授予更改集群各个方面的权限,相当于 Apache Kafka 的 ALTER CLUSTER ACL。 |
|
cluster | 否 |
kafka-cluster:DescribeClusterDynamicConfiguration |
授予描述集群动态配置的权限,相当于 Apache Kafka 的 DESCRIBE_CONFIGS CLUSTER ACL。 |
|
cluster | 否 |
kafka-cluster:AlterClusterDynamicConfiguration |
授予更改集群动态配置的权限,相当于 Apache Kafka 的 ALTER_CONFIGS CLUSTER ACL。 |
|
cluster | 否 |
kafka-cluster:WriteDataIdempotently |
授予在集群上以幂等方式写入数据的权限,相当于 Apache Kafka 的 IDEMPOTENT_WRITE CLUSTER ACL。 |
|
cluster | 是 |
kafka-cluster:CreateTopic |
授予在集群上创建主题的权限,相当于 Apache Kafka 的 CREATE CLUSTER/TOPIC ACL。 |
|
topic | 是 |
kafka-cluster:DescribeTopic |
授予描述集群上主题的权限,相当于 Apache Kafka 的 DESCRIBE TOPIC ACL。 |
|
topic | 是 |
kafka-cluster:AlterTopic |
授予更改集群上主题的权限,相当于 Apache Kafka 的 ALTER TOPIC ACL。 |
|
topic | 是 |
kafka-cluster:DeleteTopic |
授予删除集群上主题的权限,相当于 Apache Kafka 的 DELETE TOPIC ACL。 |
|
topic | 是 |
kafka-cluster:DescribeTopicDynamicConfiguration |
授予描述集群上主题动态配置的权限,相当于 Apache Kafka 的 DESCRIBE_CONFIGS TOPIC ACL。 |
|
topic | 是 |
kafka-cluster:AlterTopicDynamicConfiguration |
授予更改集群上主题动态配置的权限,相当于 Apache Kafka 的 ALTER_CONFIGS TOPIC ACL。 |
|
topic | 是 |
kafka-cluster:ReadData |
授予从集群上主题中读取数据的权限,相当于 Apache Kafka 的 READ TOPIC ACL。 |
|
topic | 是 |
kafka-cluster:WriteData |
授予向集群上的主题写入数据的权限,相当于 Apache Kafka 的 WRITE TOPIC ACL |
|
topic | 是 |
kafka-cluster:DescribeGroup |
授予描述集群上群组的权限,相当于 Apache Kafka 的 DESCRIBE GROUP ACL。 |
|
组 | 是 |
kafka-cluster:AlterGroup |
授予加入集群上群组的权限,相当于 Apache Kafka 的 READ GROUP ACL。 |
|
组 | 是 |
kafka-cluster:DeleteGroup |
授予删除集群上群组的权限,相当于 Apache Kafka 的 DELETE GROUP ACL。 |
|
组 | 是 |
kafka-cluster:DescribeTransactionalId |
授予描述集群上事务 ID 的权限,相当于 Apache Kafka 的 DESCRIBE TRANSACTIONAL_ID ACL。 |
|
transactional-id | 是 |
kafka-cluster:AlterTransactionalId |
授予更改集群上事务 ID 的权限,相当于 Apache Kafka 的 WRITE TRANSACTIONAL_ID ACL。 |
|
transactional-id | 是 |
在冒号之后的操作中,您可以任意次数地使用星号 (*) 通配符。示例如下。
kafka-cluster:*Topic代表kafka-cluster:CreateTopic、kafka-cluster:DescribeTopic、kafka-cluster:AlterTopic和kafka-cluster:DeleteTopic。它不包括kafka-cluster:DescribeTopicDynamicConfiguration或kafka-cluster:AlterTopicDynamicConfiguration。-
kafka-cluster:*代表所有权限。
授权策略资源
下表显示了在使用 Amazon MSK 的 IAM 访问控制时可在授权策略中使用的四种资源。您可以从 Amazon Web Services 管理控制台 或通过使用 DescribeCluster API 或 describe-cluster
| 资源 | 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。但是,无法访问已删除的集群。