本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 IAM 角色创建授权策略
将授权策略附加到与客户端对应的 IAM 角色。在授权策略中,您可以指定角色允许或拒绝哪些操作。如果您的客户端位于 Amazon EC2 实例上,请将授权策略与该 Amazon EC2 实例的 IAM 角色关联。或者,您也可以将客户端配置为使用命名配置文件,然后将授权策略与该命名配置文件的角色关联。配置客户端以进行 IAM 访问控制 介绍如何将客户端配置为使用命名配置文件。
有关如何创建 IAM policy 的信息,请参阅创建 IAM policy。
以下是名为的集群的授权策略示例 MyTestCluster。要了解 Action
和 Resource
元素的语义,请参阅 IAM 授权策略、操作和资源的语义。
重要
您对 IAM policy 所做的更改会 Amazon CLI 立即反映在 IAM APIs 和中。但是,策略更改可能需要很长时间才能生效。在大多数情况下,策略更改会在不到一分钟的时间内生效。网络状况有时可能会增加延迟时间。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:AlterCluster", "kafka-cluster:DescribeCluster" ], "Resource": [ "arn:aws:kafka:us-east-1:0123456789012:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:*Topic*", "kafka-cluster:WriteData", "kafka-cluster:ReadData" ], "Resource": [ "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/*" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:AlterGroup", "kafka-cluster:DescribeGroup" ], "Resource": [ "arn:aws:kafka:us-east-1:123456789012:group/MyTestCluster/*" ] } ] }
要了解如何创建包含与常见 Apache Kafka 用例(例如创建和使用数据)对应的操作元素的策略,请参阅客户端授权策略的常见使用场景。
对于 Kafka 版本 2.8.0 及更高版本,该WriteDataIdempotently权限已被弃用(KIP-679)。enable.idempotence = true
。因此,对于 Kafka 版本 2.8.0 及更高版本,IAM 不提供与 Kafka 相同的功能。 ACLs仅提供WriteDataIdempotently
对某个主题的WriteData
访问权限,无法。当向所有主题提供时WriteData
,这不会影响这种情况。在这种情况下,允许 WriteDataIdempotently
。这是由于 IAM 逻辑的实现与 Kafka ACLs 的实现方式存在差异。此外,同等地写一个话题也需要访问权限。transactional-ids
要解决这个问题,建议使用类似于以下策略的策略。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:AlterCluster", "kafka-cluster:DescribeCluster", "kafka-cluster:WriteDataIdempotently" ], "Resource": [ "arn:aws:kafka:us-east-1:123456789012:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1" ] }, { "Effect": "Allow", "Action": [ "kafka-cluster:*Topic*", "kafka-cluster:WriteData", "kafka-cluster:ReadData" ], "Resource": [ "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/TestTopic", "arn:aws:kafka:us-east-1:123456789012:transactional-id/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*" ] } ] }
在这种情况下,WriteData
允许写入 TestTopic
,而 WriteDataIdempotently
允许对集群进行幂等性写入。该策略还增加了对所需transactional-id
资源的访问权限。
由于WriteDataIdempotently
是集群级别的权限,因此您不能在主题级别使用它。如果WriteDataIdempotently
仅限于主题级别,则此策略将不起作用。