Amazon Web Services ブログ

AWS WAF Classic から新しい AWS WAF にルールを移行する

このブログ記事は Security Specialist Solutions Architect の Bryant Pickford と Sr. Cloud Infrastructure Architect の Umesh Kumar Ramesh、Sr. Product Manager の Kevin Lee によって書かれました。

2024年12月2日:この投稿は WAFV2 への移行を反映するように更新され、AWS WAF Classic のパートナーマネージドルールからパートナーマネージドルール(wafv2)への 1:1 のマッピングする内容が追加されています


AWS WAF Classic のサポートは、2025 年 9 月 30 日に終了します。

2019 年 11 月、Amazon はより使いやすく豊富な機能を提供する AWS Web アプリケーションファイアウォール (WAF) の新しいバージョンを立ち上げました。この投稿では AWS WAF Classic から新しい AWS WAF に移行する方法をいくつかご紹介します。

AWS WAF のマネージドルールは AWS WAF で最も強力な機能の 1 つです。サービスでルールを直接作成または管理する必要なく、アプリケーションを保護するのに役立ちます。新しいリリースには、他の拡張機能とAWS WAF用の新しいAPIのセットが含まれています。

この作業を開始する前に、AWS WAF がどのように機能するかを復習することをお勧めします。既に AWS WAF に精通している場合はスキップしてください。AWS WAF を初めて使用する、AWS WAF を展開するためのベストプラクティスを知りたい場合は、AWS WAFを実装するためのガイドラインを読むことをお勧めします。

AWS WAFで変更されたもの

こちらが AWS WAF の変更点のまとめです。

  • AWS Managed Rules for AWS WAF:一般的な Web の脅威に対する保護を提供し、VPN、プロキシ、および TOR ネットワークに由来するボットとトラフィックをブロックするための Amazon IP reputation list と Anonymous IP list が含まれています
  • 新しい API (wafv2):2 つではなく単一の API セットを使用して、すべての AWS WAF リソースを構成できます ( WAF および WAF-regional )
  • 簡素化されたサービス制限:Web ACL 毎により多くのルールを提供し、より長い正規表現パターンを定義できます。条件ごとの制限は排除され、Web ACL キャパシティユニット (WCU) に置き換えられました
  • ドキュメントベースのルールライティング:JSON 形式のルールを Web ACL に直接書き込み表現できます。個々の API を使用して異なる条件を作成し、それらをルールに関連付け、コードを大幅に簡素化し、保守可能にする必要はなくなりました
  • ネストと完全な論理操作のサポート:複数の条件を含むルールを含むルールを書くことができます。また、[ a および not ( b または c ) ]などのステートメントを作成して、論理操作をネストすることもできます
  • IP セットの可変 CIDR 範囲サポート:ブロックする IP 範囲を定義する柔軟性が高まります。新しい AWF WAF は IPv4 は /1 から /32、IPv6 は /1 から /128をサポートしています
  • チェーン可能なテキスト変換:受信トラフィックに対するルールを実行する前に、複数のテキスト変換を実行できます
  • 改良されたコンソール体験:視覚的なルールビルダーの機能と、より直感的なデザインを備えています
  • Condition タイプの AWS CloudFormation サポート:JSON で書かれたルールは YAML 形式に素早く変換できます
  • より高いクォータ:Web ACL 毎のルール、長い正規表現パターン、および条件ごとの制限を置き換える Web ACL キャパシティユニット (WCU)
  • 設定可能なタイムウィンドウ:レートベースルールにおいて、リクエスト集約のためのタイムウィンドウの設定ができるようになりました。お客様は以前からサポートされていた 5 分に加えて、1 分、2 分、10 分のタイムウインドウを選択できるようになりました
  • より低いレートベースの制限:レートベースルールにおいて、しきい値を低く設定できるようになりました。お客様は以前の最低 100 リクエストと比較して、評価ウィンドウ毎に最低で 10 リクエストから、レートベースルールを構成できるようになりました

多くの変更が導入されましたが、あなたがすでによく知っている概念と用語は同じままです。以前の API は AWS WAF Classic にリネームされました。AWS WAF Classic の下で作成されたリソースは、新しい AWS WAF と互換性がないことに注意してください。

Web ACL キャパシティユニットについて

Web ACL キャパシティユニット (WCU) は、2019 年 11 月に AWS WAF に導入された新しい概念です。WCU は Web ACL に関連付けられたルールを実行するために、必要な動作リソースを計算および制御するために使用される測定値です。WCU は Web ACL に追加できるルールの数を視覚化および計画するのに役立ちます。Web ACL が使用する WCU の数は、追加するルールステートメントによって異なります。各 Web ACL の最大 WCU は 1,500 であり、ほとんどのユースケースで十分な量です。WCU がどのように機能するか、各タイプのルールステートメントがどのように WCU を消費するかを十分に理解されておくことをお勧めします。

新しいAWS WAFへの移行を計画します

AWS WAF Classic から新しい AWS WAF に移行するために役立つ新しい API とウィザードを発表しました。AWS WAF Classic の下で Web ACL を解析し、展開した新しい AWS WAF の下に同等の Web ACL を作成する CloudFormation テンプレートを生成します。このセクションでは、ウィザードを使用して移行を計画する方法について説明します。

始める前に知っておくべきこと

最初に、Migration ウィザードは既存の Web ACL を調べます。Web ACL に関連付けられた変換ルール、IPセット、正規表現パターンセット、文字列マッチフィルター、およびアカウント所有のルールグループを調査して記録します。ウィザードを実行しても、既存の Web ACL の構成またはその Web ACL に関連するリソースを変更・削除することはありません。終了すると、新しい AWS WAF で使用するために変換された同等の Web ACL、ルールセット、フィルター、およびグループを含む CloudFormation テンプレートが S3 バケット内に生成されます。新しい AWS WAF で Web ACL を再現するには、テンプレートを手動で展開する必要があります。

次の制限に注意してください。

  • 同じアカウントにある AWS WAF Classic のリソースのみが移行されます
  • IP セットや正規表現パターンセットなど、共有リソースを参照する複数の Web ACL を移行すると、新しい AWS WAF の下で複製されます
  • レートベースのルールに関連する条件は引き継がれません。移行が完了したら、ルールと条件を手動で再作成してください
  • AWS マーケットプレイスで入手したマネージドルールは引き継がれません。一部のパートナーは、新しい AWS WAF で購読できる同等のマネージドルールを用意しています
  • Web ACL との紐付けの設定は引き継がれません。これは意図的に行われ、移行が本番環境に影響を与えないようにしました。すべてが正しく移行されていることを確認したら、Web ACL をリソースに再度紐付けてください
  • Web ACL のログはデフォルトで無効になります。切り替える準備ができたら、ロギングを再度有効化してください
  • CloudWatch アラームを設定している場合は引き継がれません。 Web ACL が再作成されたら、再度アラームをセットアップする必要があります

Migration ウィザードを使用して AWS WAF のセキュリティオートメーションを移行できますが、バックグラウンドで使用される Lambda 関数を変換しないためお勧めしません。代わりに、新しいソリューション(バージョン 3.0 以降)を再配置します。こちらは新しい AWS WAF と互換性があるように更新されています。

パートナーマネージドルールとのマッピング

AWS マーケットプレイスのパートナーマネージドルールを AWS WAF Classic で使用するお客様のために、一部のセラーは新しい AWS WAF で同等のマネージドルールグループをリリースしています。移行中、次のマッピングガイダンスを使用して、新しい環境でこれらに再登録する必要があります

他のルールセットについては、AWS マーケットプレイスのセラーに新しい AWS WAF での提供を確認してください。移行には手動での対応が必要ですが、新しい AWS WAF は、より堅牢でスケーラブルで管理可能なソリューションを提供します。

AWS Firewall Manager と Migration ウィザードについて

Migration API とウィザードの現在のバージョンは、AWS Firewall Manager が管理するルールグループを移行しません。Firewall Manager が管理する Web ACL でウィザードを使用する場合、関連するルールグループは引き継がれません。ウィザードを使用して Firewall Manager が管理する Web ACL を移行する代わりに、新しい AWS WAF のルールグループを再作成し、既存のポリシーを新しいポリシーに置き換えることができます。

注意 :過去には、ルールグループは Firewall Manager の下に存在していた概念でした。ただし最新の変更により、AWS WAF の下にルールグループを移動しました。機能は同じままです

新しい AWS WAFに移行する

Web ACL を AWS WAF Classic から新しい AWS WAF に移行するために、Migration ウィザードを使用して実行可能な AWS CloudFormation テンプレートを作成します。このテンプレートは、AWS WAF ルールと対応するエンティティの新しいバージョンを作成するために使用されます。

1.新しい AWS WAF コンソールから、 Switch to AWS WAF Classic を選択して AWS WAF Classic に移動します。ウインドウの上部にメッセージボックスがあります。メッセージボックスの migration wizard のリンクを選択して、移行プロセスを開始します

図1:Migration ウィザードを開始

2. 移行するWeb ACLを選択します

図2:移行する Web ACL を選択

3. Migration ウィザード用の新しい S3 バケットを指定して、生成する AWS CloudFormation テンプレートを保存します。S3 バケット名は接頭辞 AWS-WAF-Migration- から始める必要があります。例えば AWS-WAF Migration-helloworld のように名前を付けます。デプロイするリージョンにテンプレートを保存します。例えば us-west-2 に Web ACL がある場合、us-west-2 に S3 バケットを作成し、Stack を us-west-2 にデプロイします。

Auto apply the bucket policy required for migration を選択して、API が S3 バケットにアクセスするために必要な権限を構成するために、移行に必要なバケットポリシーを適用します。

移行できないルールを処理する方法を選択してください。Exclude rules that can’t be migrated(移行できないルールを除外する)Stop the migration process if a rule can’t be migrated(ルールを移行できない場合は移行プロセスを停止する)のどちらかを選択します。ウィザードがルールを移行する能力は、前述の WCU 上限の影響を受けます。

図3:移行オプションを構成

注意:必要に応じて次のコードを実行して、必要なアクセス許可を構成するために、以下のポリシーで手動で S3 バケットをセットアップできます。これを行う場合は Use the bucket policy that comes with the S3 bucket(S3 バケットに付属するバケットポリシーを使用する)を選択します。<bucket_name> および <customer_account_id> をあなたの情報に置き換えることを忘れないでください

全ての AWS リージョン(waf-regional)の場合:


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "apiv2migration.waf-regional.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::<BUCKET_NAME>/AWSWAF/<CUSTOMER_ACCOUNT_ID>/*"
        }
    ]
}
JSON

Amazon CloudFront(waf)の場合:


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "apiv2migration.waf.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::<BUCKET_NAME>/AWSWAF/<CUSTOMER_ACCOUNT_ID>/*"
        }
    ]
}
JSON

4. 構成を確認し Start creating CloudFormation template を選択して、移行を開始します。AWS CloudFormation テンプレートを作成するには、Web ACL の複雑さによりますが、約 1分ほどかかります

図4:CloudFormation テンプレートを作成

5. 完了したら、生成されたテンプレートファイルを確認して、そうしたい場合は変更することができます。(例えばルールを追加することができます)続行するには Create CloudFormation stack(CroudFormation スタックの作成)を選択します。

図5:テンプレートを確認

6. AWS CloudFormation コンソールを使用して、Migration ウィザードによって作成された新しいテンプレートをデプロイします。 Prepare template から Template is ready を選択します。Template source では Amazon S3 URL を選択します。デプロイする前に、テンプレートをダウンロードしてレビューして、リソースが期待通りに移行されていることを確認することをお勧めします。

図6:スタックを作成

7. Next を選択し、ウィザードの先に進みスタックを展開します。正常に作成されたら、新しい Web ACL を確認してリソースに関連付けることができます。

図7:移行を完了

移行後の考慮事項

移行が正しく完了したことを確認した後、新しい AWS WAF 機能のいくつかを活用するために構成を再検討することをお勧めします。

例えばアプリケーションのセキュリティを改善するために、Web ACL に AWS Managed Rule を追加することを検討してください。AWS Managed Rules は 3 つの異なるタイプのルールグループを備えています。

  • ベースライン
  • ユースケース別
  • IPレピュテーションリスト

ベースラインルールグループは、悪意のある入力がアプリケーションに入力される前に停止したり、管理ページへのアクセスを防ぐのに役立つなど、さまざまな脅威に対する一般的な保護を提供します。ユースケース別のルールグループは、多くの異なるユースケースと環境に追加の保護を提供し、IP レピュテーションリストはクライアントのソース IP に基づいて脅威インテリジェンスを提供します。

また、古いルールの一部を再検討し、ルールを書き換えたり古いルールを削除したりすることで、最適化することを検討するべきです。例えば OWASPトップ 10 Web アプリケーションの脆弱性ホワイトペーパー から AWS CloudFormation テンプレートを展開してルールを作成した場合、AWS Managed Rules に置き換えることを検討するべきです。ホワイトペーパー内で見つかった概念は依然として適用されており、独自のルールを書くのに役立つ場合がありますが、テンプレートによって作成されたルールは、AWS Managed Rule に置き換わっています。

JSON を使って新しい AWS WAF で独自のルールを書くことについては、Protecting Your Web Application Using AWS Managed Rules for AWS WAF ウェビナーをご視聴ください。それに加えて、サンプル JSON/YAML を参照することができます。

移行後に CloudWatch メトリクスを再訪し、必要に応じてアラームを設定します。アラームは Migration API によって引き継がれておらず、メトリクス名も変更された可能性があります。また、ロギングの構成を再度有効にする必要があり、以前の Web ACL で持っていた可能性のあるフィールドの編集も必要です。

最後に、この時間を使用してアプリケーションチームと協力し、セキュリティポスチャを確認してください。アプリケーションによって頻繁に解析されているフィールドを調べ、それに応じて入力をサニタイズするルールを追加します。アプリケーションのビジネスロジックがそれらを処理できなかった場合、これらのケースをキャッチするためのエッジケースを確認し、ルールを追加します。また、リソースアソシエーションを新しい Web ACL に変更する際に、少し混乱がある可能性があるため、スイッチするときにアプリケーションチームと調整する必要があります。

AWS WAF を使用してコスト効率の高い Web アプリケーションを保護するための詳細については、Cost-effective ways for securing your web applications using AWS WAF のブログをチェックしてください。

結論

この投稿が AWS WAF Classic から、新しい AWS WAF への移行を計画するのに役立つことを願っています。 AWS Managed Rule などの新しい拡張機能を備えており、独自のルールを作成する柔軟性を提供するため、新しいAWS WAFエクスペリエンスを探索することをお勧めします。

このブログは「Migrating your rules from AWS WAF Classic to the new AWS WAF」という記事の翻訳となります。

翻訳は Senior Solutions Architect の森が担当しました。