🛡️

AWS WAFでメンテナンス画面を表示してみた

に公開

こんにちは。ランサーズ株式会社でSREをしているtkです。
本日はAWS WAFでメンテナンス画面表示を試してみたので、紹介させていただきます。

前提

今回は下記の条件でメンテナンス画面を出していこうと思います。

  • 社内IPでアクセスした際には通常画面を表示
  • 社外IPでアクセスした際にはメンテナンス画面を表示

手順

マネコン経由で設定していきます。

Custom Response Bodyの作成

まず、メンテナンス画面として表示するCustom Response Bodyを作成します。

Web ACLから[Custom Response Body]のメニューを選択し、設定していきます。

今回はhtml形式で簡単なメッセージを表示するための設定を行いました。

(Optional) IP Setの作成

今回はWeb ACLのRule StatementでIP Setを利用するため、事前に作成しておきます。
利用するRule Statementの種類によっては、IP Setの作成は不要です。

今回は社外IPに向けてメンテナンス画面を出すため、下記の方針で設定を進めます。

  • IP Setでは社内IPを定義する
  • Rule Statementで「IP Set内のIPに一致しないIPに対して、メンテナンス画面を出す」ように設定する

Ruleの作成

続けて、独自Ruleを作成します。

下記の設定でRuleを作成していきます。

  • Statement
    • [doesn't match the statement] を選択
    • Inspect
      • [Originates from an IP address in] を選択
    • IP Set
      • 先ほど作成したIP Set
  • Action
    • Block
  • Custom Response
    • [Enabled] にチェック
    • Response Code
      • 503
    • Response Body
      • 先ほど作成したCustom Response Body を選択

以上でWAF側の設定が完了したので、次は実際に検証していきましょう!

検証

検証にあたっては、今年5月にリリースされたばかりのランサーズ ラクアポAIの社内環境で検証してみます。

まず、社内IPからトップページにアクセスしてみます。

通常のトップページ画面が表示されました。

続けて、社外IPからトップページにアクセスしてみます。

無事メンテナンス画面が表示されました!🥳
(上記画像の左上にメンテナンス文言がちょこんと表示されています)

このように、アプリケーション側に変更を加えることなく、迅速かつ簡単にメンテナンス画面を表示することができます。

※ ただし、4KBを超えるレスポンスボディは設定できない点には注意が必要です。

まとめ

上記の通り、AWS WAFを利用することで簡単にメンテナンス画面を表示することができます。

検証してみて、個人的に感じたメリットは下記の通りです。

  • 急ぎメンテナンス画面の準備が必要な場合に有用
  • アプリケーション側の変更が不要
  • メンテナンス文言の反映や修正が迅速にできる

ここまでご覧いただきありがとうございました。
本記事が何かの参考になれば幸いです。

参考

ランサーズ株式会社

Discussion