RDS クラスタースナップショットの暗号化の確認

RDS クラスタースナップショットと元クラスターの実際の暗号化状態を併せて確認してください。

説明

クラスタースナップショットは、復旧用のバックアップであると同時に機密データのコピーでもあります。スナップショットの暗号化は、元のクラスターの実際の暗号化状態に従うため、両方を確認する必要があります。

storage_encrypted を省略しても、元のクラスターが必ず未暗号化になるわけではありません。現在、新しい Aurora クラスターには既定の暗号化が適用されますが、復元やクローンで作成したクラスターは、元のデータや作成方法によって状態が異なる場合があります。

想定される影響

実際に暗号化されていないスナップショットを権限のない相手が取得すると、復旧用データが漏えいするおそれがあります。バックアップの暗号化要件も満たせない場合があります。スナップショットの共有権限と KMS キーへのアクセスは別途管理する必要があります。

対処方法

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

例

スナップショットと元クラスターの関係を示す抜粋です。必要なエンジン、認証、ネットワークは別途設定してください。skip_final_snapshot = true はクラスター削除時の最終スナップショットを省略するため、別途バックアップの保持方針が必要です。

暗号化設定の省略

hcl
resource "aws_db_cluster_snapshot" "db_snapshot" {
  db_cluster_identifier          = aws_rds_cluster.example2.id
  db_cluster_snapshot_identifier = "resourcetestsnapshot1234"
}

resource "aws_rds_cluster" "example2" {
  cluster_identifier  = "example"
  skip_final_snapshot = true
}

元クラスターの暗号化を明示していません。この抜粋だけでは、実際のスナップショットが未暗号化であるとは判断できません。

暗号化を明示

hcl
resource "aws_db_cluster_snapshot" "db_snapshot" {
  db_cluster_identifier          = aws_rds_cluster.example.id
  db_cluster_snapshot_identifier = "resourcetestsnapshot1234"
}

resource "aws_rds_cluster" "example" {
  cluster_identifier  = "example"
  skip_final_snapshot = true
  storage_encrypted   = true
}

元クラスターに暗号化を明示しています。どちらも、既存クラスターやスナップショットのデータ移行手順の代わりにはなりません。

参考資料