ALBの内部向けとインターネット向けの違いについて

こんにちは。年中ダイエットをしているyukiです。
AWSのロードバランサーであるApplication Load Balancer(ALB)には、「内部向け」と「インターネット向け」の2種類があることを知っていますか?
私はそのことを知らずに作業中に詰まってしまったので、今回はALBの種類と、それぞれの動作の違いについて詳しくお話ししていこうと思います。
ALBのスキームとは?
ALBを作成する際、「スキーム」という設定項目があり、ここで「インターネット向け」か「内部向け」を選択できます。
この設定によって、ALBがパブリックに公開されるのか、VPC内でのみアクセスできるのかが決まります。

インターネット向けALBとは?
インターネット向けALBは、パブリックIPを持ち、インターネット上のクライアントからアクセスできるロードバランサーです。
コンソール上では「internet-facing」と表記されています。

特徴
- パブリックIPまたはElasticIPを使用し、インターネットゲートウェイを介して外部と通信する
- WebサイトやAPIなど、外部ユーザーがアクセスするサービス向け
- WAFやセキュリティグループを適切に設定し、不正アクセスを防ぐ必要がある
内部向けALBとは
内部向けALBは、プライベートIPのみを持ちます。インターネット上からアクセスすることはできず、ロードバランサーがあるVPCにアクセス可能なクライアントのみアクセスすることができます。
コンソール上では「internal」と表記されています。

特徴
- プライベートIPを使用する
- VPC内部でのみ通信可能で、外部からの直接アクセスはできない
- 内部APIの負荷分散や、VPC内部のサービス間通信向け
アクセス許可を追加してみる
ALBと同じVPCのプライベートサブネットにあるEC2からALBにアクセスをしたいです。
内部向けALBの設定
まず、内部向けALBに対してアクセス許可を追加しました。
ALBのセキュリティグループに、EC2のセキュリティグループからのTCP:443のアクセスを許可する設定を追加します。
これでALBにアクセスすると、応答が返ってくることが確認できました。
インターネット向けALBの設定
続いて、インターネット向けALBに設定を追加します。
インターネット向けALは0.0.0.0/0でフル公開しているのではなく、セキュリティグループにアクセス許可を追加していく形で制御しています。
したがって、先ほどと同じようにALBのセキュリティグループに、EC2のセキュリティグループからのTCP:443のアクセスを許可する設定を追加しました。
しかし、ALBにアクセスすることができませんでした。
セキュリティグループの代わりに、EC2のelasticIPを設定するとアクセスできるようになりました。
挙動の違いの理由
この挙動の違いは何でしょうか。
内部向けALBは文字通り内部通信なので、EC2インスタンスのセキュリティグループを認識することができます。したがって、セキュリティグループが許可されていればアクセスすることができます。
インターネット向けALBは「インターネット経由の通信」を前提にしているため、VPC内のEC2のプライベートIPやセキュリティグループを認識できません。したがって、EC2のパブリックIPまたはElasticIPを許可する必要があります。
まとめ
ALBには「内部向け」と「インターネット向け」の2種類があり、それぞれ用途や通信の仕組みが異なります。
AWS環境でALBを導入する際には、適切なスキームを選択し、適切なセキュリティ設定を行いましょう。