説明
DynamoDB の既定の AWS 所有キーは保存データを暗号化します。利用者がそのキーのポリシーやライフサイクルを直接管理しないという意味であり、データが非暗号化という意味ではありません。
アカウント内でキーの使用状況を追跡する必要があれば AWS マネージドキーを、ポリシーやライフサイクルを直接制御する必要があればカスタマーマネージドキーを検討してください。AWS マネージドキーでも、利用者がキーポリシーを自由に編集できるわけではありません。
想定される影響
- AWS 所有キーでは、組織のキー制御や監査の要件を満たさない場合があります。
- カスタマーマネージドキーの権限や削除予定を誤ると、テーブルや関連するバックアップへアクセスできなくなるおそれがあります。
対処方法
- 必要な制御と実際のキーの種類を比較してください。要件を満たす AWS 所有キーを一律に置き換える必要はありません。
- カスタマーマネージドキーが必要なら、
SSEEnabled: true、SSEType: KMS、承認済みのKMSMasterKeyIdを指定してください。キーポリシー、権限、ローテーションも確認してください。 - キー変更後にデータアクセスをテストし、以前のキーが必要なバックアップを確認してください。保存時暗号化とは別に、テーブル権限も制限してください。
例
同じテーブルで使用するキーを比較します。既存リソースの管理では、変更セット、実際のキーポリシー、必要なバックアップの復元条件を確認してください。
AWS 所有キー
yaml
AWSTemplateFormatVersion: "2010-09-09"
Description: Sample CloudFormation template for DynamoDB with AWS-Owned CMK
Resources:
DynamoDBOnDemandTable2:
Type: AWS::DynamoDB::Table
Properties:
TableName: dynamodb-kms-0
AttributeDefinitions:
- AttributeName: pk
AttributeType: S
KeySchema:
- AttributeName: pk
KeyType: HASH
BillingMode: PAY_PER_REQUEST
SSESpecification:
SSEEnabled: false
保存データは AWS 所有キーで暗号化されます。キーポリシーを利用者が直接管理することはできません。
カスタマーマネージドキー
yaml
AWSTemplateFormatVersion: "2010-09-09"
Description: Sample CloudFormation template for DynamoDB with customer managed CMK
Resources:
dynamodbKMSKey:
Type: AWS::KMS::Key
Properties:
Description: An example CMK
DynamoDBOnDemandTable2:
Type: AWS::DynamoDB::Table
Properties:
TableName: dynamodb-kms-0
AttributeDefinitions:
- AttributeName: pk
AttributeType: S
KeySchema:
- AttributeName: pk
KeyType: HASH
BillingMode: PAY_PER_REQUEST
SSESpecification:
KMSMasterKeyId: !Ref dynamodbKMSKey
SSEEnabled: true
SSEType: KMS
別の KMS キーを作成してテーブルに関連付けます。キーポリシーを省略すると既定のポリシーが使われるため、デプロイ主体とテーブル利用者に必要な権限を確認してください。使用中のキーやバックアップの復元に必要なキーを削除しないでください。