Lambda関数URLにCloudFrontとAWS WAFを使ってIP制限をかける方法

Lambda関数URLの使い方!!

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の作成

  1. AWSマネジメントコンソールからWAF & Shieldを選択します。
  2. 「Create web ACL」を選択します。
  3.  以下の設定を行い「Next」で次へ進みます。
    • Web ACL details
      • Resource type :「CloudFront distributions」を指定
      • Name:適切に設定
    • Associated AWS resources
      • 作成したCloudFrontを追加
  4. 以下の設定でAdd rules and rule groupsの設定を行います。
    • Rules:指定なし
    • Default action:「Block」を選択
  5. 「Next」で次へ進み、ACLを作成します

    WebACL でIP 制限ルールをかける

    IP set を作成する

    1. 「Create IP set」を押します。
    2. 以下、IP set detailsの設定を行います
      • IP set name:適切に設定
      • IP addresses:許可するIPアドレスを指定(例: 10.0.0.0/32)
    3. 「Create IP set」を押下し作成します。

      ルールを設定する

      1. 作成したWebACLを選択、Rulesタブを選択します。
      2. 「Add rules」の「Add my own rules and rule groups」を選択します。
      3. 以下、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」を選択
      4. 「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 エンドポイントを追加します。