サーバー側の暗号化が設定されていない Kinesis ストリーム

Kinesis ストリームの保存データを暗号化し、書き込み側と読み取り側のアクセス権限も確認してください。

説明

Kinesis Data Streams のサーバー側の暗号化は、レコードを保存する前に KMS キーで暗号化し、読み取り時に復号します。暗号化していないストリームには、保存したイベントやログに対するこの保護がありません。正当な読み取り権限を持つコンシューマーのアクセスは、暗号化によって制限されません。

想定される影響

保存データを不正に取得されると、顧客のイベントや運用ログに含まれる機密情報が漏えいするリスクが高まります。組織のデータ保護要件を満たせない場合もあります。

対処方法

StreamEncryption に EncryptionType: KMS と有効な KeyId を設定してください。AWS マネージドキーを使用するか、組織のキー管理やアカウント間共有の要件に合わせてカスタマーマネージドキーを選択します。キーポリシーと、プロデューサーおよびコンシューマーに必要な権限を確認してください。

暗号化の有効化は非同期で行われます。反映後に新しいレコードの暗号化と正常な書き込み・読み取りを確認してください。既存の非暗号化レコードはさかのぼって暗号化されないため、保持期間と既存データの扱いも検討してください。

例

同じストリームの設定を比較します。アクセスポリシーと通信の暗号化は別途管理してください。

変更前

yaml
Resources:
  EventStream:
    Type: AWS::Kinesis::Stream
    Properties:
      Name: EventStream
      RetentionPeriodHours: 24
      ShardCount: 1
      Tags:
        - Key: Name
          Value: EventStream

変更後

yaml
Resources:
  EventStream:
    Type: AWS::Kinesis::Stream
    Properties:
      Name: EventStream
      RetentionPeriodHours: 24
      ShardCount: 1
      StreamEncryption:
        EncryptionType: KMS
        KeyId: alias/aws/kinesis
      Tags:
        - Key: Name
          Value: EventStream

AWS マネージドキー alias/aws/kinesis を使用します。アカウント間共有などでカスタマーマネージドキーが必要な場合は、適切なキーと権限に変更してください。

参考資料