概要
API Gateway + Lambdaの構成にて、WAFを使ってIP制限を行う方法を紹介します。
構築までの手順は以下の記事で紹介しましたのでご参考ください。
経緯
ELB + EC2だとLoadBalancerのセキュリティグループのインバウンドルールを利用することで、指定したIPアドレスからのアクセスだけを許可して他はブロックすることが可能ですよね。
それをAPI Gateway + Lambdaでも実現しよう!という話です。
AWS WAFのIPセットを使って制限をかけます。
手順
①WAFでIP setsを作成する
まずはIPセットを作成します。
ホワイトリスト方式を利用するので「指定したIPのアクセスのみを許可する」という意味になります。
- WAF -> IP sets -> Create IP set
- Region:リージョンを選択(②のWeb ACLと同じリージョンにすること)
- IP addresses:対象アドレスを入力(CIDR方式・複数入力も可)
②WAFでWeb ACLsを作成する
- WAF -> Web ACLs -> Create web ACL
- Name:任意に命名
- Associated AWS resourcesにて「Add AWS resources」をクリック
- Amazon API Gateway REST API -> 作成済みのAPI Gatewayを追加
- Rulesにて「Add rules」をクリックし「Add my own rules and rule groups」を選択
- ルールタイプ「IP set」を選択し、Ruleを任意に命名、上記①で作成したIP set名を選択
- ActionはAllowを選択してルール追加
- 「Default web ACL action for requests that don't match any rules」
- Blockに変更(これにより、このルールに合致しないアドレスはブロックする動作になる)
上記により、指定したIPアドレス以外のアクセスをブロックできるようになり、IP制限をかけることができました。
参考