(読了時間:約5分)

初めまして。CI事業部の濱村綾(はまむらりょう)です。

本日は本番稼働中のALBに関連づけたWebACLにBLOCKルールを追加する手順を紹介します。
カウントモードでリリース、Sampled requestで評価、その後ブロックモードへ移行、
というシンプルな手順になりますが、想定外のBLOCKが起きないか不安に思う方もいらっしゃると思いますので、
実際の設定画面や挙動と共に一連の流れを紹介できればと思います。

前提

  • ALBは本番稼働中
  • ALBにはデフォルトアクションがALLOWのWebACLを関連付け
  • BLOCK用のルールグループは作成済み

作業の流れ

1. Sampled requests 有効化
2. ルールグループをカウントモードでリリース
3. Sampled requestsで挙動確認(中間確認)
4. ルールグループをブロックモードへ移行
5. Sampled requestsで挙動確認(結果確認)

作業手順

1. Sampled requests 有効化

1-1. WAF & Shieldから対象のWebACLsを表示。Logging and metricsタブからSampled requestsのEditを押下。

1-2. Enable sampled requestsを選択しSaveを押下。

1-3. Enabledになったことを確認。

1-4. Sampled requestsタブを開き、リクエスト情報が表示されるようになったことを確認。

ちなみに、2024年3月時点ではSampled requestはWebACLの料金に含まれているため、
追加の課金対象にはなりません。(料金コンポーネントに記載されていないことも確認済)
AWS WAF の料金

2. ルールグループをカウントモードでリリース

2-1. RulesタブからAdd my own rules and rule groupsを押下。

2-2. 任意のルールグループ設定後に、Override rule group action の Enableをチェック、Add ruleを押下。
  私にはオプション名がわかりづらく、This only〜の説明文を読んでようやく理解。。
  本来のルール(今回はBLOCK)を評価のみのCOUNTでオーバーライド(上書き)する旨が記載されています。

2-3. Move up、Move downで任意の優先度に調整し、Saveを押下。
  (対象ルールのActionがOverride rule group action to countになっていることを確認し、ここで一息つく)

2-4. 設定完了!

3. Sampled requestsで挙動確認(中間確認)

3-1. ブロック対象のリクエストのみActionがCOUNTになることを確認する。
  無影響確認(本来ALLOWすべき部分がBLOCKされていないかの確認)も忘れずに!

4. ルールグループをブロックモードへ移行

4-1. 先ほどカウントモードでリリースしたルールを選択しEditを押下。

4-2. Override rule group action to countのチェックを非チェックにして、Save ruleを押下。

4-3. 設定完了!(ActionがUse rule actionsに変わったことを確認。)

5. Sampled requestsで挙動確認(結果確認)

5-1. ブロック対象のリクエストのみActionがBLOCKになることを確認する。(無影響確認もry)

最後に

以上の流れで設定を行えば、万が一に備えられると思います。
ただ、Sampled requestsは表示されるまでにラグがあったり、表示結果にばらつきがあったり(※)と、
少々不便なところもありましたので、ブロックモード移行後はまず先に作業者が結果確認、無影響確認を行い、
作業結果を評価することを強くお勧めします。

※検索条件を変えずにリロードした際に直前と同じ結果が得られなかったり、
 そもそも何も表示されなくなったりと不安定な挙動を確認しており、
 何度か接続確認を行って期待したAction結果が出力されるまで試行錯誤しました。