AWS WAFでメンテナンスモードの構築
レビュー投稿日の情報になります
株式会社スペースマーケット / dumbled0re
メンバー / バックエンドエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
最終更新日投稿日
利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|
アクセス制御機能 | 11名〜50名 | 2020年3月 | B to B C to C |
利用機能 | アクセス制御機能 |
---|---|
ツールの利用規模 | 11名〜50名 |
ツールの利用開始時期 | 2020年3月 |
事業形態 | B to B C to C |
アーキテクチャ

アーキテクチャの意図・工夫
APIにリクエストする種類が「フロントから送る場合」と「直接APIを送る場合」の2種類存在するので、「フロント」と「API」の2つでWAFを設置するようにしました。「NATのIP」か「開発者のIPアドレス」以外であれば、フロントでは「メンテナンスページ」を返し、API側では「503」を返すようにして、すべてのリクエストに対して制御できるようにしました。
導入の背景・解決したかった問題
導入背景
データベースのアップグレード作業に伴い、サービス全体を一時的に停止する必要がありました。メンテナンスモードにする仕組みはすでに存在していましたが、Webとアプリで仕組みが異なっていたため、運用面でも課題がある状況でした。
比較検討したサービス
- ALB
比較した軸
- メンテナンス時にはユーザーにはアクセス制限をかけつつ、開発者は内部確認できる
- メンテナンスの切り替えを運用面でも簡単かつ効率的に行える
選定理由
1. ALBのルール制限に引っかかるため
- ALBでは、1つのリスナールールに追加できる条件は最大5つまでという制限がある。
- メンテナンス中に一部の開発者だけがアクセスできるよう、複数のIPアドレスを許可条件として追加しようとしたが、条件数が上限に達してしまう。
- ALBのルール設定だけでは柔軟なIP制御が困難だった。
2. 複数のALBに同様のルールを適用する必要があったため
- 各アプリケーション単位でALBが個別に存在しており、同じメンテナンス用ルールを複数のALBに繰り返し設定する必要があった。
- ALB単体で管理すると、ルールの設定・変更作業が煩雑になりやすい。
- ALBにAWS WAFを紐付けることで、ルールを一元管理でき、サービス全体のメンテナンス対応を効率化・簡素化できる。
導入の成果
- Webとアプリで異なっていたメンテナンス方法を共通の仕組みに統一することができた。
- 共通のルールを各AWS WAFに適用するだけでメンテナンスモードを実現できるようになり、運用コストを軽減できた。
導入に向けた社内への説明
上長・チームへの説明
AWS WAF自体はすでに導入済みであり、今回の対応にかかる追加コストも微増だったため、スムーズに対応を進めることができる状態でした。
活用方法
よく使う機能
1. Web ACL
- WAFルールの本体となるリソースで、主にALBのリソースに紐づけて利用しています。
- 特定のIPアドレスからのアクセスを制限したり、レートベースルールを用いてIPごとのリクエスト数をカウントし、アクセス傾向の把握や監視に活用しています。
2. IP sets
- IPアドレスのリストを再利用可能な形式で管理できる機能です。
- メンテナンス時でもアクセスを許可したい開発者のIPアドレスを登録して利用していました。
3. Rule groups
- 複数のルールをまとめたグループ機能で、ルールを一括で管理・再利用できます。
ツールの良い点
- AWSの各サービス(ALB、API Gatewayなど)と簡単に連携して導入できる
- 従量課金制のためコストを抑えられる
ツールの課題点
- サービスに合わせて適切なルールを設定・運用するには、WAFやセキュリティに関する専門的な知識が必要になる
株式会社スペースマーケット / dumbled0re
メンバー / バックエンドエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
よく見られているレビュー
株式会社スペースマーケット / dumbled0re
メンバー / バックエンドエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法