本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 IAM 控制對 Kinesis Video Streams 資源的存取
您可以將 AWS Identity and Access Management (IAM) 與 Amazon Kinesis Video Streams 搭配使用,控制組織中的使用者是否可以使用特定的 Kinesis 影片串流 API 操作執行任務,以及他們是否可以使用特定 AWS 資源。
如需 IAM 的詳細資訊,請參閱下列各項:
目錄
政策語法
IAM 政策為包含一或多個陳述式的 JSON 文件。每個陳述式的結構如下所示:
{
"Statement":[{
"Effect":"effect
",
"Action":"action
",
"Resource":"arn
",
"Condition":{
"condition
":{
"key
":"value
"
}
}
}
]
}
陳述式由各種元素組成:
-
效果 — 效果可以是
Allow
或Deny
。根據預設, 使用者沒有使用資源和 API 動作的許可,因此所有請求均會遭到拒絕。明確允許覆寫預設值。明確拒絕覆寫任何允許。 -
動作 — 動作是您授與或拒絕權限的特定 API 動作。
-
資源 — 受動作影響的資源。若要在陳述式中指定資源,您必須使用它的 Amazon Resource Name (ARN)。
-
條件 — 條件是選擇性的。您可以使用它們來控制何時政策開始生效。
建立和管理 IAM 政策時,建議您使用 IAM 政策產生器和 IAM 政策模擬器。
室壁運動影片串流的動作
在 IAM 政策陳述式中,您可以從任何支援 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 的 Amazon 資源名稱 (ARN)
每個 IAM 政策陳述式都會套用到您使用其 ARN 指定的資源。
針對 Kinesis Video Streams 使用下列 ARN 資源格式:
arn:aws:kinesisvideo:region
:account-id
:stream/stream-name
/code
例如:
"Resource": arn:aws:kinesisvideo:*:111122223333:stream/my-stream/0123456789012
您可以使DescribeStream用獲取流的 ARN。
授與其他 IAM 帳戶存取 Kinesis 影片串流的存取權
您可能需要授與其他 IAM 帳戶的權限,才能對 Kinesis 影片串流中的串流執行作業。以下概述說明將視訊串流存取權跨帳戶授與的一般步驟:
取得您要授與權限的帳戶的 12 位數帳號 ID,以便對您帳戶中建立的串流資源執行作業。
範例:在下列步驟中,我們會使用 11111111111111 做為您要授與權限之帳戶的帳戶識別碼,而 999999999999 做為 Kinesis Video Streams 的識別碼
在擁有串流 (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 資源的其他範例政策,請參閱範例政策下一節。
在擁有串流的帳戶中建立角色 (999999999999),然後指定您要授與權限的帳戶 (111111111111)。這會將受信任的實體新增至角色。
信任原則範例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111111111111
:root" }, "Action": "sts:AssumeRole" } ] }將您在上一個步驟中建立的策略附加到此角色。
您現在已經在帳戶 999999999999 中建立了一個角色
DescribeStream
,GetDataEndpoint
該角色具有受管理策略中的流資源 ARN 等操作的權限。PutMedia
這個新角色也會信任其他帳戶 111111111111,以擔任此角色。重要
記下角色 ARN,您將在下一步中需要它。
在另一個帳戶中建立受管理的策略 1111111111,允許對您在上一個步驟中的帳號 999999999999 中建立的角色執行處理
AssumeRole
行動。您需要提及上一步中的角色 ARN。樣本政策:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::
999999999999
:role/CustomRoleName" } }將上一步中建立的政策附加到 IAM 實體,例如帳戶 111111111111 中的角色或使用者。此使用者現在有權在 999999999999 帳戶
CustomRoleName
中擔任角色。此使用者的登入資料會呼叫 AWS STS
AssumeRole
API 來取得工作階段認證,這些認證隨後會用來呼叫在 999999999999 帳戶中建立的串流上的 Kinesis 視訊串流 API。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": "" } }根據環境中的先前設定,設定存取金鑰、私密金鑰和工作階段認證。
set AWS_ACCESS_KEY_ID= set AWS_SECRET_ACCESS_KEY= set AWS_SESSION_TOKEN=
執行 Kinesis Video Streams API,以描述並取得該串流的資料端點,帳戶為 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 視訊串流執行GetMedia
ListStreams
、、和ListTagsForStream
作業。DescribeStream
GetDataEndpoint
此政策適用於可以取得任何視訊串流資料的使用者。
{ "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" } ] }