転送時暗号化が無効な ElastiCache レプリケーショングループ

ElastiCache レプリケーショングループのクライアント接続とノード間通信を TLS で保護してください。

説明

キャッシュでは、セッション、トークン、一時データなどの機密情報を扱うことがあります。ElastiCache の転送時暗号化は、クライアントとキャッシュノード間の接続、およびノード間の通信を保護します。

転送時暗号化がないと、内部ネットワークでもキャッシュへの要求や応答が平文で送信される可能性があります。保存時暗号化と認証は別途設定する必要があります。

想定される影響

通信経路を傍受できる第三者に、セッションや認証情報を含むキャッシュ値が漏えいする可能性があります。転送データの機密性や完全性に関する要件を満たせない場合もあります。

対処方法

  • 対応するレプリケーショングループで transit_encryption_enabled = true を設定し、アプリケーションの TLS 接続と証明書の検証を確認してください。
  • 既存グループでの設定変更は、Valkey 7.2 以降と Redis OSS 7 以降で対応しています。古いバージョンでは、対応バージョンへのアップグレードと接続の切り替えを先に計画してください。
  • 移行中に平文接続を許可した場合は、クライアントの移行後に TLS 接続だけを許可してください。保存時暗号化と認証も併せて管理してください。

例

Redis OSS レプリケーショングループの抜粋です。リージョンで対応するエンジンとノードタイプ、および必要な VPC、サブネット、セキュリティグループを確認してください。

変更前

hcl
resource "aws_elasticache_replication_group" "example" {
  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
}

転送時暗号化を明示的に有効にしていません。使用するエンジンの既定値と実際の接続設定を確認する必要があります。

変更後

hcl
resource "aws_elasticache_replication_group" "example" {
  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
  transit_encryption_enabled    = true
}

転送時暗号化を有効にします。アプリケーションも TLS で接続し、既存の接続から切り替えられることを確認する必要があります。

参考資料