![【Security Hub修復手順】[Cognito.4] Cognito ユーザープールでは、カスタム認証の完全な関数強制モードで脅威保護を有効にする必要があります](https://devio2024-media.developers.io/image/upload/f_auto,q_auto,w_3840/f_auto,q_auto/v1790871196/eyecatch/wr309ednrjrbdx9mtsnl.png)
【Security Hub修復手順】[Cognito.4] Cognito ユーザープールでは、カスタム認証の完全な関数強制モードで脅威保護を有効にする必要があります
こんにちは!コンサルティング部のみゃんです。
皆さん、お使いのAWS環境のセキュリティチェックはしていますか?
本記事では、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修復手順をご紹介します。
本記事の対象コントロール
[Cognito.4] Cognito ユーザープールでは、カスタム認証の完全な関数強制モードで脅威保護を有効にする必要があります
[Cognito.4] Cognito user pools should have threat protection activated with full function enforcement mode for custom authentication
前提条件
本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。
AWS Security Hubの詳細についてはこちらのブログをご覧ください。
対象コントロールの説明
このコントロールは、Cognitoユーザープールで脅威保護が有効になっており、カスタム認証の強制適用モードが「フル機能」に設定されているかをチェックします。脅威保護が無効の場合、またはカスタム認証の強制適用モードが「フル機能」以外(「監査のみ」「強制なし」)の場合に、このコントロールは失敗します。
脅威保護(旧称: 高度なセキュリティ機能)は、ユーザープールへの不審なサインインを検知し、自動で対処する機能です。サインイン要求の位置情報やデバイス情報からリスクレベルを判定し、リスクレベルに応じてサインインのブロックやMFAの要求を行います(アダプティブ認証)。
カスタム認証とは、カスタムチャレンジLambdaトリガーを使ったサインイン方式で、InitiateAuthまたはAdminInitiateAuthのAuthFlowにCUSTOM_AUTHを指定します。マネージドログインではカスタム認証を利用できません。ユーザー名・パスワードによる標準認証の脅威保護は、別コントロールのCognito.1でチェックされます。標準認証とカスタム認証の強制適用モードは、それぞれ独立して設定できます。
カスタム認証の脅威保護が無効、または「監査のみ」の場合、不審なIPアドレスや普段と異なるデバイスからのサインインを検知しても、脅威保護による自動ブロックは行われません。本番環境では、カスタム認証の利用状況やリスク許容度を踏まえ、脅威保護を有効化するか検討してください。なお、脅威保護はアカウント乗っ取りのリスク低減を支援する機能であり、完全な防止を保証するものではありません。
脅威保護を利用するには、ユーザープールの機能プランを「Plus」にする必要があります。Plusプランは月間アクティブユーザー(MAU)単位で追加の料金が発生します。非本番環境では、コストとリスクを比較し、組織の方針に沿って対応要否を判断してください。本番環境との設定差を抑えたい場合は、非本番環境でも有効化を検討してください。
修復手順
コントロールの確認方法
- Security Hubコンソールを開く
- 左メニューから「検出結果」を選択
- フィルターで対象のコンプライアンスセキュリティコントロール ID「Cognito.4」を検索

- 検出結果の詳細から、対象のユーザープール名(リソースID)を確認する
ステークホルダーに確認
脅威保護を「フル機能」にすると、リスクがあると判定されたサインインに自動で対処するようになり、利用者がサインインできなくなる場合があります。修復を行う前に、以下の点を確認してください。
- 機能プランをPlusに変更することによる料金の増加を許容できるか。対象ユーザープールのMAU数をもとに見積もる
- 対象ユーザープールでカスタム認証(
CUSTOM_AUTH)を実際に使用しているか。使用している場合は、カスタム認証を利用しているアプリケーションの範囲と、利用者への周知方法 - 「監査のみ」で一定期間運用してから「フル機能」に切り替えるか。AWSは、利用パターンを学習させるために2週間以上「監査のみ」で運用してから「フル機能」に切り替えることを推奨しています
- リスクレベルごとの自動対応の内容。アダプティブ認証で「Cognitoのデフォルト」を選択すると、すべてのリスクレベルでサインインがブロックされ、ユーザーへの通知は行われません
- 自動対応で「MFAを要求」を使う場合、MFAの強制設定を「任意」にできるか。アダプティブ認証を利用する場合、ユーザープールのMFA設定を『任意』にする必要があります。特に『MFAを要求』の自動対応を使う場合は、利用者がMFAを登録・利用できることも確認してください。
- ユーザーへのEメール通知を使う場合、Amazon SESの検証済みIDを用意できるか
修復手順
ここでは、Plusプランへの切り替えが済んでいないユーザープールを想定して記載します。すでにPlusプランの場合は手順3〜5を省略してください。
- Amazon Cognitoコンソールを開く
- 左メニューから「ユーザープール」を選択し、対象のユーザープールを選択する

- 「設定」メニューを選択し、「機能プラン」の「機能プランを変更」を選択する

- 「Plus」を選択する
- 「変更を保存」を選択する

- 「脅威保護」メニューを選択し、「有効化」を選択する

- 「標準認証とカスタム認証」タブを選択し、「編集」を選択する

- 「カスタム認証強制適用モード」で「フル機能」を選択する

- 「アダプティブ認証」で、リスクレベルごとの自動対応を設定し、「変更を保存」する。「Cognitoのデフォルト」を選択すると、すべてのリスクレベルでサインインがブロックされる

修復確認
設定後、ユーザープールの「脅威保護」メニューで、カスタム認証の強制適用モードが「フル機能」になっていることを確認します。

AWS CLIでも確認できます。
aws cognito-idp describe-user-pool \
--user-pool-id <ユーザープールID> \
--region <リージョン> \
--query 'UserPool.{UserPoolTier:UserPoolTier,UserPoolAddOns:UserPoolAddOns}'
UserPoolTierがPLUS、UserPoolAddOns.AdvancedSecurityAdditionalFlows.CustomAuthModeがENFORCEDになっていれば設定は完了しています。
修復後、Security Hubで検出結果が「PASSED」になることを確認します。

最後に
今回は、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修復手順をご紹介しました。
コントロールを修正して、お使いのAWS環境のセキュリティをパワーアップさせましょう!
最後までお読みいただきありがとうございました!どなたかのお役に立てれば幸いです。
以上、みゃんでした!





