説明
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 の料金が適用されます。