Amazon Kinesis Data Streams
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

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

使用 AWS Identity and Access Management (IAM) 可以执行以下操作:

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

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

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

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

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

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

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

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

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

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

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

策略语法

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

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

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

  • Effect:effect 可以是 AllowDeny。默认情况下 IAM 用户没有使用资源和 API 操作的权限,因此,所有请求均会被拒绝。明确允许将覆盖默认规则。显式拒绝将覆盖任何允许。

  • Actionaction 是对其授予或拒绝权限的特定 API 操作。

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

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

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

针对 Kinesis Data Streams 的操作

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

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

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

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

"Action": "kinesis:Get*"

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

"Action": "kinesis:*"

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

适用于 Kinesis Data Streams 的 Amazon 资源名称 (ARN)

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

请对 Kinesis data stream使用以下 ARN 资源格式:

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

例如:

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

Kinesis Data Streams 策略示例

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

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

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:Get*", "kinesis:DescribeStream" ], "Resource": [ "arn:aws-cn: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-cn: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-cn:kinesis:us-east-1:111122223333:stream/stream1" ] } ] }

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

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

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