AWS WAF
概要 WAFを用いた柔軟なIPアドレス制限の仕組みを、AWS CDKによって構築してみました。
概要 AWS CDKを使っていて、CDKが提供するバリデーションのメソッドがあったため使ってみました。
概要 AWS WAFのログで、以下を満たすようにCloudFormationで構築します。 アクセスのブロック時にのみログ出力する 料金節約やログの視認性のため ヘッダーなどの情報をマスキングする トークンなどの情報を隠すため
AWS WAFとCloudFrontのカスタムエラーレスポンス機能でWebのメンテナンスページを実現する方法は有名ですが、その仕組みを考えてみたところ「あれ・・・?なぜだ・・・?」となりました。
CloudFrontのカスタムエラーレスポンス機能を使ってメンテナンスページを表現する方法が有名ですが、WAFのカスタムレスポンス機能のみでも実現可能です。
メンテナンスの際に、手軽にAPIやフロントのメンテナンスモードを切り替える仕組みが欲しかったので作りました。 具体的には、IP制限やメンテナンス用のレスポンス定義を、スクリプトで切り替えられるようになります。
WAFをCloudFormationで作成してIP制限を行いたいが、IPリストの増減のたびにymlファイルを変更したくない! ということで、それを満たすような作り方をしました。
CloudFrontのカスタムエラーレスポンス機能とAWS WAFと連携することで、メンテナンスページを手軽に表示することができます。
2021年03月にリリースされたAWS WAF v2のカスタムレスポンス機能を使って、APIから「メンテナンス中」の旨を返すようなメンテナンスモードを実現してみました。
まとめ 方法①:Cognitoアドバンスドセキュリティ 「0.0.0.0/0」の代わりに「0.0.0.0/1」+「128.0.0.0/1」 IPv6も対応されました IP制限のためだけには割高感 ※こちらは想定する挙動にならなかったため、方法から外します。(後述) 方法②:Cognito認証前Lamb…