RDS クラスターの保存時暗号化の確認

RDS クラスターの実際の暗号化状態と既定値を確認し、既存データの移行を計画してください。

説明

Aurora などのクラスターデータベースには重要なアプリケーションデータが保存されるため、保存データとバックアップの暗号化が必要です。実際に暗号化されていないクラスターでは、この保護が不足します。

ただし、storage_encrypted を省略したことだけで未暗号化とは判断できません。現在、新しい Aurora クラスターには既定の暗号化が適用されます。以前に作成したクラスターや、復元・クローンで作成したクラスターは実際の状態を確認する必要があります。暗号化は、データベースの権限やネットワーク制御の代わりにはなりません。

想定される影響

未暗号化のストレージやバックアップを権限のない相手が取得すると、顧客やサービスのデータが漏えいするおそれがあります。組織の暗号化要件も満たせない場合があります。使用中のキーが利用できなくなると、データへのアクセスや復旧に支障が生じる場合があります。

対処方法

  • 実際のクラスターとバックアップの暗号化状態を確認し、必要な storage_encrypted = true と KMS キーを明示してください。
  • 既存の未暗号化クラスターは、設定の変更だけでは暗号化できません。暗号化したスナップショットのコピーと復元など、サポートされる操作で新しいクラスターへ移行する計画を立ててください。
  • Terraform による置き換え、データの整合性、アプリケーションの切り替え、復旧を検証し、元のデータと必要なキーを保持してください。

例

暗号化設定を比較する抜粋です。必要なインスタンスとネットワークは別途設定してください。要件を満たすパスワードを安全な方法で渡し、Terraform の状態へのアクセスも制限してください。

暗号化設定の省略

hcl
resource "aws_rds_cluster" "rds_cluster" {
  cluster_identifier = "aurora-cluster-demo"
  engine             = "aurora-mysql"
  master_username    = "foo"
  master_password    = var.db_password
}

暗号化を明示していません。現在の新しい Aurora クラスターには既定の暗号化があるため、この抜粋だけで平文保存を意味するわけではありません。

暗号化を明示

hcl
resource "aws_rds_cluster" "rds_cluster" {
  cluster_identifier = "cloudrail-test-non-encrypted"
  engine             = "aurora-mysql"
  master_username    = "administrator"
  master_password    = var.db_password
  storage_encrypted  = true
}

保存時暗号化を明示しています。既存のデータやクラスターを安全に移行するための完全な手順ではありません。

参考資料