使用 控制對 Kinesis Video Streams 資源的存取 IAM - Amazon Kinesis Video Streams

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 控制對 Kinesis Video Streams 資源的存取 IAM

您可以搭配 Amazon Kinesis Video Streams 使用 AWS Identity and Access Management (IAM),以控制組織中的使用者是否可以使用特定 Kinesis Video Streams API操作來執行任務,以及他們是否可以使用特定 AWS 資源。

如需 的詳細資訊IAM,請參閱下列內容:

政策語法

IAM 政策是由一或多個陳述式組成的JSON文件。每個陳述式的結構如下所示:

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

陳述式由各種元素組成:

  • 效果效果可以是 AllowDeny。根據預設,使用者沒有使用資源和API動作的許可,因此所有請求都會遭到拒絕。明確允許覆寫預設值。明確拒絕覆寫任何允許。

  • 動作動作是您授予或拒絕許可的特定API動作。

  • 資源 – 受動作影響的資源。若要在陳述式中指定資源,您必須使用其 Amazon Resource Name (ARN)。

  • 條件 – 條件為選用。您可以使用它們來控制何時政策開始生效。

當您建立和管理IAM政策時,建議您使用IAM政策產生器IAM政策模擬器

Kinesis Video Streams 的動作

在IAM政策陳述式中,您可以指定支援 的任何服務的任何API動作IAM。對於 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 Resource Names (ARNs)

每個IAM政策陳述式都適用於您使用其 指定的資源ARNs。

針對 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 Video Streams 中的串流執行操作。以下概述說明將視訊串流存取權跨帳戶授與的一般步驟:

  1. 取得您想要授予許可以對帳戶中建立的串流資源執行操作之帳戶的 12 位數帳戶 ID。

    範例:在下列步驟中,我們將使用 111111111111 作為您要授予許可的帳戶的帳戶 ID,並使用 999999999999 作為 Kinesis Video Streams 的 ID

  2. 在擁有串流 (999999999999) 的帳戶中建立受IAM管政策,以允許您想要授予的存取層級。

    範例政策:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesisvideo:GetDataEndpoint", "kinesisvideo:DescribeStream", "kinesisvideo:PutMedia" ], "Resource": "arn:aws:kinesisvideo:us-west-2:999999999999:stream/custom-stream-name/1613732218179" } ] }

    如需 Kinesis Video Streams 資源的其他範例政策,請參閱下一節範例政策中的 。

  3. 在擁有串流 (999999999999 的帳戶中建立角色),並指定您要授予 (111111111111 許可的帳戶)。這會將受信任的實體新增至角色。

    信任的政策範例:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:root" }, "Action": "sts:AssumeRole" } ] }

    將您在上一個步驟中建立的政策連接到此角色。

    您現在已在帳戶 999999999999 中建立角色,該帳戶具有 DescribeStream受管政策ARN中GetDataEndpointPutMedia串流資源等操作的許可。此新角色也會信任其他帳戶 111111111111 擔任此角色。

    重要

    記下角色 ARN,您需要在下一個步驟中使用它。

  4. 在另一個 帳戶 111111111111 中建立受管政策,允許對您在上一個步驟中在 帳戶 999999999999 中建立的角色AssumeRole執行動作。您需要提及上ARN一個步驟中的角色。

    範例政策:

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::999999999999:role/CustomRoleName" } }
  5. 將上一個步驟中建立的政策連接到IAM實體,例如 帳戶 111111111111 中的角色或使用者。此使用者現在具有在帳戶 999999999999 CustomRoleName中擔任角色的許可。

    此使用者的憑證呼叫 AWS STS AssumeRoleAPI以取得工作階段登入資料,之後會用來呼叫帳戶 999999999999 中建立之串流APIs上的 Kinesis Video Streams。

    aws sts assume-role --role-arn "arn:aws:iam::999999999999:role/CustomRoleName" --role-session-name "kvs-cross-account-assume-role" { "Credentials": { "AccessKeyId": "", "SecretAccessKey": "", "SessionToken": "", "Expiration": "" }, "AssumedRoleUser": { "AssumedRoleId": "", "Arn": "" } }
  6. 根據環境中的上一組設定存取金鑰、私密金鑰和工作階段憑證。

    set AWS_ACCESS_KEY_ID= set AWS_SECRET_ACCESS_KEY= set AWS_SESSION_TOKEN=
  7. 執行 Kinesis Video Streams APIs 來描述和取得帳戶 999999999999 中串流的資料端點。

    aws kinesisvideo describe-stream --stream-arn "arn:aws:kinesisvideo:us-west-2:999999999999:stream/custom-stream-name/1613732218179" { "StreamInfo": { "StreamName": "custom-stream-name", "StreamARN": "arn:aws:kinesisvideo:us-west-2:999999999999:stream/custom-stream-name/1613732218179", "KmsKeyId": "arn:aws:kms:us-west-2:999999999999:alias/aws/kinesisvideo", "Version": "abcd", "Status": "ACTIVE", "CreationTime": "2018-02-19T10:56:58.179000+00:00", "DataRetentionInHours": 24 } } aws kinesisvideo get-data-endpoint --stream-arn "arn:aws:kinesisvideo:us-west-2:999999999999:stream/custom-stream-name/1613732218179" --api-name "PUT_MEDIA" { "DataEndpoint": "https://s-b12345.kinesisvideo.us-west-2.amazonaws.com" }

如需授予跨帳戶存取權的一般 step-by-step說明,請參閱AWS 帳戶 使用IAM角色委派存取權。

Kinesis Video Streams 的政策範例

下列範例政策示範如何控制使用者存取 Kinesis Video Streams

範例 1:允許使用者從任何 Kinesis 影片串流取得資料

此政策允許使用者或群組在任何 Kinesis GetDataEndpoint影片串流上執行 DescribeStreamListStreams、、 GetMediaListTagsForStream操作。此政策適用於可以取得任何視訊串流資料的使用者。

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