KMS 暗号化のない AWS Kinesis ストリーム

Kinesis に新しく保存するレコードを KMS で暗号化し、キーの権限と読み書きを検証してください。

説明

イベントストリームには、ユーザーの操作履歴、アプリケーションログ、内部メッセージが含まれることがあります。Kinesis のサーバー側暗号化は、ストリームに保存されるレコードを KMS で保護します。実際の暗号化状態と使用するキーが、データ保護要件に合っているか確認してください。

暗号化は、有効化後に到着するレコードに適用されます。以前の未暗号化レコードを遡って暗号化するものではありません。ストリームのアクセス制御と転送中の保護も別途必要です。

想定される影響

サーバー側暗号化が無効だと、新しく保存する機密レコードが組織の保存時暗号化要件を満たせない場合があります。キーや権限の設定を誤ると、データの書き込みや読み取りが中断するおそれがあります。

対処方法

  • encryption_type = "KMS" と有効な kms_key_id を明示してください。AWS マネージドキー、または組織で必要なカスタマーマネージドキーを選択してください。
  • データを書き込む主体と読み取る主体の KMS 権限を、必要な範囲に制限してください。
  • 変更完了後に、実際のストリームの状態、新しいレコードの暗号化、書き込みと読み取りを検証してください。以前のレコードの保持期間と取り扱いも確認してください。

例

変更前

hcl
resource "aws_kinesis_stream" "event_stream" {
  name             = "terraform-kinesis-test"
  shard_count      = 1
  retention_period = 48
  encryption_type  = "NONE"
}

サーバー側暗号化を使用しない設定です。

変更後

hcl
resource "aws_kinesis_stream" "event_stream" {
  name             = "terraform-kinesis-test"
  shard_count      = 1
  retention_period = 48
  encryption_type  = "KMS"
  kms_key_id       = "alias/aws/kinesis"
}

AWS マネージド Kinesis キーのエイリアスである alias/aws/kinesis で暗号化を要求します。有効化後の新しいレコードが保護されることを確認してください。過去のレコードまで暗号化されるわけではありません。

参考資料