本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 IAM 控制对 Kinesis Video Streams 资源的访问权限
您可以将 AWS Identity and Access Management (IAM) 与 Amazon Kinesis Video Streams 配合使用,以控制组织中的用户是否可以使用特定的 Kinesis Video Streams API 操作执行任务,以及他们是否可以使用特定资源。AWS
有关 IAM 的更多信息,请参阅以下文档:
目录
策略语法
IAM policy 是包含一个或多个语句的 JSON 文档。每个语句的结构如下:
{
"Statement":[{
"Effect":"effect
",
"Action":"action
",
"Resource":"arn
",
"Condition":{
"condition
":{
"key
":"value
"
}
}
}
]
}
组成语句的各个元素如下:
-
效果-效果可以是
Allow
或Deny
。默认情况下 用户没有使用资源和 API 操作的权限,因此,所有请求均会被拒绝。显式允许将覆盖默认规则。显式拒绝将覆盖任何允许。 -
操作 — 操作是您授予或拒绝权限的特定 API 操作。
-
资源-受操作影响的资源。要在语句中指定资源,必须使用其 Amazon 资源名称 (ARN)。
-
条件-条件是可选的。它们可以用于控制策略生效的时间。
在创建和管理 IAM 策略时,我们建议您使用 IAM 策略生成器和 IAM 策略模拟器。
Kinesis Video Streams 的操作
在 IAM policy 语句中,您可以从支持 IAM 的任何服务中指定任何 API 操作。对于 Kinesis Video Streams,请使用以下前缀和 API 操作kinesisvideo:
的名称:。例如:kinesisvideo:CreateStream
、kinesisvideo:ListStreams
和 kinesisvideo:DescribeStream
。
要在单个语句中指定多项操作,请使用逗号将它们隔开,如下所示:
"Action": ["kinesisvideo:action1", "kinesisvideo:action2"]
您也可以使用通配符指定多项操作。例如,您可以指定名称以单词“Get”开头的所有操作,如下所示:
"Action": "kinesisvideo:Get*"
要指定所有 Kinesis Video Streams 操作,请按如下方式使用星号 (*) 通配符:
"Action": "kinesisvideo:*"
有关 Kinesis Video Streams API 操作的完整列表,请参阅 Kinesis Video Streams API 参考。
Kinesis Video Streams 的亚马逊资源名称 (ARN)
每个 IAM policy 语句适用于您使用资源的 ARN 指定的资源。
对 Kinesis Video Streams 使用以下 ARN 资源格式:
arn:aws:kinesisvideo:region
:account-id
:stream/stream-name
/code
例如:
"Resource": arn:aws:kinesisvideo:*:111122223333:stream/my-stream/0123456789012
你可以使用获取直播的 ARN。DescribeStream
向其他 IAM 账户授予访问 Kinesis 视频流的权限
您可能需要向其他 IAM 账户授予权限才能对 Kinesis 视频流执行操作。下面概述了向各个账户授予对视频流的访问权的常规步骤:
获取您要向其授予对流执行操作的权限的账户的 12 位数账户 ID (例如,111111111111)。
在拥有流的账户中创建一个托管策略,此策略支持您希望授予的访问权级别。有关 Kinesis Video Streams 资源的策略示例,示例策略请参阅下一节中的。
创建角色,并指定要为其授予权限的账户。然后附加您在上一步中创建的策略。
创建允许对您在上一步中创建的角色
AssumeRole
执行操作的托管策略。例如,此角色可能如下所示:{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123456789012:role/CustomRole" } }
有关授予跨账户访问权限的 step-by-step 说明,请参阅AWS 账户使用 IAM 角色委派访问权限。
Kinesis Video Streams 的策略示例
以下示例策略演示了如何控制用户对 Kinesis Video Streams 的访问权限
例 1:允许用户从任何 Kinesis 视频流中获取数据
此策略允许用户或群组对任何 Kinesis 视频流执行DescribeStream
GetDataEndpoint
GetMedia
ListStreams
、、、和ListTagsForStream
操作。此策略适用于可从任何视频流获取数据的用户。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesisvideo:Describe*", "kinesisvideo:Get*", "kinesisvideo:List*" ], "Resource": "*" } ] }
例 2:允许用户创建 Kinesis 视频流并向其写入数据
此策略允许用户或组执行 CreateStream
和 PutMedia
操作。此策略适用于可创建视频流并向该流发送数据的安保摄像头。
{ "Statement": [ { "Effect": "Allow", "Action": [ "kinesisvideo:CreateStream", "kinesisvideo:PutMedia" ], "Resource": "*" } ] }
例 3:允许用户完全访问所有 Kinesis Video Streams 资源
此策略允许用户或群组对任何资源执行任何 Kinesis Video Streams 操作。此策略适用于管理员。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesisvideo:*", "Resource": "*" } ] }
例 4:允许用户向特定的 Kinesis 视频流写入数据
此策略允许用户或组将数据写入特定的视频流。此策略适用于可将数据发送到单个流的设备。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesisvideo:PutMedia", "Resource": "arn:aws:kinesisvideo:us-west-2:123456789012:stream/your_stream/0123456789012" } ] }