こんにちは、かびらです。
今回は、WAFについて解説します。
WAFとは?

WAFは、Webアプリケーションを守るためのセキュリティの仕組みです。
Webへのリクエスト内容をチェックして、不正な通信を自動でブロックしてくれます。
アプリの手前で動くことで、攻撃が実際にアプリへ届く前に防ぐ役割を持っています。
WAFは何を守っているのか?

WAFは何を守っているのでしょうか?
ここでは、WAFの働きについてイメージで説明します。
WAFは、インターネットから届くリクエストを最初にチェックする役割を持っています。
SQLインジェクションやXSSといった、不正な入力やスクリプトを検知すると、その時点で通信をブロックします。
そのため、悪意あるリクエストが、Webアプリのコンテナまで届かないように守ってくれます。
WAFを採用した理由

次に、LuxucomでWAFを採用した理由についてです。
サービスの運用を開始してから、不正なアクセスが実際に発生するようになりました。
その影響で、アプリには大量のエラーログが出力される状況になっていました。
そこで、アプリに届く前の段階で通信を防ぐために、WAFを導入しました。
WAFと関連するアーキテクチャ

次に、LuxucomでWAFとバックエンドが、どのように連携しているかを見ていきましょう。
クライアントからのリクエストは、まずCloudFrontに紐づけられたWAFでチェックされます。
ここで、リクエスト内容に問題があれば、不正な通信としてブロックされます。
正常なリクエストだけが、ALBを経由して、ECS上で稼働しているWebアプリのコンテナへ届けられます。
このようにして、アプリに届く前の段階で、不正なアクセスを防いでいます。
WAFを使って良かった点

次に、LuxucomでWAFを使って良かった点です。
まず、明らかな不正アクセスを、アプリに届く前の段階で遮断できるようになりました。
これによって、不要なリクエストがアプリまで届かず、安定した運用につながっています。
また、セキュリティルールの自由度が高く、想定していたよりもスムーズに導入できた点も、大きなメリットでした。
WAFを使って難しかった点

次に、WAFを使って難しかった点です。
WAFはルールにもとづいて通信を判断するため、設計がとても重要になります。
ルール設計が適切でないと、正しいリクエストを誤って遮断したり、逆に不正な通信を通過させてしまうことがあります。
そのため、試行錯誤を繰り返しながら、少しずつ調整していくのが大変でした。
さいごに
今回は、Luxucomのインフラを支える仕組みの中から、WAFについて解説しました。
Webアプリの手前でリクエストをチェックし、不正な通信を防いでいることが分かったと思います。
次回は、アプリからの通知やメール配信を支える仕組みとして、SESについて解説していきます。

