本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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 的更多信息,请参阅 开发 KCL 1.x 使用者。
有关 IAM 的更多信息,请参阅下文:
有关 IAM 和 Amazon DynamoDB,请参阅 使用IAM控制对的访问 Amazon DynamoDB 资源 在 Amazon DynamoDB 开发人员指南.
有关 IAM 和 Amazon CloudWatch 的更多信息,请参阅 AWS 中的控制用户对您的 Amazon CloudWatch 用户指南 账户的访问。
内容
策略语法
IAM 策略是包含一个或多个语句的 JSON 文档。每个语句的结构如下:
{
"Statement":[{
"Effect":"effect
",
"Action":"action
",
"Resource":"arn
",
"Condition":{
"condition
":{
"key
":"value
"
}
}
}
]
}
组成语句的各个元素如下:
-
效果: 的 效果 可能是
Allow
或Deny
。依默认, IAM 用户无权使用资源和API操作,因此所有请求均被拒绝。显式允许将覆盖默认规则。显式拒绝将覆盖任何允许。 -
操作:的 行动 是您正在授予或拒绝权限的特定API操作。
-
资源:受操作影响的资源。要在语句中指定资源,您需要使用其Amazon 资源名称 (ARN)。
-
条件: 条件是可选的。它们可以用于控制策略生效的时间。
在创建和管理 IAM 策略时,您可能希望使用 IAM 策略生成器和 IAM 策略模拟器。
Kinesis Data Streams 操作
在 IAM 策略语句中,您可以从支持 IAM 的任何服务中指定任何 API 操作。对于 Kinesis Data Streams,请使用以下前缀和API操作的名称:
kinesis:
。例如: kinesis:CreateStream
, kinesis:ListStreams
,和 kinesis:DescribeStreamSummary
.
要在单个语句中指定多项操作,请使用逗号将它们隔开,如下所示:
"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 政策声明适用于您使用其 ARNs.
请对 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的访问。
例 一: 允许用户从流获取数据
此策略允许用户或组对特定流执行 DescribeStreamSummary
、GetShardIterator
和 GetRecords
操作,对任何流执行 ListStreams
操作。此策略可应用于应该能够从特定流获取数据的用户。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:Get*", "kinesis:DescribeStreamSummary" ], "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/*" ] } ] }