説明
RDS、Aurora、DocumentDB、Neptune、Redshift の保存時暗号化は、データと関連するバックアップ・スナップショットを保護します。必要な暗号化とキー管理を指定し、実際のデプロイ状態を確認してください。
プロパティの省略が、どのサービスでも非暗号化を意味するわけではありません。Aurora インスタンスの暗号化はクラスターで管理され、復元やレプリカでは元の設定を継承する場合があります。現在の Redshift API は新規クラスターをデフォルトで暗号化します。カスタマーマネージドキーがないことも、保存データが暗号化されていないこととは異なります。
想定される影響
- 実際の非暗号化データや要件に合わないキー管理は、データ保護基準を満たさない可能性があります。
- 誤ったキー権限や準備不足のリソース置き換えは、データアクセスやサービス運用を妨げる場合があります。
対処方法
- 実際の DB・クラスター・スナップショットの暗号化とキーを確認し、サービスごとの作成・復元要件を適用してください。新しい RDS DB には
StorageEncrypted: trueを指定し、必要なら承認済みのKmsKeyIdを設定してください。 - 既存の非暗号化 RDS インスタンスは、スナップショットの暗号化コピーから新しいインスタンスを復元するなど、対応する手順で移行してください。非暗号化のソースから作るリードレプリカに暗号化オプションを追加する方法は使えません。
- 変更セット、データ保持、バックアップ、アプリケーション接続の切り替えを検討し、実際の暗号化とデータアクセスを確認してください。ネットワーク・DB 権限と TLS も維持してください。
例
新しい MySQL インスタンスの構成案です。対象リージョンとエンジンで対応するインスタンスタイプと、安全に管理した認証情報を指定し、サブネットとセキュリティグループを環境に合わせて追加してください。稼働中の DB をデータ損失なく暗号化する移行手順ではありません。
暗号化とキーを明示しない構成
yaml
AWSTemplateFormatVersion: "2010-09-09"
Parameters:
DBInstanceClass:
Type: String
DBUsername:
Type: String
DBPassword:
Type: String
NoEcho: true
Resources:
MyDB:
Type: AWS::RDS::DBInstance
DeletionPolicy: Snapshot
UpdateReplacePolicy: Snapshot
Properties:
DBInstanceClass: !Ref DBInstanceClass
AllocatedStorage: 50
Engine: mysql
MasterUsername: !Ref DBUsername
MasterUserPassword: !Ref DBPassword
暗号化要件を明示していません。実際の設定と作成時の既定値を確認する必要があります。
暗号化とキーを指定する構成
yaml
AWSTemplateFormatVersion: "2010-09-09"
Parameters:
DBInstanceClass:
Type: String
DBUsername:
Type: String
DBPassword:
Type: String
NoEcho: true
DatabaseKmsKeyArn:
Type: String
Resources:
MyDB:
Type: AWS::RDS::DBInstance
DeletionPolicy: Snapshot
UpdateReplacePolicy: Snapshot
Properties:
DBInstanceClass: !Ref DBInstanceClass
AllocatedStorage: 50
Engine: mysql
StorageEncrypted: true
KmsKeyId: !Ref DatabaseKmsKeyArn
MasterUsername: !Ref DBUsername
MasterUserPassword: !Ref DBPassword
新しいインスタンスの暗号化とキーを指定します。同じリージョンにある承認済み KMS キーの ARN と必要な権限を準備してください。スナップショットの保持だけで、アプリケーションデータの移行が完了するわけではありません。