

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

# ユーザー生成の KMS キーを使用するための許可
<a name="permissions-user-key-KMS"></a>

ユーザーが生成した KMS キーでサーバー側の暗号化を使用する前に、ストリームの暗号化とストリームレコードの暗号化と復号を許可するように AWS KMS キーポリシーを設定する必要があります。アクセス AWS KMS 許可の例と詳細については、[AWS 「KMS API のアクセス許可: アクションとリソースのリファレンス](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html)」を参照してください。

**注記**  
暗号化のためのデフォルトサービスキーの使用では、カスタム IAM 許可の適用は必要ありません。

ユーザー生成 KMS マスターキーを使用する前に、Kinesis ストリームプロデューサーおよびコンシューマー (IAM プリンシパル) が、KMS マスターキーポリシーでユーザーになっていることを確認します。ユーザーになっていない場合は、ストリームに対する読み取りと書き込みが失敗し、最終的にはデータの損失、処理の遅延、またはアプリケーションのハングにつながる可能性があります。IAM ポリシーを使用して KMS キーの許可を管理できます。詳細については、[「KMS での IAM AWS ポリシーの使用](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html)」を参照してください。

## Kinesis Data Streams 暗号化コンテキスト
<a name="sse-kms-encryption-context"></a>

Amazon Kinesis Data Streams が AWS KMS ユーザーに代わって を呼び出すと、暗号化コンテキストが に渡されます。 AWS KMS このコンテキストは、キーポリシーと許可で認可の条件として使用できます。Kinesis Data Streams は、すべての AWS KMS 呼び出しでストリーム ARN を暗号化コンテキストとして使用します。

```
"encryptionContext": {
    "aws:kinesis:arn": "arn:aws:kinesis:region:account-id:stream/stream-name"
}
```

暗号化コンテキストを使用して、監査レコードとログでの KMS キーの使用を特定できます。また、 などのログにもプレーンテキストで表示されます AWS CloudTrail。

KMS キーの使用を特定のストリームの Kinesis Data Streams からのリクエストに制限するには、KMS キーポリシーまたは IAM ポリシーで `kms:EncryptionContext:aws:kinesis:arn`条件キーを使用します。

## プロデューサーのアクセス許可の例
<a name="example-producer-permissions"></a>

Kinesis ストリームプロデューサーには `kms:GenerateDataKey` 許可が必要です。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "kms:GenerateDataKey"
        ],
        "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }, 
    {
        "Effect": "Allow",
        "Action": [
            "kinesis:PutRecord",
            "kinesis:PutRecords"
        ],
        "Resource": "arn:aws:kinesis:*:123456789012:MyStream"
    }
  ]
}
```

------

## コンシューマーのアクセス許可の例
<a name="example-consumer-permissions"></a>

Kinesis ストリームコンシューマーには `kms:Decrypt` 許可が必要です。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "kms:Decrypt"
        ],
        "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }, 
    {
        "Effect": "Allow",
        "Action": [
            "kinesis:GetRecords",
            "kinesis:DescribeStream"
        ],
        "Resource": "arn:aws:kinesis:*:123456789012:MyStream"
    }
  ]
}
```

------

Amazon Managed Service for Apache Flink および AWS Lambda は、ロールを使用して Kinesis ストリームを消費します。これらのコンシューマーが使用するロールには、`kms:Decrypt` 許可を追加するようにしてください。

## ストリーム管理者の許可
<a name="stream-administrator-permissions"></a>

Kinesis ストリーム管理者には、`kms:List*` と ```kms:DescribeKey*` を呼び出すための権限が必要です。