DynamoDB の暗号化キー設定の確認

DynamoDB は保存データを常に暗号化します。暗号化の有無ではなく、選択したキーの種類と組織の要件を確認してください。

説明

DynamoDB はすべてのユーザーデータを保存時に暗号化します。CloudFormation で SSEEnabled を false にするか省略すると AWS 所有キーを使います。平文で保存するという意味ではありません。true では AWS マネージドキーを使用し、別途 KMSMasterKeyId を指定するとカスタマーマネージドキーを選べます。

想定される影響

  • 選択したキーの種類が、組織のキー管理や監査の要件を満たさない可能性があります。
  • 必要な KMS 権限を削除したり使用中のキーを無効にしたりすると、データアクセスに影響する場合があります。保存時暗号化は、許可済みユーザーのアクセスを制限する仕組みの代わりにはなりません。

対処方法

  • 実際のテーブルのキーの種類を要件と比較してください。AWS 所有キーが許可されるなら、暗号化を追加で有効にする必要はありません。
  • AWS マネージドキーが必要なら SSESpecification.SSEEnabled: true を指定してください。キーのポリシーやライフサイクルを自ら管理する場合は、承認済みの KMSMasterKeyId と必要な権限も用意してください。
  • 変更後にキーの状態と読み書きを確認し、関連するバックアップの復元に必要なキーを維持してください。テーブルの権限とネットワーク保護も別途管理してください。

例

どちらの例も保存データを暗号化します。環境に合うテーブル名と必要なキー管理方式を選んでください。

AWS 所有キー

yaml
Resources:
  MyDynamoDBTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: my-table
      AttributeDefinitions:
        - AttributeName: id
          AttributeType: N
      KeySchema:
        - AttributeName: id
          KeyType: HASH
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 5
      SSESpecification:
        SSEEnabled: false

AWS 所有キーで暗号化します。このキーの種類が組織の要件に合うか確認してください。

AWS マネージドキー

yaml
Resources:
  MyDynamoDBTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: my-table
      AttributeDefinitions:
        - AttributeName: id
          AttributeType: N
      KeySchema:
        - AttributeName: id
          KeyType: HASH
      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 5
      SSESpecification:
        SSEEnabled: true

別のキー ID を指定していないため、DynamoDB の既定の AWS マネージドキーを使います。カスタマーマネージドキーを選ぶ例ではなく、AWS KMS の料金が適用されます。

参考資料