IAM を使用した Kinesis Video Streams リソースへのアクセスの制御 - Amazon Kinesis Video Streams

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

IAM を使用した Kinesis Video Streams リソースへのアクセスの制御

Amazon Kinesis Video Streams で AWS Identity and Access Management (IAM) を使用して、組織内のユーザーが特定の Kinesis Video Streams API オペレーションを使用してタスクを実行できるかどうか、および特定の AWS リソースを使用できるかどうかを制御できます。 Amazon Kinesis Video Streams

IAM の詳細については、以下を参照してください。

ポリシー構文

IAM ポリシーは、1 つ、または複数のステートメントで構成される JSON ドキュメントです。各ステートメントは次のように構成されます。

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

ステートメントはさまざまなエレメントで構成されています。

  • 効果効果Allowまたは ですDeny。デフォルトでは、 ユーザーはリソースおよび API アクションを使用するアクセス許可がないため、リクエストはすべて拒否されます。明示的な許可はデフォルトに上書きされます。明示的な拒否はすべての許可に上書きされます。

  • アクションアクションは、アクセス許可を付与または拒否する特定の API アクションです。

  • リソース — アクションの影響を受けるリソース。ステートメント内でリソースを指定するには、Amazon リソースネーム (ARN) を使用する必要があります。

  • 条件 – 条件はオプションです。ポリシーの発効条件を指定するために使用します。

IAM ポリシーを作成および管理する際は、IAM Policy GeneratorIAM Policy Simulator を使用することをお勧めします。

Kinesis Video Streams のアクション

IAM ポリシーステートメントで、IAM をサポートするすべてのサービスからの任意の API アクションを指定できます。Kinesis Video Streams の場合、API アクションの名前に次のプレフィックス (kinesisvideo:) を使用します。例えば、kinesisvideo:CreateStreamkinesisvideo: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

を使用してストリームの ARN を取得できますDescribeStream

他の IAM アカウントに Kinesis ビデオストリームへのアクセス権を付与する

Kinesis Video Streams のストリームでオペレーションを実行するには、他の IAM アカウントに許可を付与する必要がある場合があります。次の概要では、アカウント間でビデオストリームへのアクセス許可を付与するための一般的なステップを説明します。

  1. アカウントで作成されたストリームリソースに対してオペレーションを実行するアクセス許可を付与するアカウントの 12 桁のアカウント ID を取得します。

    例: 次のステップでは、アクセス許可を付与するアカウントのアカウント ID として 111111111111 を使用し、Kinesis Video Streams の ID として 999999999999 を使用します。

  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 PutMediaに対する 、GetDataEndpoint、 などのオペレーションに対するアクセス許可が付与されています。この新しいロールは、このロールを引き受ける他のアカウント 111111111111 も信頼します。

    重要

    ロール ARN を書き留めておきます。次のステップで必要になります。

  4. 前のステップでアカウント 111111111111 で作成したロールに対する AssumeRole アクションを許可するマネージドポリシーを、他のアカウント 999999999999 に作成します。前のステップのロール ARN について言及する必要があります。

    サンプルポリシー:

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::999999999999:role/CustomRoleName" } }
  5. 前のステップで作成したポリシーを、ロールやアカウント 111111111111 のユーザーなどの IAM エンティティにアタッチします。このユーザーは、アカウント 999999999999 CustomRoleNameでロールを引き受けるアクセス許可を持つようになりました。

    このユーザーの認証情報は API を呼び出し AWS STS AssumeRoleてセッション認証情報を取得し、その後、アカウント 999999999999 で作成されたストリームで Kinesis Video APIs を呼び出すために使用されます。

    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 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 手順については、「IAM ロール AWS アカウント を使用した 間のアクセスの委任」を参照してください。

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 ビデオストリームの作成とビデオストリームへのデータの書き込みを許可する

このポリシーにより、ユーザーまたはグループは 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 ビデオストリームへのデータの書き込みを許可する

このポリシーにより、ユーザーまたはグループは特定のビデオストリームにデータを書き込むことができます。このポリシーは、1 つのストリームにデータを送信できるデバイスに適してします。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesisvideo:PutMedia", "Resource": "arn:aws:kinesisvideo:us-west-2:123456789012:stream/your_stream/0123456789012" } ] }