LoginSignup
3
7

More than 5 years have passed since last update.

API Gatewayの前にWAFを設定する

Posted at

概要

API Gatewayを使うとき手が届かないむずかゆいところがたくさんあります(HTTPSのみしか受け付けないとか、前段にWAFおけないとか)。このうちのWAFを設定するという部分に今回は取り組んだときのTipsを残しておきます。

  • API Gateway + CloudFront + AWS WAF (+ S3)
  • AWS WAFのIP Match Conditionのみを利用

前提

以前に投稿した、
「CloudFrontに複数オリジン(API GatewayオリジンとS3オリジン)の設定」の通り、下記の環境が構築されている前提とします。なお、今回はAPIGatewayの前段におくことがメインなのでS3はオプションです。

arch.png

アーキテクチャ構成

AWS WAFが入ることで下記の構成になります。

arch2.png

AWS WAFの概要

詳細は公式ドキュメントやブログ等でたくさんの方が紹介していただいているのでそちらを参照してください。

AWS WAFの設定

今回はIP Match Conditionを設定します。下記手順でコンポーネントを構築していきます。

  1. IPSetsの作成
  2. Ruleの作成
  3. WebACLの作成

IPSetsの作成

非常に簡単です。CIDR形式でIPを登録してIPアドレスの集合を作るだけです。

ip_create.png

ip_setting.png

ip_result.png

Ruleの作成

CloudFront->APIGatewayへのルーティングになるため、CloudFrontを指定しています。

rule_create.png

rule_setting.png

rule_result.png

WebACLの作成

作成したIPSets、RulesをWebACLに設定します。

acl_setting_1.png

acl_setting_2.png

acl_setting_3.png

acl_setting_4.png

acl_result.png

結果

  • IPSetsに設定したIPからは問題なくアクセスできます。

    • API Gatewayは単純にSuccessと返すだけのMockエンドポイントを用意し、prodステージにデプロイしました。
      • リソース名:success
    • ブラウザから動作確認
  • IPSets外のブラウザからアクセスしてみます。

    • アクセスブロックされました! wafblock.png

まとめ

  • APIGatewayの前段にWAFを置く構成を構築しました。
  • IP Match Condition以外にSQLインジェクションやXSSなど他にも設定がたくさんあります。IP Match Conditionだけでいうと超シンプルに作れます。
3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7