🚀
【超雑】ALB経由のみのアクセスを許可するEC2インスタンスの構築をした時のメモ
メモ程度に書きました
※https通信に対応するための手順は省略してます
全体像
AWSでアプリケーションを公開する場合、下記の要素を設定します。
-
ALB (Application Load Balancer)
- ALB向けのセキュリティグループ
- ターゲットグループ
- リスナー
- ルール
-
EC2インスタンス
- EC2向けのセキュリティグループ
ALB がクライアントからリクエスト(HTTP/HTTPS)を受け取り、EC2インスタンスへルーティングする仕組みです。
ALB の構成と設定
1. ALB 用セキュリティグループ
-
許可するポート
- 外部(一般ユーザー)のアクセスを受け付けるため、デフォルトでは HTTP(80) と HTTPS(443) をインバウンドで許可します。
- 開発・検証環境の場合、セキュリティ対策としてアクセス元IPを自分のグローバルIPなどに絞ることを推奨します。
2. ターゲットグループ
- ターゲットグループを作成します。
- ターゲットを登録する際、対象のインスタンスを指定します。その際、EC2上のアプリケーションやWebサーバのリスンポートを記載します。例えば、アプリケーションが 8080 番ポートを使っている場合には、ターゲットグループでも 8080 を設定します。
3. リスナーとルーティング
-
ALB が受け付けるポートを設定します。
- HTTP(80) や HTTPS(443) を一般的に利用します。
- HTTPS を使用する場合は証明書の設定も必要ですが、ここでは手順を省略しています。
- デフォルトアクションでは、ALBがリクエストを受け付けた後に行うルーティング先を指定します。
- 今回は「2. ターゲットグループ」で作成したものを、デフォルトアクションへ登録します。
EC2 インスタンスの構成と設定
1. EC2 用セキュリティグループ
- インバウンドルールを2つ設定します
- 1つ目
- EC2のアプリケーションやWebサーバがリッスンしているポートをインバウンドで許可します。
- アクセスの許可(ソース)は「カスタム」を選択し、ALB用のセキュリティグループを指定します(「sg-xxxxxx」などのIDを指定)。
- 2つ目 SSH 接続 (22番ポート)
- 管理者が接続するために使用するポートです。
- セキュリティ上、アクセス元IPを管理者の固定IPに絞ることを推奨します。
- 1つ目
まとめ
- ALB セキュリティグループでは、外部からの HTTP/HTTPS アクセスを許可(または必要に応じて特定IPだけ許可)します。
- ターゲットグループでは、EC2インスタンスが属するサブネットと、アプリケーションがリッスンするポートを設定します。
- ALB リスナーでは、クライアントからの HTTP/HTTPS リクエストを受け取るポートを指定します。
- ルールはデフォルト転送設定を利用し、必要に応じて追加設定を行います。
- EC2 セキュリティグループでは、ALB セキュリティグループからのインバウンドを許可(アプリケーションポート)、また管理者のSSHアクセス用にIP制限を行います。
これらを正しく設定することで、ALB経由でEC2上のアプリケーションに安全かつ適切にアクセスできるようになります。
Discussion