AWS AmplifyにWAF統合(プレビュー)が追加されました!

こんにちは、西村です。

AWS AmplifyにWAF統合(プレビュー)が追加され、従来のCloudFront設定が不要になりました!
これまではAmazon CloudFrontをカスタマイズして対応していたWAFの設定やIP制限が、Amplifyの設定画面から直接管理できるようになりました!🎉

遅ればせながら有効化してみたのでその手順などご紹介します!

従来の課題: CloudFrontを用いたWAFの設定

これまでは、AWS Amplifyでホスティングしているアプリケーションに対してWAFやIP制限を適用するために、以下の手順を踏む必要がありました。

  1. Amplifyでアプリケーションをデプロイ。
  2. カスタムオリジンとしてAmplifyを指定したCloudFrontディストリビューションを作成。
  3. WAFルールを作成し、CloudFrontディストリビューションに関連付け。
  4. 必要に応じてSSL証明書(ACM)やエッジでの追加設定を構成。

※Gen1ではホスティング時にamplify add hostingでCloudFront + S3でのデプロイでCloudFrontのディストリビューションから設定ができましたね!

この方法は柔軟性がある一方で、設定手順が煩雑で、あまりスマートとは言えない部分がありました。

新機能: AmplifyのWAF統合

最新のAWS Amplifyのアップデートでは、WAFの統合が標準機能として追加されました。
この機能により、Amplifyアプリケーションのセキュリティを簡単に強化できるようになりました!

主なポイント

  • 簡単な設定: AWSコンソール上のAmplify設定画面から直接WAFルールを管理できます。
  • 高度なセキュリティ: SQLインジェクションやクロスサイトスクリプティング(XSS)などの一般的な攻撃を防御可能!
  • IP制限の適用: 特定のIPアドレスの許可やブロックを簡単に設定可能!

シンプルでいいですね!
Web Application Firewall Integration · Issue #36 · aws-amplify/amplify-hosting
※ほかのHostingの機能リクエストも興味深いものが多くあって、やり取りを見ているだけでも面白いですね~!

設定方法

ファイアウォールが追加されています!

既存のWAFを設定することもできるみたいですが、今回は新しく作ってみましょう。

※ファイアウォール保護のみであればそのままファイアウォールを追加で即座に追加されます。

amplifyapp.com へのアクセスを制限

これはdefault Amplify domainのアクセスをブロックしてくれるようですね。
カスタムドメインは事前に設定しておく必要がありそうです。

IPアドレス保護を有効化する

1.IPアドレス保護を有効化する

  • IPアドレス保護を有効に設定します。

2.アクションの選択

  • 許可: 指定したIPアドレスにのみアクセスを許可し、それ以外をブロックする場合に選択します。
  • ブロック: 指定したIPアドレスをブロックし、それ以外のIPアドレスにアクセスを許可する場合に選択します。

3.IPバージョンの選択

  • IPV4 または IPV6 のいずれかを選択します。

4.IPアドレスの入力

  • 許可またはブロックするIPアドレスをCIDR形式で1行に1つずつ入力します。

国の保護を有効にする

1.IPアドレス保護を有効化する

  • 国の保護を有効に設定します。

2.アクションの選択

  • 特定の国を許可してその他をブロックしたい場合は「許可」を選択します。
  • 特定の国をブロックしてその他を許可したい場合は「ブロック」を選択します。

3.国の選択

  • リストから許可またはブロックする国を選択します。

リストから選ぶだけなので簡単ですね!日本からのみのアクセス許可であればAllowed countriesにJapanを設定しましょう。

ファイアウォール プレビューの制限事項

便利なWAF統合機能ですが、現在はプレビュー版として提供されており、いくつか制限があるようです。

  1. CloudTrail統合の一部制限: WAF設定に関連する一部の管理イベントがCloudTrailログに表示されません。
  2. AWS Config統合の非対応: プレビュー期間中は、AWS Configとの統合は利用できません。
  3. 特定のリージョンでの非対応: 以下のオプトインリージョンでは現在利用できません:
    • アジアパシフィック (香港) (ap-east-1)
    • ヨーロッパ (ミラノ) (eu-south-1)
    • 中東 (バーレーン) (me-south-1)
  4. WAFコンソールでのリソース表示の制限: Amplifyに関連付けられたWAF設定は、AWS WAFコンソールの「関連付けられたAWSリソース」セクションに表示されません。ただし、AmplifyのGetApp APIを使用して関連付けを確認できます。

5.ファイアウォールの料金について

何やらページの一番下に気になる項目が。。。

翻訳してみると、


Firewall料金
プレビュー期間中
プレビュー期間中は、AWS WAFサービスによる利用ベースの料金のみが発生します。AWS WAFの料金は以下の通りです:
Web ACL:$5/月
ルール:1つあたり$1
最低料金として、1つのWeb ACLに2つのルールを設定した場合、$7/月が必要です。詳細はAWS WAFの料金ページをご参照ください。
一般提供(GA)後
ファイアウォール機能は、GA時に新しいAmplify Hostingの高度なティア(Advanced Tier)へのサブスクリプションが必要となります。このティアには、他の追加機能も含まれる予定です。
プレビュー期間中:ファイアウォールを有効にすると自動的にこの高度なティアに登録されますが、ファイアウォール機能がGAとなるまで追加料金は発生しません。
GA以降:いつでもファイアウォールを削除でき、GA後も料金は発生しません。
料金体系の詳細はGA時に公開されます。契約や前払いの投資は必要ありません。

つまり、プレビュー中は5ドル+1ルール1ドル、GA後は有料プラン(値段未発表)で、
今は試しても安く済むけど、正式リリース後は有料プランに切り替わる予定だから、その時点で使うかどうか決めてね、ということですね。

まとめ

AWS AmplifyのWAF統合機能のおかげで、Webアプリケーションのセキュリティ設定が大幅に簡略化されました!従来のCloudFrontを使用した手動設定に比べて、迅速かつ効率的にセキュリティを強化できる点が最大の魅力ですね!

GAが待ち遠しい&料金が気になりますね!

参考記事

https://github.com/aws-amplify/amplify-hosting/issues/36

Firewall support for hosted sites – AWS Amplify Hosting