はじめに
AWSを使用したWebアプリの運用を開始して数日たったある日、
Amazon Web Services (AWS) から「CognitoのManaged LoginでWAFが適用されない」という通知メールが届きました。(以下参照)
We are contacting youbecause you have at least one Amazon Cognito user pool in your account with both Managed Login [1] and AWS Web Application Firewall (WAF) [2] enabled. With this configuration enabled, please note that WAF integration applies to your federation endpoints [3], however requests to Managed Login pages will not be processed by WAF.
If you require WAF support for your signup and login pages, you can enable Hosted UI (classic) [4]. You can find more information on configuring Hosted UI (classic) for your user pool in the Cognito Developer Guide [2].
Your impacted Amazon Cognito user pool(s) are listed in "Affected resources" tab of the AWS Health Dashboard.
If you have questions or concerns, please contact AWS Support [5].
[1] https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-managed-login.html
[2] https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-waf.html
[3] https://docs.aws.amazon.com/cognito/latest/developerguide/federation-endpoints.html
[4] https://docs.aws.amazon.com/cognito/latest/developerguide/hosted-ui-classic-branding.html
[5] https://aws.amazon.com/support
要約すると、Managed Loginを利用している場合、WAFによる保護が適用されず、セキュリティ上のリスクが生じる可能性があるという内容です。
AWS WAF(Web Application Firewall)は、不正アクセスや攻撃を防ぐために重要な役割を果たします。特に、ログインページやユーザー登録ページなど、外部に公開されるエンドポイントの保護には不可欠です。
今回の通知では、WAFによる保護を必要とする場合、Hosted UI (classic)を有効化することが推奨されています。以下で、問題点の詳細と解決策を説明します。
問題の詳細
AWSの通知によると、以下の点が問題として挙げられています。
・Managed Login のページ(ユーザーログインやサインアップのインターフェース)
にはWAFの保護が適用されない。
・Cognitoの Federation Endpoints(例えばOIDCやSAMLを使用する場合)は
WAFで保護される。
AWSコンソールで影響を受けるリソースを確認する手順は以下の通りです。
- AWSマネジメントコンソールにログイン
- 上部メニューの [Health Dashboard] をクリック
- [Affected resources] タブを確認
- 対象となるCognito User Poolがリストされています
解決方法
①マネージドログインの設定を削除し、ログイン画面を自作する(当方はこっちで解決)
②ホストされた UI (クラシック)を有効化する
ホストされた UI (クラシック)の有効化手順
実際にこちらの手順を使用したわけではありませんが、解決するにはこうだろうという手順を下記示します。(GUIを使用した設定手順です。)
-
AWSマネジメントコンソールにログイン
https://aws.amazon.com/ にアクセスし、AWSアカウントにログインします。 -
Cognitoを開く
サービス一覧から Cognito を選択。
ユーザープール を選択し、対象のユーザープールをクリックします。 -
左メニューから [ブランディング] ⇒ [マネージドログイン] をクリック
「ホストされた UI (クラシック)」の設定を見つけ、必要な設定を有効化します。
必要に応じて独自ドメインまたはAWSが提供するデフォルトドメインを設定します。 -
アプリケーションクライアントの設定を確認・編集
左メニューの [アプリケーションクライアント] をクリックします。
表示されるアプリケーションクライアント名をクリックします。
画面右上の [編集] ボタンをクリックします。
必要なOAuthフロー(例: Authorization code grant)を有効化し、スコープ(例: email, openid)を設定します。 -
UIの動作確認
左メニューの [ドメイン名] で確認できるURLをコピーします。
URLをブラウザで開き、ログインやサインアップが正しく動作しているか確認します。
詳細な設定方法は AWS公式ドキュメント を参照してください。
まとめ
Hosted UI (classic) を有効化することで、ログインページにAWS WAFを適用し、セキュリティを強化できます。これにより、不正アクセスや攻撃のリスクを軽減することが可能です。
<今後注意すべき点>
Hosted UIを使用する場合、外観のカスタマイズやリダイレクトURIの設定に注意してください。
IAMロールやWAFのルールセットを適切に設定し、運用を継続的に見直すことが重要です。
参考リンク
AWS Cognito Managed Login
AWS Cognito Hosted UI (classic)
AWS Support