本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用控制对 Amazon Kinesis Data Streams 资源的访问权限 IAM
Amazon Identity and Access Management (IAM) 允许您执行以下操作:
-
在您的 Amazon 账户下创建用户和群组
-
为您 Amazon 账户下的每位用户分配唯一的安全证书
-
控制每个用户使用 Amazon 资源执行任务的权限
-
允许其他 Amazon 账户中的用户共享您的 Amazon 资源
-
为您的 Amazon 账户创建角色并定义可以担任这些角色的用户或服务
-
使用企业的现有身份授予使用 Amazon 资源执行任务的权限
通过IAM与 Kinesis Data Streams 配合使用,您可以控制组织中的用户是否可以使用特定的 Kinesis Data API Streams 操作执行任务,以及他们是否可以使用特定资源。 Amazon
如果您使用 Kinesis 客户端库 (KCL) 开发应用程序,则您的策略必须包括亚马逊 DynamoDB 和亚马逊的权限 CloudWatch;KCL使用 DynamoDB 跟踪应用程序的状态信息,并代表您向发送指标。 CloudWatch KCL CloudWatch有关更多信息KCL,请参阅培养 KCL 1.x 消费者。
有关的更多信息IAM,请参阅以下内容:
有关IAM和亚马逊 DynamoDB 的更多信息,请参阅《亚马逊 DynamoDB 开发者指南》中的IAM使用控制对亚马逊 DynamoDB 资源的访问权限。
有关IAM和Amazon的更多信息 CloudWatch,请参阅亚马逊用户指南中的控制用户对您 Amazon 账户的访问权限。 CloudWatch
内容
策略语法
IAM策略是由一个或多个声明组成的JSON文档。每个语句的结构如下:
{
"Statement":[{
"Effect":"effect
",
"Action":"action
",
"Resource":"arn
",
"Condition":{
"condition
":{
"key
":"value
"
}
}
}
]
}
组成语句的各个元素如下:
-
Effect:此 effect 可以是
Allow
或Deny
。默认情况下,IAM用户无权使用资源和API操作,因此所有请求都将被拒绝。显式允许将覆盖默认规则。显式拒绝将覆盖任何允许。 -
操作:操作是您授予或拒绝权限的特定API操作。
-
Resource:受操作影响的资源。要在语句中指定资源,您需要使用其 Amazon 资源名称 (ARN)。
-
条件:条件是可选的。它们可以用于控制策略生效的时间。
在创建和管理IAM策略时,您可能需要使用IAM策略生成器和IAM策略模拟器。
Kinesis Data Streams 的操作
在IAM策略声明中,您可以指定任何支持的服务中的任何API操作IAM。对于 Kinesis Data Streams,请使用以下前缀作为操作kinesis:
名称:。API例如:kinesis:CreateStream
、kinesis:ListStreams
和 kinesis:DescribeStreamSummary
。
要在单个语句中指定多项操作,请使用逗号将它们隔开,如下所示:
"Action": ["kinesis:action1", "kinesis:action2"]
您也可以使用通配符指定多项操作。例如,您可以指定名称以单词“Get”开头的所有操作,如下所示:
"Action": "kinesis:Get*"
要指定所有 Kinesis Data Streams 操作,请使用 * 通配符,如下所示:
"Action": "kinesis:*"
有关 Kinesis Data API Streams 操作的完整列表,请参阅《API亚马逊 Kinesis 参考》。
Kinesis Data Streams 的亚马逊资源名称 (ARNs)
每项IAM策略声明都适用于您使用其指定的资源ARNs。
对 Kinesis 数据流使用以下ARN资源格式:
arn:aws:kinesis:region
:account-id
:stream/stream-name
例如:
"Resource": arn:aws:kinesis:*:111122223333:stream/my-stream
Kinesis Data Streams 的示例策略
以下示例策略演示如何控制用户对您的 Kinesis Data Streams 的访问。
与其他账户共享您的数据流
注意
Kinesis 制作器库目前不支持在写入数据流ARN时指定流。 Amazon SDK如果您想写入跨账户数据流,请使用。
将基于资源的策略附加到您的数据流,以向其他账户、IAM用户或IAM角色授予访问权限。基于资源的JSON策略是您附加到资源(例如数据流)的策略文档。这些策略将向指定的主体授予对该资源执行特定操作的权限,并定义这在哪些条件下适用。一个策略可以有多个语句。您必须在基于资源的策略中指定主体。委托人可以包括账户、用户、角色、联合用户或 Amazon 服务。您可以在 Kinesis Data Streams 控制台中配置策略API,SDK或者。
请注意,要与注册使用者(例如 Enhance d Fan Out)共享访问权限,需要对数据流ARN和消费者制定政策ARN。
启用跨账户访问
要启用跨账户访问权限,您可以将整个账户或另一个账户中的IAM实体指定为基于资源的策略中的委托人。将跨账户主体添加到基于资源的策略只是建立信任关系工作的一半而已。当委托人和资源位于不同的 Amazon 账户中时,您还必须使用基于身份的策略来授予委托人访问资源的权限。但是,如果基于资源的策略向同一个账户中的主体授予访问权限,则不需要额外的基于身份的策略。
有关使用基于资源的策略进行跨账户访问的更多信息,请参阅中的跨账户资源访问。IAM
数据流管理员可以使用 Amazon Identity and Access Management 策略来指定谁有权访问什么。也就是说,哪个主体 可以对什么资源执行操作,以及在什么条件下执行。JSON策略Action
元素描述了可用于在策略中允许或拒绝访问的操作。策略操作通常与关联的 Amazon API操作同名。
可以共享的 Kinesis Data Streams 操作:
操作 | 访问级别 |
---|---|
DescribeStreamConsumer | 消费端 |
DescribeStreamSummary | 数据流 |
GetRecords | 数据流 |
GetShardIterator | 数据流 |
ListShards | 数据流 |
PutRecord | 数据流 |
PutRecords | 数据流 |
SubscribeToShard | 消费端 |
以下是使用基于资源的策略向您的数据流或注册使用者授予跨账户存取权限的示例。
要执行跨账户操作,您必须ARN为数据流访问指定流,ARN为注册使用者访问指定使用者。
Kinesis Data Streams 基于资源的策略示例
由于需要执行的操作,共享注册的使用者既涉及数据流策略,也涉及使用者策略。
注意
Principal
的示例有效值如下:
{"AWS": "123456789012"}
IAM用户 —
{"AWS": "arn:aws:iam::123456789012:user/user-name"}
IAM角色 —
{"AWS":["arn:aws:iam::123456789012:role/role-name"]}
多个主体(可以是账户、用户、角色的组合)–
{"AWS":["123456789012", "123456789013", "arn:aws:iam::123456789012:user/user-name"]}
以编程方式管理数据流策略
除此之外 Amazon Web Services Management Console,Kinesis Data Streams 还有APIS三个用于管理您的数据流策略:
PutResourePolicy
用于附加或覆盖数据流或使用者策略。GetResourcePolicy
用于检查和查看指定数据流或使用者的策略。DeleteResourcePolicy
用于删除指定数据流或使用者的策略。
策略限制
Kinesis Data Streams 资源策略有以下限制:
-
不支持通配符 (*),以防通过直接附加到数据流或注册消费端的资源策略授予广泛访问权限。此外,还要仔细检查以下策略,来确认它们不会授予广泛访问权限:
-
附加到关联 Amazon 委托人(例如角色)的基于身份的策略 IAM
-
附加到关联 Amazon 资源的基于资源的策略(例如, Amazon Key Management Service KMS密钥)
-
Amazon 校长不支持服务校长,以防止副校长可能感到困惑。
不支持联合身份验证主体。
不支持规范IDs用户。
策略大小不能超过 20KB。
共享对加密数据的访问权限
如果您已使用 Amazon 托管密KMS钥为数据流启用服务器端加密,并希望通过资源策略共享访问权限,则必须切换到使用客户管理的密钥 () CMK。有关更多信息,请参阅 什么是 Kinesis Data Streams 的服务器端加密?。此外,您必须允许您的共享主体使用KMS跨账户共享功能访问您CMK的。还要确保对共享主体实体的IAM政策进行更改。有关更多信息,请参阅允许其他账户中的用户使用密KMS钥。
将 Amazon Lambda 函数配置为使用另一个账户从 Kinesis Data Streams 读取
有关如何配置 Lambda 函数以在其他账户中读取 Kinesis Data Streams 中的数据的示例,请参阅 使用跨账户 Amazon Lambda 功能共享访问权限。