使用 IAM 控制对 Amazon Kinesis Data Streams 资源的访问 - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 IAM 控制对 Amazon Kinesis Data Streams 资源的访问

Amazon Identity and Access Management(IAM) 支持您执行以下操作:

  • 在您的 Amazon 账户下创建用户和组

  • 为您的 Amazon 账户下的每个用户分配唯一的安全凭证

  • 控制每个用户使用 Amazon 资源执行任务的权限

  • 允许另一 Amazon 账户的用户共享您的 Amazon 资源

  • 创建 Amazon 账户角色并定义可以担任这些角色的用户或服务

  • 借助企业的现有身份,授予使用 Amazon 资源执行任务的权限

通过将 IAM 与 Kinesis Data Streams 配合使用,您可以控制组织中的用户能否使用特定的 Kinesis Data Streams API 操作执行任务,以及他们能否使用特定的Amazon资源的费用。

如果您使用 Kinesis 客户端库 (KCL) 开发应用程序,您的策略必须包含对 Amazon DynamoDB 和 Amazon CloudWatch 的权限;KCL 使用 DynamoDB 跟踪应用程序的状态信息,并使用 CloudWatch 代表您将 KCL 指标发送到 CloudWatch。有关 KCL 的更多信息,请参阅开发 KCL 1.x 使用者

有关 IAM 的更多信息,请参阅以下文档:

有关 IAM 和 Amazon DynamoDB 的更多信息,请参阅使用 IAM 控制对 Amazon DynamoDB 资源的访问中的Amazon DynamoDB 开发人员指南.

有关 IAM 和 Amazon CloudWatch 的更多信息,请参阅控制用户访问Amazon账户中的Amazon CloudWatch 用户指南.

策略语法

IAM 策略是包含一个或多个语句的 JSON 文档。每个语句的结构如下:

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"arn", "Condition":{ "condition":{ "key":"value" } } } ] }

组成语句的各个元素如下:

  • 效果: 这些区域有:效果Allow或者Deny. 在默认情况下,IAM 用户没有使用资源和 API 操作的许可,因此,所有请求均会被拒绝。显式允许将覆盖默认规则。显式拒绝将覆盖任何允许。

  • 操作:这些区域有:操作是对其授予或拒绝权限的特定 API 操作。

  • 资源:受操作影响的资源。要在语句中指定资源,您需要使用其Amazon 资源名称 (ARN)。

  • Condition:条件是可选的。它们可以用于控制策略生效的时间。

在创建和管理 IAM 策略时,您可能希望使用IAM 策略生成器IAM 策略模拟器.

针对 Kinesis Data Streams 的操作

在 IAM 策略语句中,您可以从支持 IAM 的任何服务中指定任何 API 操作。对于 Kinesis Data Streams,请使用以下前缀为 API 操作命名::kinesis:. 例如:kinesis:CreateStreamkinesis:ListStreams, 和kinesis:DescribeStreamSummary.

要在单个语句中指定多项操作,请使用逗号将它们隔开,如下所示:

"Action": ["kinesis:action1", "kinesis:action2"]

您也可以使用通配符指定多项操作。例如,您可以指定名称以单词“Get”开头的所有操作,如下所示:

"Action": "kinesis:Get*"

要指定所有 Kinesis Data Streams 操作,请使用 * 通配符,如下所示:

"Action": "kinesis:*"

有关 Kinesis Data Streams API 操作的完整列表,请参阅Amazon Kinesis API 参考.

Kinesis Data Streams 的亚马逊资源名称 (ARN)

每个 IAM 策略语句适用于您使用资源的 ARN 指定的资源。

对 Kinesis Data Streams 使用以下 ARN 资源格式:

arn:aws:kinesis:region:account-id:stream/stream-name

例如:

"Resource": arn:aws:kinesis:*:111122223333:stream/my-stream

Kinesis Data Streams 策略

以下策略示例演示如何控制用户对您的 Kinesis 数据流的访问。

例 1:允许用户从流中获取数据

此策略允许用户或组对特定流执行 DescribeStreamSummaryGetShardIteratorGetRecords 操作,对任何流执行 ListStreams 操作。此策略可应用于应该能够从特定流获取数据的用户。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:Get*", "kinesis:DescribeStreamSummary" ], "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/stream1" ] }, { "Effect": "Allow", "Action": [ "kinesis:ListStreams" ], "Resource": [ "*" ] } ] }

例 2: 允许用户将数据添加到账户中的流

此策略允许用户或组对账户的任一流使用 PutRecord 操作。此策略可应用于应该能够向账户中的所有流添加数据记录的用户。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecord" ], "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/*" ] } ] }

例 3: 允许对特定流的 Kinesis Data Streams 操作

此策略允许用户或组对指定流使用任何 Kinesis Data Streams 操作。此策略可应用于应该对特定流有管理控制权限的用户。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:*", "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/stream1" ] } ] }

例 4:允许对任何流的 Kinesis Data Streams 操作

此策略允许用户或组对账户中的任何流使用任何 Kinesis 数据流操作。由于此策略会授予对您的所有流的完全访问权限,您应该将其限制为仅对管理员可用。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:*", "Resource": [ "arn:aws:kinesis:*:111122223333:stream/*" ] } ] }