

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

# IAM を使用した Kinesis Video Streams リソースへのアクセスの制御
<a name="how-iam"></a>

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

IAM の詳細については、以下を参照してください。
+ [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/)
+ [IAM の開始方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html)
+ [IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/)

**Topics**
+ [ポリシー構文](#policy-syntax)
+ [Kinesis Video Streams のアクション](#kinesis-using-iam-actions)
+ [Kinesis Video Streams の Amazon リソースネーム (ARN)](#kinesis-using-iam-arn-format)
+ [他の IAM アカウントに Kinesis ビデオストリームへのアクセスを許可する](#how-iam-crossaccount)
+ [Kinesis Video Streams のポリシー例](#how-iam-policies)

## ポリシー構文
<a name="policy-syntax"></a>

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

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

ステートメントはさまざまなエレメントで構成されています。
+ **効果** – *効果*は `Allow`または です`Deny`。デフォルトでは ユーザーはリソースおよび API アクションを使用するアクセス許可がないため、リクエストはすべて拒否されます。明示的な許可はデフォルトに上書きされます。明示的な拒否はすべての許可に上書きされます。
+ **アクション** – *アクション*は、アクセス許可を付与または拒否する特定の API アクションです。
+ **リソース** – アクションの影響を受けるリソース。ステートメント内でリソースを指定するには、Amazon リソースネーム (ARN) を使用する必要があります。
+ **条件** – 条件はオプションです。ポリシーの発効条件を指定するために使用します。

IAM ポリシーを作成および管理する際は、[IAM ポリシージェネレータ](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-generator)ーと [IAM ポリシーシミュレーター](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html)を使用することをお勧めします。

## Kinesis Video Streams のアクション
<a name="kinesis-using-iam-actions"></a>

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 の操作を指定するには、次のようにアスタリスク (\$1) ワイルドカードを使用します。

```
"Action": "kinesisvideo:*"
```

Kinesis Video Streams API アクションの一覧については、「[Kinesis Video Streams API リファレンス](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_Reference.html)」を参照してください。

## Kinesis Video Streams の Amazon リソースネーム (ARN)
<a name="kinesis-using-iam-arn-format"></a>

各 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](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_DescribeStream.html) を使用することで取得できます。

## 他の IAM アカウントに Kinesis ビデオストリームへのアクセスを許可する
<a name="how-iam-crossaccount"></a>

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

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

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

1. 付与するアクセスレベルを許可するストリーム (999999999999) を所有するアカウントに IAM 管理ポリシーを作成します。

   **サンプルポリシー: **

------
#### [ JSON ]

****  

   ```
   {
       "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 リソースのその他のポリシー例については、次のセクション[ポリシーの例](#how-iam-policies)の「」を参照してください。

1. ストリーム (999999999999) を所有するアカウントにロールを作成し、(111111111111) のアクセス許可を付与するアカウントを指定します。これにより、信頼されたエンティティがロールに追加されます。

   **信頼されたポリシーの例: **

------
#### [ JSON ]

****  

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

------

   前のステップで作成したポリシーをこのロールにアタッチします。

   これで、アカウント 999999999999 でロールが作成されました。このロールには`DescribeStream`、 管理ポリシーのストリームリソース ARN `PutMedia`に対する 、`GetDataEndpoint`、 などのオペレーションに対するアクセス許可が付与されています。この新しいロールは、他のアカウントである 111111111111 も信頼してこのロールを引き受けます。
**重要**  
ロール ARN を書き留めておきます。次のステップで必要になります。

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

   **サンプルポリシー: **

------
#### [ JSON ]

****  

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

------

1. 前のステップで作成したポリシーを、アカウント 111111111111 のロールやユーザーなどの IAM エンティティにアタッチします。このユーザーは、アカウント 999999999999 `CustomRoleName`でロールを引き受けるアクセス許可を持つようになりました。

   このユーザーの認証情報は API を呼び出し AWS STS `AssumeRole`てセッション認証情報を取得し、その後、アカウント 999999999999 で作成されたストリームで Kinesis Video Streams 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": ""
       }
   }
   ```

1. 環境内の前のセットに基づいて、アクセスキー、シークレットキー、およびセッション認証情報を設定します。

   ```
   set AWS_ACCESS_KEY_ID=
   set AWS_SECRET_ACCESS_KEY=
   set AWS_SESSION_TOKEN=
   ```

1. 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については、[「IAM ロール AWS アカウント を使用した 間のアクセスの委任](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html)」を参照してください。

## Kinesis Video Streams のポリシー例
<a name="how-iam-policies"></a>

次のポリシー例は、Kinesis Video Streams へのユーザーアクセスを制御する方法を示しています。

**Example 1: ユーザーに Kinesis ビデオストリームからのデータの取得を許可する**  
このポリシーにより、ユーザーまたはグループが任意の Kinesis ビデオストリームに対して `DescribeStream`、`GetDataEndpoint`、`GetMedia`、`ListStreams`、および `ListTagsForStream` の操作を実行できます。このポリシーは、任意のビデオストリームからデータを取得できるユーザーに適しています。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesisvideo:Describe*",
                "kinesisvideo:Get*",
                "kinesisvideo:List*"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example 2: ユーザーに Kinesis ビデオストリームの作成とビデオストリームへのデータの書き込みを許可する**  
このポリシーにより、ユーザーまたはグループは `CreateStream` および `PutMedia` の操作を実行できます。このポリシーは、ビデオストリームを作成し、それにデータを送信できる監視カメラに適しています。  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesisvideo:CreateStream",
                "kinesisvideo:PutMedia"            
            ],
            "Resource": "*"
        }
    ]
}
```

**Example 3: すべての Kinesis Video Streams リソースへのフルアクセスをユーザーに許可する**  
このポリシーにより、ユーザーまたはグループが任意のリソースに対して任意の Kinesis Video Streams オペレーションを実行できます。このポリシーは、管理者に適しています。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kinesisvideo:*",
            "Resource": "*"
        }
    ]
}
```

**Example 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"
        }
    ]
}
```