こんにちは。hacknoteのr.katoです。
今回はweb ACLを使ってIPアドレスを元にアクセス制限をかける方法を紹介していきます。
その設定対象として、API Gatewayが一番簡単だったので、API Gatewayを使っています。
アクセス制限できているかは、API GatewayにcurlでPOSTした際の返り値とAPI GatewayにリンクしているLambdaのログで確認しました。
用意するもの
- LambdaのリンクしているAPI Gateway
- web ACL
web ACLの設定方法
- AWSコンソールにログインして、WAF&Shieldにアクセスします。
- Create web ACLをクリックします。
- Nameは任意のものを、RegionはAPI Gatewayがある所を、選択すると下の選択肢が変化するので任意のAPI Gatewayとそのステージを選択して、Nextをクリックします。
- IP match conditionsのCreate conditionをクリックします。
任意のNameとRegionを入力、選択し、アクセス制限をかけたい、IPアドレスを入力します。(参考:IPv6の話)
そして、Add IP address or rangeをクリックします。その後、Create rulesに進みます。
- Create ruleをクリックします。
- 任意のNameを入力します。赤枠のところは
doesn't
,originate from an IP address in
手順4番で作ったものを選択してAdd conditionをクリックし、その後、createをクリックします。
- Default actionは任意のものを、今回はBlockを選択し、Review and createをクリックします。そして、作成完了まで待ちます。
結果
次の画像が実際にAPI Gateway にcurlでPOSTした時のterminalの画面です。
赤枠で囲ってある範囲が、アクセス制限前で、その後が制限後です。
制限前はLambdaの返り値のnullが返ってきていますが、制限後はAPI Gatewayで弾かれているため、Forbiddenが返ってきています。