Lambda関数URLにIP制限をかけて公開する方法を記載します。
- Lambda関数URLへのアクセスはCloudFront経由のみに絞る
- AWS WAFを使用してCloudFrontへのアクセスにIP制限をかける
こんな感じのことをやっていきます。
まず、「Lambda関数URLへのアクセスはCloudFront経由のみに絞る」については以下の記事を参考に、Lambda関数URLへのアクセスをCloudFrontのみに絞ることができます。
Lambda関数URLの使い方-CloudFrontを使って安全にLambda関数URLを使いましょ!
Lambda関数URLの危険な使い方と安全な使い方について記載します。 Lambda関数URLというものが公開され、Lambda関数をHTTPS公開できるようになりました。CloudFront経由でLambda関数URLにアクセスできるようにしておき、攻撃された場合にはWAFを設定しようといった内容になります。
本記事では、上記記事に記載の「Lambda関数URLへのアクセスはCloudFront経由のみに絞る」を作成済みの状態である前提で記載していきます。
Lambda関数URLにIP制限をかける
AWS WAFの作成
- AWSマネジメントコンソールからWAF & Shieldを選択します。
- 「Create web ACL」を選択します。
- 以下の設定を行い「Next」で次へ進みます。
- Web ACL details
- Resource type :「CloudFront distributions」を指定
- Name:適切に設定
- Associated AWS resources
- 作成したCloudFrontを追加
- Web ACL details
- 以下の設定でAdd rules and rule groupsの設定を行います。
- Rules:指定なし
- Default action:「Block」を選択
- 「Next」で次へ進み、ACLを作成します
WebACL でIP 制限ルールをかける
IP set を作成する
- 「Create IP set」を押します。
- 以下、IP set detailsの設定を行います
- IP set name:適切に設定
- IP addresses:許可するIPアドレスを指定(例: 10.0.0.0/32)
- 「Create IP set」を押下し作成します。
ルールを設定する
- 作成したWebACLを選択、Rulesタブを選択します。
- 「Add rules」の「Add my own rules and rule groups」を選択します。
- 以下、Ruleの設定を行います。
- Rule type:「Rule builder」を選択
- Rule Name:適切に設定
- If a request:「matches the statement」を選択
- Statement を設定する。
- Inspect:「Original from an IP address in」
- IP set:先ほど作成したIP setを選択
- IP address to use as the originating address:「Source IP address」を選択
- ActionのAction:「Allow」を選択
- 「Add Rule」でルールを追加する
動作確認
以下の2点について動作確認できればOKです。
- 許可したIPアドレスでのアクセス
- 「”Hello from Lambda!”」が表示されればOK
- 許可していないIPアドレすでのアクセス
- 403エラーが返ってくればOK
まとめ
Lambda関数URLにIP制限をかけて、安全にLambda関数URLを使う方法を記載しました。
IP制限は以下のようなケースで使用できそうですね。
- 開発環境でLambda関数URLを一般公開していない場合
- 本番環境で特定のIPから攻撃を受けた場合
↓Lambda関数URLの公式記事です↓
Lambda 関数 URL - AWS Lambda
関数 URL を使用して、Lambda 関数に専用の HTTP エンドポイントを追加します。