🚀

【超雑】ALB経由のみのアクセスを許可するEC2インスタンスの構築をした時のメモ

2024/09/06に公開

メモ程度に書きました
※https通信に対応するための手順は省略してます

全体像

AWSでアプリケーションを公開する場合、下記の要素を設定します。

  1. ALB (Application Load Balancer)

    • ALB向けのセキュリティグループ
    • ターゲットグループ
    • リスナー
    • ルール
  2. 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だけ許可)します。
  2. ターゲットグループでは、EC2インスタンスが属するサブネットと、アプリケーションがリッスンするポートを設定します。
  3. ALB リスナーでは、クライアントからの HTTP/HTTPS リクエストを受け取るポートを指定します。
  4. ルールはデフォルト転送設定を利用し、必要に応じて追加設定を行います。
  5. EC2 セキュリティグループでは、ALB セキュリティグループからのインバウンドを許可(アプリケーションポート)、また管理者のSSHアクセス用にIP制限を行います。

これらを正しく設定することで、ALB経由でEC2上のアプリケーションに安全かつ適切にアクセスできるようになります。

Discussion