WAF/ACLを使ってアクセス元をIPアドレスで制限してみる

当記事は「Next.jsをECS上で動かしてみる」の第11回「WAF/ACLを使ってアクセス元をIPアドレスで制限してみる」になります。

  1. DockerでNext.jsアプリを作成してみる
  2. ECRにリポジトリを作成してみる
  3. ECRにコンテナのイメージをプッシュしてみる
  4. VPCを作成してみる(ECSを動かすため用)
  5. セキュリティグループを作成してみる(ECSを動かすため用)
  6. ECSでNext.jsのアプリを動かしてみる
  7. セキュリティグループを作成してみる(ALBを動かすため用)
  8. ALBを作成してターゲットグループにECSを指定してみる
  9. CloudFrontでALB(ECS)を配信してみる
  10. XServerで取得した独自ドメインをCloudFrontに設定してみる
  11. WAF/ACLを使ってアクセス元をIPアドレスで制限してみる

IPアドレスを確認

下記のリンクを開いて、グローバルIPを確認。
https://www.cman.jp/network/support/go_access.cgi

IPセット作成

IPセット名はわかりやすいものを設定、スコープはCloudFrontを選択。

IPアドレスに先ほど確認したグローバルIPを入力し、最後に「/32」を入力して保存をクリック。

ACL作成

アプリカテゴリはプルダウンから適当に選択(でいいと思う)。
アプリケーションフォーカスはAPIとウェブの両方を選択。

「リソースを追加」をクリック→「CloudFrontリソースまたはAmplifyリソースを追加」をクリック。

下記で作成したCloufFrontのディストリビューションを選択→「追加」をクリック。

初期の保護は「お客様が構築」を選択→「カスタムルール」を選択→「次へ」をクリック。

「IPベースのルール」を選択を→「次へ」をクリック。

アクションはプルダウンから「Allow」を選択→ルール名はわかりやすいものを入力→「既存のIPセットを使用」をオンにする→プルダウンから先ほど作成したIPセットを選択→「ルールを追加」をクリック。

名前に分かりやすいものを入力→「保護パック(ウェブACL)を作成」をクリック。

「詳細を管理」をクリック。

デフォルトアクションの「設定」をクリック。

「ブロック」を選択→「完了」をクリック。

「保存」をクリック。

確認

左がスマホ回線でアクセスしたとき、許可されていないIPのためアクセス不可。
右が自宅WiFiでアクセスしたとき、許可されているためNext.jsのウェルカムページが表示。

以上になります。
お読み頂き、ありがとうございました。