転送時暗号化が無効な EFS ボリューム

ECS タスクと EFS ファイルシステム間の通信を転送時暗号化で保護してください。

説明

ECS タスクで EFS を使用する場合は、ホストとファイルシステム間の通信も保護する必要があります。転送時暗号化が無効だと、ネットワーク経路上でファイルの内容やメタデータが漏えいする可能性があります。

ECS タスク定義の efs_volume_configuration.transit_encryption を ENABLED に設定すると、その EFS 接続の転送時暗号化が有効になります。保存時暗号化とファイルへのアクセス権限は別途管理する必要があります。

想定される影響

通信経路にアクセスできる第三者が暗号化されていない通信を傍受すると、アプリケーションのファイルや運用データが漏えいする可能性があります。内部ネットワークであることだけでは、転送中のデータは保護されません。

対処方法

  • EFS を使用するボリュームで transit_encryption = "ENABLED" を設定してください。
  • 新しいタスク定義リビジョンを使用するタスクをデプロイし、実際のファイルアクセスを確認してください。
  • 転送時暗号化と併せて、IAM、アクセスポイント、セキュリティグループの設定を確認してください。

例

タスク定義の抜粋です。参照先のコンテナー定義ファイルと EFS ファイルシステムが必要で、コンテナーのボリュームマウントも別途設定する必要があります。

変更前

hcl
resource "aws_ecs_task_definition" "example" {
  family                = "service"
  container_definitions = file("task-definitions/service.json")

  volume {
    name = "service-storage"

    efs_volume_configuration {
      file_system_id          = aws_efs_file_system.fs.id
      root_directory          = "/opt/data"
      transit_encryption      = "DISABLED"
      transit_encryption_port = 2999
    }
  }
}

EFS 接続の転送時暗号化を無効にします。

変更後

hcl
resource "aws_ecs_task_definition" "example" {
  family                = "service"
  container_definitions = file("task-definitions/service.json")

  volume {
    name = "service-storage"

    efs_volume_configuration {
      file_system_id          = aws_efs_file_system.fs.id
      root_directory          = "/opt/data"
      transit_encryption      = "ENABLED"
      transit_encryption_port = 2999
    }
  }
}

同じ接続の転送時暗号化を有効にします。実行中のタスクは、新しい定義を使用するタスクに切り替える必要があります。

参考資料