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

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

使用 IAM 控制对 Kinesis Video Streams 资源的访问权限

您可以将 Amazon Identity and Access Management (IAM) 与 Amazon Kinesis Video Streams 配合使用,以控制组织中的用户是否可以使用特定的 Kinesis Video Streams API 操作执行任务,以及他们是否可以使用特定资源。 Amazon

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

策略语法

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

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

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

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

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

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

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

在创建和管理 IAM 策略时,我们建议您使用 IAM 策略生成器IAM 策略模拟器

Kinesis Video Streams 的操作

在 IAM policy 语句中,您可以从支持 IAM 的任何服务中指定任何 API 操作。对于 Kinesis Video Streams,请使用以下前缀和 API 操作kinesisvideo:的名称:。例如:kinesisvideo:CreateStreamkinesisvideo:ListStreamskinesisvideo: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 的 Amazon 资源名称(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 视频流执行操作。下面概述了向各个账户授予对视频流的访问权的常规步骤:

  1. 获取您要向其授予对流执行操作的权限的账户的 12 位数账户 ID (例如,111111111111)。

  2. 在拥有流的账户中创建一个托管策略,此策略支持您希望授予的访问权级别。有关 Kinesis Video Streams 资源的策略示例,示例策略请参阅下一节中的。

  3. 创建角色,并指定要为其授予权限的账户。然后附加您在上一步中创建的策略。

  4. 创建允许对您在上一步中创建的角色AssumeRole执行操作的托管策略。例如,此角色可能如下所示:

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123456789012:role/CustomRole" } }

有关授予跨账户访问权限的 step-by-step 说明,请参阅Amazon Web Services 账户 使用 IAM 角色委派访问权限

Kinesis Video Streams 的策略示例

以下示例策略演示了如何控制用户对 Kinesis Video Streams 的访问权限

例 1:允许用户从任何 Kinesis 视频流中获取数据

此策略允许用户或群组对任何 Kinesis 视频流执行DescribeStreamGetDataEndpointGetMediaListStreams、、、和ListTagsForStream操作。此策略适用于可从任何视频流获取数据的用户。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesisvideo:Describe*", "kinesisvideo:Get*", "kinesisvideo:List*" ], "Resource": "*" } ] }
例 2:允许用户创建 Kinesis 视频流并向其写入数据

此策略允许用户或组执行 CreateStreamPutMedia 操作。此策略适用于可创建视频流并向该流发送数据的安保摄像头。

{ "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" } ] }