アダプティブ認証の使用 - Amazon Cognito

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

アダプティブ認証の使用

アダプティブ認証では、リスクレベルの上昇に対応して、疑わしいサインインをブロックする、または 2 番目の要素認証を追加するようにユーザープールを設定できます。Amazon Cognito はサインインの試行ごとに、サインインリクエストが侵害されたソースからのものである可能性についてリスクスコアを生成します。このリスクスコアは、デバイスとユーザー情報を含む要因に基づいています。アダプティブ認証は、Amazon Cognito がユーザーのセッションでリスクを検出し、ユーザーがまだ MFA メソッドを選択していない場合に、ユーザープール内のユーザーに対して多要素認証 (MFA) を有効にする、または多要素認証 (MFA) を要求することができます。ユーザーに MFA を有効にすると、アダプティブ認証の設定方法にかかわらず、認証中に必ず 2 つ目の要素を提供または設定するように求めるチャレンジが常に表示されます。ユーザーの観点から見ると、アプリは MFA の設定を支援し、また、オプションとして、Amazon Cognito では、ユーザーが追加の要素を設定するまで、ユーザーが再度サインインできないようにすることもできます。

Amazon Cognito は、サインイン試行、リスクレベル、失敗したチャレンジを Amazon に発行します CloudWatch。詳細については、「アドバンストセキュリティのメトリクスの表示」を参照してください。

アダプティブ認証をユーザープールに追加するには、「ユーザープールにアドバンストセキュリティを追加する」を参照してください。

アダプティブ認証の概要

アダプティブ認証の設定は、[App integration] (アプリケーションの統合) タブの [Advanced security] (アドバンスドセキュリティ) から選択でき、これには、異なるリスクレベルで実行するアクションの設定や、ユーザーへの通知メッセージのカスタマイズなどが含まれます。すべてのアプリクライアントにグローバルな高度なセキュリティ設定を割り当てることができますが、個々のアプリクライアントにはクライアントレベルの設定を適用できます。

Amazon Cognito アダプティブ認証は、各ユーザーセッションに「高」「中」「低」「リスクなし」のいずれかのリスクレベルを割り当てます。

[Enforcement method] (強制実行メソッド) を [Audit-only] (監査専用) から [Full-function] (完全な機能) に変更する場合は、選択肢を慎重に検討してください。リスクレベルに適用する自動応答は、Amazon Cognito が同じ特性を持つ後続のユーザーセッションに割り当てるリスクレベルに影響します。例えば、Amazon Cognito が最初にリスクが高いと評価したユーザーセッションに何もしないか、[Allow] (許可) を選択すると、Amazon Cognito では同様のセッションのリスクが低いと見なします。

リスクレベルごとに、以下のオプションから選択できます。

オプション

アクション

許可 ユーザーは、追加要素なしでサインインできます。
オプションの MFA 第 2 要素を設定しているユーザーは、サインインするために第 2 要素のチャレンジを完了する必要があります。SMS の電話番号と TOTP ソフトウェアトークンが利用可能な第 2 要素です。2 番目の要素が設定されていないユーザーは、1 つの認証情報のみでサインインできます。
MFA が必要 第 2 要素を設定しているユーザーは、サインインするために第 2 要素のチャレンジを完了する必要があります。Amazon Cognito は、第 2 要素が設定されていないユーザーのサインインをブロックします。
ブロック Amazon Cognito は、指定されたリスクレベルですべてのサインイン試行をブロックします。
注記

SMS を 2 番目の認証要素として使用するために電話番号を検証する必要はありません。

API リクエストへのユーザーデバイスおよびセッションデータの追加

API を使用してサインアップ、サインイン、パスワードのリセットを行う際に、ユーザーのセッションに関する情報を収集し、Amazon Cognito のアドバンストセキュリティに渡すことができます。この情報には、ユーザーの IP アドレスと一意のデバイス識別子が含まれます。

ユーザーと Amazon Cognito の間に、プロキシサービスやアプリケーションサーバーなど、中間ネットワークデバイスがある場合があります。ユーザーのコンテキストデータを収集して Amazon Cognito に渡すことで、アダプティブ認証がサーバーやプロキシではなく、ユーザーエンドポイントの特性に基づいてリスクを計算できます。クライアント側アプリが Amazon Cognito API オペレーションを直接呼び出す場合、アダプティブ認証は送信元 IP アドレスを自動的に記録します。ただし、デバイスのフィンガープリントも収集しない限り、user-agent などの他のデバイス情報は記録されません。

Amazon Cognito コンテキストデータ収集ライブラリを使用してこのデータを生成し、 ContextData および UserContextDataパラメータを使用して Amazon Cognito の高度なセキュリティに送信します。コンテキストデータ収集ライブラリは AWS SDKsに含まれています。詳細については、「Amazon Cognito のウェブアプリケーションとモバイルアプリケーションとの統合」を参照してください。ユーザープールでアドバンストセキュリティ機能をアクティブ化している場合、ContextData を送信できます。詳細については、「アドバンストセキュリティ機能を設定する」を参照してください。

アプリケーションサーバーから以下の Amazon Cognito 認証 API オペレーションを呼び出す場合、ContextData パラメータにユーザーのデバイスの IP を渡します。また、サーバー名、サーバーパス、およびエンコードされたデバイスフィンガープリントデータを渡します。

Amazon Cognito の認証されていない API オペレーションを呼び出すと、Amazon Cognito のアドバンスドセキュリティ機能に UserContextData を送信できます。このデータには、EncodedData パラメータのデバイスフィンガープリントが含まれます。また、次の条件を満たす場合、UserContextDataIpAddress パラメータを送信できます。

アプリは、以下の Amazon Cognito の認証されていない API オペレーションで、UserContextData パラメータにエンコードされたデバイスフィンガープリントデータとユーザーのデバイスの IP アドレスを入力できます。

追加のユーザーコンテキストデータの受け入れ (AWS Management Console)

ユーザープールは [Accept additional user context data] (追加のユーザーコンテキストデータを受け入れる) 機能をアクティブ化すると、UserContextData パラメータで IP アドレスを受け入れます。次の場合は、この機能をアクティブ化する必要はありません。

  • ユーザーは などの認証された API オペレーションでのみサインインしAdminInitiateAuth ContextDataパラメータを使用します。

  • 認証されていない API オペレーションから IP アドレスではなく、デバイスのフィンガープリントのみを Amazon Cognito のアドバンストセキュリティ機能に送信します。

Amazon Cognito コンソールでアプリクライアントを次のように更新し、追加のユーザーコンテキストデータのサポートを追加します。

  1. Amazon Cognito コンソールにサインインします。

  2. ナビゲーションペインで [ユーザープールの管理] を選択してから、編集するユーザープールを選択します。

  3. [App integration] (アプリケーションの統合) タブを選択します。

  4. [App clients and analytics] (アプリクライアントと分析) で、アプリクライアントを選択または作成します。詳細については、「ユーザープールのアプリクライアントの設定」を参照してください。

  5. [App client information] (アプリのクライアント情報) コンテナから [Edit] (編集) を選択します。

  6. アプリクライアントの [Advanced authentication settings] (詳細な認証設定) で、[Accept additional user context data] (追加のユーザーコンテキストデータを受け入れる) を選択します。

  7. [変更を保存] を選択します。

Amazon Cognito API でユーザーコンテキストデータを受け入れるようにアプリクライアントを設定するには、 CreateUserPoolClientまたは UpdateUserPoolClientリクエストtrueEnablePropagateAdditionalUserContextData を に設定します。ウェブまたはモバイルアプリからアドバンストセキュリティをアクティブ化する方法の詳細については、「アプリからユーザープールのアドバンストセキュリティを有効化する」を参照してください。アプリがサーバーから Amazon Cognito を呼び出すときに、クライアント側からユーザーコンテキストデータを収集します。 JavaScript SDK メソッド を使用する例を次に示しますgetData

var encodedData = AmazonCognitoAdvancedSecurityData.getData(username, userPoolId, clientId);

アダプティブ認証を使用するようにアプリを設計する場合は、最新の Amazon Cognito SDK をアプリに組み込むことをお勧めします。SDK の最新バージョンでは、デバイス ID、モデル、およびタイムゾーンなどのデバイスフィンガープリント情報を収集します。Amazon Cognito SDK の詳細については、「ユーザープール SDK のインストール」を参照してください。Amazon Cognito アドバンストセキュリティでは、アプリが正しい形式で送信したイベントにのみ保存され、リスクスコアが割り当てられます。Amazon Cognito がエラーレスポンスを返す場合は、リクエストに有効なシークレットハッシュが含まれていることと、IPaddress パラメータが、有効な IPv4 または IPv6 アドレスであることを確認します。

ContextData および UserContextData リソース

ユーザーイベント履歴の表示

注記

新しい Amazon Cognito コンソールでは、Users (ユーザー) タブよりイベント履歴が表示できます。

ユーザーのサインイン履歴を表示するには、Amazon Cognito コンソールの [Users] (ユーザー) タブでユーザーを選択できます。Amazon Cognito は、ユーザーイベント履歴を 2 年間保持します。

ユーザーイベント履歴

各サインインイベントにはイベント ID があります。イベントには、場所、デバイスの詳細、およびリスク検出結果など、対応するコンテキストデータもあります。Amazon Cognito API オペレーションAdminListUserAuthEventsまたは -admin-list-user-authevents の AWS Command Line Interface (AWS CLI) を使用して、ユーザーイベント履歴をクエリできます。

また、イベント ID を Amazon Cognito がイベントを記録した時点で発行したトークンと関連付けることができます。ID とアクセストークンには、ペイロードにこのイベント ID が含まれます。Amazon Cognito はまた、更新トークンの使用を元のイベント ID に関連付けます。元のイベント ID は、Amazon Cognito トークンの発行につながったサインインイベントのイベント ID まで追跡できます。システム内のトークンの使用は、特定の認証イベントまで追跡できます。詳細については、「ユーザープールでのトークンの使用」を参照してください。

イベントフィードバックを提供します

イベントフィードバックは、リアルタイムでリスクの評価に反映され、リスク評価アルゴリズムを経時的に向上させます。ユーザーは、Amazon Cognito コンソールおよび API を使用して、サインイン試行の妥当性に関するフィードバックを提供できます。

注記

イベントフィードバックは、Amazon Cognito が同じ特性を持つ後続のユーザーセッションに割り当てるリスクレベルに影響します。

Amazon Cognito コンソールで、[Users] (ユーザー) タブからユーザーを選択し、[Provide event feedback] (イベントフィードバックを送信) を選択します。イベントの詳細を確認して、[Set as valid] (有効として設定) または [Set as invalid] (無効として設定) できます。

コンソールでは、[Users and groups] (ユーザーとグループ) タブにサインイン履歴が表示されます。エントリを選択すると、イベントを有効または無効としてマークできます。また、ユーザープール API オペレーション AdminUpdateAuthEventFeedbackおよび AWS CLI コマンド admin-update-auth-event-feedback を通じてフィードバックを提供することもできます。

Amazon Cognito コンソールで [Set as valid] (有効として設定) を選択するか、API で validFeedbackValue 値を指定するとき、Amazon Cognito がある程度のリスクを評価したユーザーセッションを信頼することを Amazon Cognito に伝えます。Amazon Cognito コンソールで [Set as invalid] (無効として設定) を選択するか、API で invalidFeedbackValue 値を指定するとき、ユーザーセッションを信頼しないこと、または Amazon Cognito が十分に高いリスクレベルを評価したとは考えないことを Amazon Cognito に伝えます。

通知メッセージの送信

アドバンスドセキュリティ保護により、Amazon Cognito はユーザーにリスクの高いサインイン試行を通知できます。Amazon Cognito では、サインインが有効か無効かを示すリンクを選択するようユーザーに促すこともできます。Amazon Cognito はこのフィードバックを使用して、ユーザープールのリスク検出精度を向上させます。

[Automatic risk response] (自動リスク対応) セクションで、低、中、高のリスクケースに応じて [Notify Users] (ユーザーに通知) を選択します。

ユーザーに通知する

Amazon Cognito は、ユーザーが E メールアドレスを検証したかどうかに関係なく、E メール通知をユーザーに送信します。

通知 E メールメッセージをカスタマイズして、これらのメッセージのプレーンテキストと HTML の両バージョンを提供できます。E メール通知をカスタマイズするには、高度なセキュリティ設定の[Adaptive authentication messages] (アダプティブ認証メッセージ) から E メールテンプレートを開きます。E メールテンプレートの詳細については、「メッセージテンプレート」を参照してください。