本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 控制對 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
"
}
}
}
]
}
陳述式由各種元素組成:
-
效果 – 效果可以是
Allow
或Deny
。根據預設,使用者沒有使用資源和API動作的許可,因此所有請求都會遭到拒絕。明確允許覆寫預設值。明確拒絕覆寫任何允許。 -
動作 – 動作是您授予或拒絕許可的特定API動作。
-
資源 – 受動作影響的資源。若要在陳述式中指定資源,您必須使用其 Amazon Resource Name (ARN)。
-
條件 – 條件為選用。您可以使用它們來控制何時政策開始生效。
當您建立和管理IAM政策時,建議您使用IAM政策產生器和IAM政策模擬器 。
Kinesis Video Streams 的動作
在IAM政策陳述式中,您可以指定支援 的任何服務的任何API動作IAM。對於 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 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 中的串流執行操作。以下概述說明將視訊串流存取權跨帳戶授與的一般步驟:
取得您想要授予許可以對帳戶中建立的串流資源執行操作之帳戶的 12 位數帳戶 ID。
範例:在下列步驟中,我們將使用 111111111111 作為您要授予許可的帳戶的帳戶 ID,並使用 999999999999 作為 Kinesis Video Streams 的 ID
在擁有串流 (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
受管政策ARN中GetDataEndpoint
PutMedia
串流資源等操作的許可。此新角色也會信任其他帳戶 111111111111 擔任此角色。重要
記下角色 ARN,您需要在下一個步驟中使用它。
在另一個 帳戶 111111111111 中建立受管政策,允許對您在上一個步驟中在 帳戶 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 中建立之串流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": "" } }根據環境中的上一組設定存取金鑰、私密金鑰和工作階段憑證。
set AWS_ACCESS_KEY_ID= set AWS_SECRET_ACCESS_KEY= set AWS_SESSION_TOKEN=
執行 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
影片串流上執行 DescribeStream
、ListStreams
、、 GetMedia
和 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" } ] }