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