データベースの保存時暗号化の確認

データベースの実際の保存時暗号化とキーを確認してください。サービスの既定値、クラスター設定、復元・複製で継承される設定を区別する必要があります。

説明

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 と必要な権限を準備してください。スナップショットの保持だけで、アプリケーションデータの移行が完了するわけではありません。

参考資料