

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

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

AWS Identity and Access Management (IAM) では、以下を実行できます。
+  AWS アカウントでユーザーとグループを作成する
+  AWS アカウント内の各ユーザーに一意のセキュリティ認証情報を割り当てる
+  AWS リソースを使用してタスクを実行する各ユーザーのアクセス許可を制御する
+ 別の AWS アカウントのユーザーに AWS リソースの共有を許可する
+  AWS アカウントのロールを作成し、それらを引き受けることができるユーザーまたはサービスを定義する
+ エンタープライズの既存の ID を使用して、 AWS リソースを使用してタスクを実行するためのアクセス許可を付与する

Kinesis Data Streams と組み合わせて IAM を使用すると、組織のユーザーが特定の Kinesis Data Streams API アクションを使用してタスクを実行できるかどうか、また、特定の AWS リソースを使用できるかどうかを制御できます。

Kinesis Client Library (KCL) を使用してアプリケーションを開発する場合、ポリシーに Amazon DynamoDB と Amazon CloudWatch への許可を含める必要があります。KCL は DynamoDB を使用してアプリケーションの状態情報を追跡し、CloudWatch を使用してユーザーに代わって KCL メトリクスを CloudWatch に送信します。KCL の詳細については、[KCL 1.x コンシューマーを開発する](developing-consumers-with-kcl.md)を参照してください。

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/)

IAM と Amazon DynamoDB の詳細については、*Amazon DynamoDB デベロッパーガイド*の[IAM を使用した Amazon DynamoDB リソースへのアクセスのコントロール](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/UsingIAMWithDDB.html)を参照してください。

IAM と Amazon CloudWatch の詳細については、*Amazon CloudWatch ユーザーガイド*[」の AWS 「アカウントへのユーザーアクセスの制御](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/UsingIAM.html)」を参照してください。

**Topics**
+ [ポリシー構文](#policy-syntax)
+ [Kinesis Data Streams のアクション](#kinesis-using-iam-actions)
+ [Kinesis Data Streams の Amazon リソースネーム (ARN)](#kinesis-using-iam-arn-format)
+ [Kinesis Data Streams のポリシーの例](#kinesis-using-iam-examples)
+ [別のアカウントとのデータストリームを共有する](#sharing-data-streams)
+ [別のアカウントの Kinesis Data Streams から読み取るように AWS Lambda 関数を設定する](#sharing-data-streams-example)
+ [リソースベースのポリシーを使用したアクセスを共有する](resource-based-policy-examples.md)

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

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

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

ステートメントはさまざまなエレメントで構成されています。
+ [**Effect**]: *effect* は、`Allow` または `Deny` にすることができます。デフォルトでは、IAM ユーザーはリソースおよび API アクションを使用するアクセス許可がないため、リクエストはすべて拒否されます。明示的な許可はデフォルトに優先します。明示的な拒否はすべての許可に優先します。
+ [**アクション**]: アクション は、アクセス許可を付与または拒否する対象とする、特定の API アクションです。
+ **[リソース]**: アクションによって影響を及ぼされるリソースです。ステートメント内でリソースを指定するには、Amazonリソースネーム(ARN)を使用する必要があります。
+ **Condition**: condition はオプションです。これらは、ポリシーがいつ有効になるかを制御するために使用できます。

IAM のポリシーを作成および管理するときは、[IAM Policy Generator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-generator) と [IAM Policy Simulator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html) を使用することもできます。

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

IAM ポリシーステートメントで、IAM をサポートするすべてのサービスからの任意の API アクションを指定できます。Kinesis Data Streams の場合、API アクションの名前とともに次のプレフィックスを使用します: `kinesis:`。例えば、`kinesis:CreateStream`、`kinesis:ListStreams`、および `kinesis:DescribeStreamSummary` のようになります。

単一のステートメントで複数のアクションを指定するには、次のようにカンマで区切ります。

```
"Action": ["kinesis:action1", "kinesis:action2"]
```

ワイルドカードを使用して複数のアクションを指定することもできます。たとえば、Getという単語で始まる名前のすべてのアクションは、以下のように指定できます。

```
"Action": "kinesis:Get*"
```

すべてのKinesis Data Streams オペレーションを指定するには、次のように \$1 ワイルドカードを使用します。

```
"Action": "kinesis:*"
```

Kinesis Data Streams API アクションの一覧については、[Amazon Kinesis API リファレンス](https://docs.aws.amazon.com/kinesis/latest/APIReference/) を参照してください。

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

各 IAM ポリシーステートメントは、ARN を使用して指定されたリソースに適用されます。

Kinesis data streams には、以下の ARN リソースフォーマットを使用します。

```
arn:aws:kinesis:region:account-id:stream/stream-name
```

例: 

```
"Resource": arn:aws:kinesis:*:111122223333:stream/my-stream
```

## Kinesis Data Streams のポリシーの例
<a name="kinesis-using-iam-examples"></a>

次のポリシー例は、Kinesis Data Streams へのユーザーアクセスの制御方法について説明しています。

------
#### [ Example 1: Allow users to get data from a stream ]

**Example**  
 このポリシーは、ユーザーまたはグループが、指定されたストリームで `DescribeStreamSummary`、`GetShardIterator`、または `GetRecords` 操作を実行し、任意のストリームで `ListStreams` を実行できるようにします。このポリシーは、特定のストリームからデータを取得できるユーザーに適用できます。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:Get*",
                "kinesis:DescribeStreamSummary"
            ],
            "Resource": [
            "arn:aws:kinesis:us-east-1:111122223333:stream/stream1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:ListStreams"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------
#### [ Example 2: Allow users to add data to any stream in the account ]

**Example**  
このポリシーは、ユーザーまたはグループが、アカウント内の任意のストリームで `PutRecord` 操作を使用できるようにします。このポリシーは、アカウント内のすべてのストリームにデータレコードを追加できるユーザーに適用できます。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:PutRecord"
            ],
            "Resource": [
                "arn:aws:kinesis:us-east-1:111122223333:stream/*"
            ]
        }
    ]
}
```

------
#### [ Example 3: Allow any Kinesis Data Streams action on a specific stream ]

**Example**  
このポリシーでは、ユーザーまたはグループが、指定したストリームに対して任意の Kinesis Data Streams オペレーションを実行できます。このポリシーは、特定のストリームに対して管理的な制御を行えるユーザーに適用できます。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": [
            "arn:aws:kinesis:us-east-1:111122223333:stream/stream1"
            ]
        }
    ]
}
```

------
#### [ Example 4: Allow any Kinesis Data Streams action on any stream ]

**Example**  
このポリシーでは、ユーザーまたはグループが、アカウントの任意のストリームに対して任意の Kinesis Data Streams オペレーションを実行できます。このポリシーはすべてのストリームへの完全なアクセス権を付与するため、管理者のみに制限する必要があります。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": [
                "arn:aws:kinesis:*:111122223333:stream/*"
            ]
        }
    ]
}
```

------

## 別のアカウントとのデータストリームを共有する
<a name="sharing-data-streams"></a>

**注記**  
 Kinesis Producer Library は現在、データストリームへの書き込み時にストリーム ARN の指定をサポートしていません。クロスアカウントデータストリームに書き込む場合は、 AWS SDK を使用します。

[リソースベースのポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based)をデータストリームにアタッチして、別のアカウント、IAM ユーザー、または IAM ロールへのアクセス権を付与します。リソースベースのポリシーは、データストリームなどのリソースにアタッチする JSON ポリシードキュメントです。これらのポリシーでは、そのリソースに対して特定のアクションを実行する[指定されたプリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)アクセス許可を付与し、このアクセス許可が適用される条件を定義します。ポリシーには複数のステートメントを含めることができます。リソースベースのポリシーでは、プリンシパルを指定する必要があります。プリンシパルには、アカウント、ユーザー、ロール、フェデレーティッドユーザー、または AWS サービスを含めることができます。ポリシーは、Kinesis Data Streams コンソール、API、SDK で設定できます。

[拡張ファンアウト](https://docs.aws.amazon.com/streams/latest/dev/enhanced-consumers.html)などの登録済みコンシューマーへのアクセスを共有するには、データストリーム ARN とコンシューマー ARN の両方でポリシーが必要であることに注意してください。

### クロスアカウントアクセスを有効にする
<a name="sharing-data-streams-enabling"></a>

クロスアカウントアクセスを有効にするには、アカウント全体、または別のアカウントの IAM エンティティをリソースベースのポリシーのプリンシパルとして指定します。リソースベースのポリシーにクロスアカウントのプリンシパルを追加しても、信頼関係は半分しか確立されない点に注意してください。プリンシパルとリソースが別々の AWS アカウントにある場合は、アイデンティティベースのポリシーを使用して、プリンシパルにリソースへのアクセスを許可する必要があります。ただし、リソースベースのポリシーで、同じアカウントのプリンシパルへのアクセス権が付与されている場合は、ID ベースのポリシーをさらに付与する必要はありません。

クロスアカウントアクセスでリソースベースのポリシーを使用する方法の詳細については、「[IAM でのクロスアカウントのリソースへのアクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)」を参照してください。

データストリーム管理者は、 AWS Identity and Access Management ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの*プリンシパル*がどの*リソース*に対してどのような*条件下で**アクション*を実行できるかということです。JSON ポリシーの `Action` 要素にはポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。ポリシーアクションの名前は通常、関連付けられた AWS API オペレーションと同じです。

共有可能な Kinesis Data Streams のアクション:


| Action | アクセスのレベル | 
| --- | --- | 
| [DescribeStreamConsumer](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStreamConsumer.html) | コンシューマー | 
| [DescribeStreamSummary](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStreamSummary.html) | データストリーム | 
| [GetRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html) | データストリーム | 
| [GetShardIterator](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html) | データストリーム | 
| [ListShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html) | データストリーム | 
| [PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html) | データストリーム | 
| [PutRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html) | データストリーム | 
| [SubscribeToShard](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_SubscribeToShard.html) | コンシューマー | 

リソースベースのポリシーを使用して、データストリームまたは登録済みコンシューマーにクロスアカウントアクセスを許可する例を以下に示します。

クロスアカウントのアクションを実行するには、データストリームにアクセスするためのストリーム ARN と登録済みコンシューマーにアクセスするためのコンシューマー ARN を指定する必要があります。

### Kinesis Data Streams のリソースベースのポリシーの例
<a name="kinesis-stream-sharing-iam-examples"></a>

登録済みコンシューマーの共有には、必要なアクションを実行するために、データストリームポリシーとコンシューマーポリシーの両方が必要になります。

**注記**  
次に示すのは、`Principal` の有効な値の例です。  
`{"AWS": "123456789012"}`
IAM ユーザー – `{"AWS": "arn:aws:iam::123456789012:user/user-name"}`
IAM ロール – `{"AWS":["arn:aws:iam::123456789012:role/role-name"]}`
複数のプリンシパル (アカウント、ユーザー、ロールの組み合わせが可能) — `{"AWS":["123456789012", "123456789013", "arn:aws:iam::123456789012:user/user-name"]}`

------
#### [ Example 1: Write access to the data stream ]

**Example**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "__default_write_policy_ID",
    "Statement": [
        {
            "Sid": "writestatement",
            "Effect": "Allow",
            "Principal": {
                "AWS": "Account12345"
            },
            "Action": [
                "kinesis:DescribeStreamSummary",
                "kinesis:ListShards",
                "kinesis:PutRecord",
                "kinesis:PutRecords"
            ],
            "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC"
        }
    ]
}
```

------
#### [ Example 2: Read access to the data stream ]

**Example**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "__default_sharedthroughput_read_policy_ID",
    "Statement": [
        {
            "Sid": "sharedthroughputreadstatement",
            "Effect": "Allow",
            "Principal": {
                "AWS": "Account12345"
            },
            "Action": [                
                "kinesis:DescribeStreamSummary",
                "kinesis:ListShards",
                "kinesis:GetRecords",
                "kinesis:GetShardIterator"
            ],
            "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC"
        }
    ]
}
```

------
#### [ Example 3: Share enhanced fan-out read access to a registered consumer ]

**Example**  
データストリームポリシーステートメント:     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "__default_sharedthroughput_read_policy_ID",
    "Statement": [
        {
            "Sid": "consumerreadstatement",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/role-name"
            },
            "Action": [
                "kinesis:DescribeStreamSummary",
                "kinesis:ListShards"
            ],
            "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC"
        }
    ]
}
```
コンシューマーポリシーステートメント:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "__default_efo_read_policy_ID",
    "Statement": [
        {
            "Sid": "eforeadstatement",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/role-name"
            },
            "Action": [
                "kinesis:DescribeStreamConsumer",
                "kinesis:SubscribeToShard"
            ],
            "Resource": "arn:aws:kinesis:us-east-2:123456789012:stream/datastreamABC/consumer/consumerDEF:1674696300"
        }
    ]
}
```
最小特権の原則を維持するため、アクションやプリンシパルフィールドではワイルドカード (\$1) はサポートされていません。

------

### データストリームのポリシーのプログラムを管理する
<a name="sharing-data-streams-managing-policy"></a>

以外にも AWS マネジメントコンソール、Kinesis Data Streams には、データストリームポリシーを管理するための 3 つの API があります。
+ [PutResourcePolicy](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutResourcePolicy.html)
+ [GetResourcePolicy](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetResourcePolicy.html)
+ [DeleteResourcePolicy](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DeleteResourcePolicy.html)

`PutResourePolicy` を使用して、データストリームまたはコンシューマーのポリシーをアタッチまたは上書きします。`GetResourcePolicy` を使用して、指定したデータストリームまたはコンシューマーのポリシーを確認し、表示します。`DeleteResourcePolicy` を使用して、指定したデータストリームまたはコンシューマーのポリシーを削除します。

### ポリシー制限
<a name="sharing-data-streams-validating"></a>

Kinesis Data Streams リソースポリシーには次の制限があります。
+ ワイルドカード (\$1) は、データストリームまたは登録されたコンシューマーに直接アタッチされたリソースポリシーを介して広範なアクセスが付与されないようにするためにサポートされていません。さらに、次のポリシーを注意深く調べて、広範なアクセスが許可されていないことを確かめてください。
  + 関連付けられた AWS プリンシパルにアタッチされたアイデンティティベースのポリシー (IAM ロールなど)
  + 関連付けられたリソースにアタッチされた AWS リソースベースのポリシー ( AWS Key Management Service KMS キーなど)
+ AWS サービスプリンシパルは、[混乱した代理](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)の可能性を防ぐため、プリンシパルではサポートされていません。
+ フェデレーションプリンシパルはサポートされていません。
+ 正規ユーザー ID はサポートされていません。
+ ポリシーのサイズは 20 KB までです。

### 暗号化されたデータへのアクセスを共有する
<a name="sharing-access-to-encrypted-data-1"></a>

 AWS マネージド KMS キーでデータストリームのサーバー側の暗号化を有効にしていて、リソースポリシーを介してアクセスを共有する場合は、カスタマーマネージドキー (CMK) の使用に切り替える必要があります。詳細については、「[Kinesis Data Streams 用のサーバー側の暗号化とは?](what-is-sse.md)」を参照してください。さらに、KMS のクロスアカウント共有機能を使用して、共有プリンシパルエンティティが CMK にアクセスできるようにする必要があります。共有プリンシパルエンティティの IAM ポリシーも必ず変更してください。詳細については、「[その他のアカウントのユーザーに KMS キーの使用を許可する](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)」を参照してください。

## 別のアカウントの Kinesis Data Streams から読み取るように AWS Lambda 関数を設定する
<a name="sharing-data-streams-example"></a>

別のアカウントの Kinesis Data Streams から読み取るように Lambda 関数を設定する方法の例については、「[クロスアカウント AWS Lambda 関数とアクセスを共有する](resource-based-policy-examples.md#Resource-based-policy-examples-lambda)」を参照してください。

# リソースベースのポリシーを使用したアクセスを共有する
<a name="resource-based-policy-examples"></a>

**注記**  
既存のリソースベースのポリシーを更新すると既存のポリシーが置き換えられるため、新しいポリシーには必要な情報をすべて含めるようにしてください。

## クロスアカウント AWS Lambda 関数とアクセスを共有する
<a name="Resource-based-policy-examples-lambda"></a>

**Lambda 演算子**

1. [IAM コンソール](https://console.aws.amazon.com/iam/)に移動して、 AWS Lambda 関数の [Lambda 実行ロールとして使用する IAM ロール](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)を作成します。必要な Kinesis Data Streams と Lambda 呼び出し権限を持つマネージド IAM ポリシー `AWSLambdaKinesisExecutionRole` を追加します。このポリシーは、ユーザーがアクセスする可能性のあるすべての Kinesis Data Streams リソースへのアクセスも付与します。

1. [AWS Lambda コンソール](https://console.aws.amazon.com/lambda/home)で、[Kinesis Data Streams データストリームのレコードを処理する ](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html) AWS Lambda 関数を作成し、実行ロールのセットアップ中に、前のステップで作成したロールを選択します。

1. リソースポリシーを設定するための実行ロールを Kinesis Data Streams リソースの所有者に提供します。

1. Lambda 関数のセットアップを完了します。

**Kinesis Data Streams リソースの所有者**

1. Lambda 関数を呼び出すクロスアカウントの Lambda 実行ロールを取得します。

1. Amazon Kinesis Data Streams コンソールで、データストリームを選択します。**[データストリーム共有]** タブを選択し、**[共有ポリシーの作成]** ボタンをクリックしてビジュアルポリシーエディタを起動します。登録済みのコンシューマーをデータストリーム内で共有するには、コンシューマーを選択し、次に **[共有ポリシーの作成]** を選択します。JSON ポリシーを直接作成することもできます。

1. クロスアカウントの Lambda 実行ロールをプリンシパルとして指定し、アクセスを共有する正確な Kinesis Data Streams アクションを指定します。必ず `kinesis:DescribeStream` アクションを含めてください。Kinesis Data Streams リソースポリシーの例については、「[Kinesis Data Streams のリソースベースのポリシーの例](controlling-access.md#kinesis-stream-sharing-iam-examples)」を参照してください。

1. **[ポリシーの作成]** を選択するか、[PutResourcePolicy](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutResourcePolicy.html) を使用してポリシーをリソースにアタッチします。

## クロスアカウントの KCL コンシューマーとのアクセスを共有する
<a name="Resource-based-policy-examples-kcl-consumers"></a>
+ KCL 1.x を使用している場合は、KCL 1.15.0 以降を使用していることを確認してください。
+ KCL 2.x を使用している場合は、KCL 2.5.3 以降を使用していることを確認してください。

**KCL 演算子**

1. KCL アプリケーションを実行する IAM ユーザーまたは IAM ロールをリソース所有者に提供します。

1. リソース所有者にデータストリームまたはコンシューマー ARN を依頼してください。

1. KCL 設定の一部として、提供されたストリーム ARN を指定していることを確認してください。
   + KCL 1.x の場合: [KinesisClientLibConfiguration](https://github.com/awslabs/amazon-kinesis-client/blob/v1.x/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibConfiguration.java#L738-L821) コンストラクターを使用してストリーム ARN を指定します。
   + KCL 2.x の場合: Kinesis Client Library [ConfigsBuilder](https://github.com/awslabs/amazon-kinesis-client/blob/master/amazon-kinesis-client/src/main/java/software/amazon/kinesis/common/ConfigsBuilder.java#L155-L176) にストリーム ARN または [StreamTracker](https://github.com/awslabs/amazon-kinesis-client/blob/master/amazon-kinesis-client/src/main/java/software/amazon/kinesis/processor/StreamTracker.java) のみを指定できます。StreamTracker には、ライブラリによって生成される DynamoDB リーステーブルからストリーム ARN と作成エポックを指定します。拡張ファンアウトなどの登録済みの共有コンシューマーから読み込む場合は、StreamTracker を使用してコンシューマー ARN も指定してください。

**Kinesis Data Streams リソースの所有者**

1. KCL アプリケーションを実行するクロスアカウントの IAM ユーザーまたは IAM ロールを取得します。

1. Amazon Kinesis Data Streams コンソールで、データストリームを選択します。**[データストリーム共有]** タブを選択し、**[共有ポリシーの作成]** ボタンをクリックしてビジュアルポリシーエディタを起動します。登録済みのコンシューマーをデータストリーム内で共有するには、コンシューマーを選択し、次に **[共有ポリシーの作成]** を選択します。JSON ポリシーを直接作成することもできます。

1. クロスアカウントの KCL アプリケーションの IAM ユーザーまたは IAM ロールをプリンシパルとして指定し、アクセスを共有する正確な Kinesis Data Streams アクションを指定します。Kinesis Data Streams リソースポリシーの例については、「[Kinesis Data Streams のリソースベースのポリシーの例](controlling-access.md#kinesis-stream-sharing-iam-examples)」を参照してください。

1. **[ポリシーの作成]** を選択するか、[PutResourcePolicy](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutResourcePolicy.html) を使用してポリシーをリソースにアタッチします。

## 暗号化されたデータへのアクセスを共有する
<a name="sharing-access-to-encrypted-data"></a>

 AWS マネージド KMS キーでデータストリームのサーバー側の暗号化を有効にしていて、リソースポリシーを介してアクセスを共有する場合は、カスタマーマネージドキー (CMK) の使用に切り替える必要があります。詳細については、「[Kinesis Data Streams 用のサーバー側の暗号化とは?](what-is-sse.md)」を参照してください。さらに、KMS のクロスアカウント共有機能を使用して、共有プリンシパルエンティティが CMK にアクセスできるようにする必要があります。共有プリンシパルエンティティの IAM ポリシーも必ず変更してください。詳細については、「[その他のアカウントのユーザーに KMS キーの使用を許可する](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)」を参照してください。