💡

ロードバランサー通過後の通信がHTTPである理由

に公開

「外からはHTTPSなのに、ロードバランサーを通過した後はHTTPで通信している」ケースは、実際のWebシステムでよく見られますが、要件定義をする際などはその理由について、ことさら説明されることもないため、改めて整理してみました。

1. ロードバランサーでのSSL終端(SSL Termination)

  • 多くのロードバランサーは HTTPS(SSL/TLS)通信の暗号化・復号処理を肩代わりします。
  • ロードバランサーがクライアントとの間でHTTPSを確立 → 内部の通信は復号化済みのHTTPで流す。

主な理由:

  • サーバー側に負荷の大きい暗号化処理を任せず、効率よく処理できる。
  • サーバーの設定を簡単にできる(証明書の更新や管理もLBに集約できる)。

2. 内部ネットワークは「信頼できる」前提

  • ロードバランサーとアプリケーションサーバー間の通信は、通常 同じデータセンターや同じVPC内のプライベートネットワークを通ります。
  • この区間はインターネットに晒されないため、「盗聴や改ざんのリスクは低い」と考え、HTTPで済ませるケースが多い。

3. パフォーマンスの観点

  • HTTPSは毎回暗号化・復号処理が必要で、CPUに負荷がかかります。
  • 内部通信までHTTPSにすると、その分オーバーヘッドが増える。
  • 大規模システムでは、内部をHTTPにしておくことで レイテンシ削減やサーバーリソース節約が可能。

4. 例外:内部もHTTPSにするケース

とはいえ、必ずしもHTTPで良いわけではなく、以下のようなケースでは 内部もHTTPS(End-to-End Encryption) が選ばれます。

  • 金融・医療などセキュリティ要件が非常に厳しいシステム
  • 複数のデータセンターをまたいで通信する場合(物理的にネットワークが分かれるため盗聴リスクあり)
  • ゼロトラストアーキテクチャを導入している場合

🔑 まとめ

  • 外部 → LB:HTTPS(安全性のため必須)
  • LB → 内部サーバー:HTTPが多い(効率化・管理簡略化)
  • ただし高セキュリティ要件では内部もHTTPSにする

Discussion