説明
キャッシュにも、セッション、トークン、クエリ結果などの機密情報が保存されることがあります。ElastiCache の保存時暗号化は、同期、バックアップ、スワップの処理でディスクに書き込まれるデータとバックアップを保護します。メモリへのアクセス制御や転送中の暗号化は別途管理する必要があります。
Terraform のノードベースのレプリケーショングループでは、保存時暗号化の既定値は Redis OSS で無効、Valkey で有効です。そのため、設定を省略すると、どのエンジンでも暗号化が無効になるとは限りません。
想定される影響
実際に暗号化されていない保存データやバックアップを権限のない相手が取得すると、キャッシュ内の機密情報が漏えいするおそれがあります。組織のキャッシュ暗号化要件も満たせない場合があります。
対処方法
- 新しいレプリケーショングループでは
at_rest_encryption_enabled = trueを明示し、対応するエンジン、ノードタイプ、VPC 構成を確認してください。 - 既存のノードベースのレプリケーショングループでは保存時暗号化の状態を変更できません。必要なデータのバックアップと復元、新しい暗号化グループへのアプリケーションの切り替えを計画してください。
- Terraform による置き換え、復元したデータ、接続を確認し、転送中の暗号化、認証、キーの権限も管理してください。
例
Redis OSS レプリケーショングループの抜粋です。対象リージョンでエンジンとノードタイプがサポートされることを確認し、必要な VPC、サブネット、セキュリティグループは別途設定してください。
変更前
hcl
resource "aws_elasticache_replication_group" "cache_cluster" {
automatic_failover_enabled = true
preferred_cache_cluster_azs = ["us-west-2a", "us-west-2b"]
replication_group_id = "tf-rep-group-1"
description = "test description"
node_type = "cache.m4.large"
num_cache_clusters = 2
port = 6379
}
Redis OSS の既定値に従い、保存時暗号化を有効にしません。
変更後
hcl
resource "aws_elasticache_replication_group" "cache_cluster" {
automatic_failover_enabled = true
preferred_cache_cluster_azs = ["us-west-2a", "us-west-2b"]
replication_group_id = "tf-rep-group-1"
description = "test description"
node_type = "cache.m4.large"
num_cache_clusters = 2
port = 6379
at_rest_encryption_enabled = true
}
新しいグループに保存時暗号化を指定しています。既存グループのデータが自動的に暗号化される変更ではないため、置き換え前にデータと接続の移行を準備する必要があります。