翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
アダプティブ認証の使用
アダプティブ認証では、リスクレベルの上昇に対応して、疑わしいサインインをブロックする、または 2 番目の要素認証を追加するようにユーザープールを設定できます。Amazon Cognito はサインインの試行ごとに、サインインリクエストが侵害されたソースからのものである可能性についてリスクスコアを生成します。このリスクスコアは、アプリケーションが提供するデバイスとユーザーの要因、および Amazon Cognito がリクエストから派生するその他の要因に基づいています。Amazon Cognito によるリスク評価に寄与する要因には、IP アドレス、ユーザーエージェント、他のサインイン試行からの地理的距離などがあります。アダプティブ認証は、Amazon Cognito がユーザーのセッションでリスクを検出し、ユーザーがまだ MFA メソッドを選択していない場合に、ユーザープール内のユーザーに対して多要素認証 (MFA) を有効にする、または多要素認証 (MFA) を要求することができます。ユーザーに MFA を有効にすると、アダプティブ認証の設定方法にかかわらず、認証中に必ず 2 つ目の要素を提供または設定するように求めるチャレンジが常に表示されます。ユーザーの観点から見ると、アプリは MFA の設定を支援し、また、オプションとして、Amazon Cognito では、ユーザーが追加の要素を設定するまで、ユーザーが再度サインインできないようにすることもできます。
Amazon Cognito は、サインイン試行、試行のリスクレベル、および失敗したチャレンジに関するメトリクスを Amazon CloudWatch にパブリッシュします。詳細については、「脅威保護メトリクスの表示」を参照してください。
アダプティブ認証をユーザープールに追加するには、「脅威保護による高度なセキュリティ」を参照してください。
アダプティブ認証の概要
Amazon Cognito コンソールの脅威保護メニューから、さまざまなリスクレベルで実行するアクションやユーザーへの通知メッセージのカスタマイズなど、アダプティブ認証の設定を選択できます。グローバル脅威保護設定をすべてのアプリケーションクライアントに割り当てることはできますが、クライアントレベルの設定を個々のアプリケーションクライアントに適用できます。
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 脅威保護に送信します。 UserContextData コンテキストデータ収集ライブラリは AWS SDKs に含まれています。詳細については、「Amazon Cognito の認証と認可を、ウェブアプリケーションとモバイルアプリケーションに統合する」を参照してください。Plus 機能プランContextData
がある場合は、 を送信できます。詳細については、「脅威保護の設定」を参照してください。
アプリケーションサーバーから以下の Amazon Cognito 認証 API オペレーションを呼び出す場合、ContextData
パラメータにユーザーのデバイスの IP を渡します。また、サーバー名、サーバーパス、およびエンコードされたデバイスフィンガープリントデータを渡します。
Amazon Cognito の認証されていない API オペレーションを呼び出すと、Amazon Cognito 脅威保護UserContextData
に送信できます。このデータには、EncodedData
パラメータのデバイスフィンガープリントが含まれます。また、次の条件を満たす場合、UserContextData
に IpAddress
パラメータを送信できます。
-
ユーザープールは Plus 機能プランの対象です。詳細については、「ユーザープール機能プラン」を参照してください。
-
アプリクライアントにはクライアントシークレットがあります。詳細については、「アプリケーションクライアントによるアプリケーション固有の設定」を参照してください。
-
アプリクライアントで [Accept additional user context data] (追加のユーザーコンテキストデータを受け入れる) をアクティブ化しました。詳細については、「 追加のユーザーコンテキストデータの受け入れ (AWS Management Console)」を参照してください。
アプリは、以下の Amazon Cognito の認証されていない API オペレーションで、UserContextData
パラメータにエンコードされたデバイスフィンガープリントデータとユーザーのデバイスの IP アドレスを入力できます。
追加のユーザーコンテキストデータの受け入れ (AWS Management Console)
ユーザープールは [Accept additional user context data] (追加のユーザーコンテキストデータを受け入れる) 機能をアクティブ化すると、UserContextData
パラメータで IP アドレスを受け入れます。次の場合は、この機能をアクティブ化する必要はありません。
-
ユーザーは、AdminInitiateAuth のような認証された API オペレーションでのみサインインし、
ContextData
パラメータを使用します。 -
認証されていない API オペレーションから Amazon Cognito 脅威保護にデバイスのフィンガープリントのみを送信する必要がありますが、IP アドレスは送信しません。
Amazon Cognito コンソールでアプリクライアントを次のように更新し、追加のユーザーコンテキストデータのサポートを追加します。
-
Amazon Cognito コンソール
にサインインします。 -
ナビゲーションペインで [ユーザープールの管理] を選択してから、編集するユーザープールを選択します。
-
アプリクライアントメニューを選択します。
-
アプリケーションクライアントを選択または作成します。詳細については、「ユーザープールのアプリクライアントの設定」を参照してください。
-
[App client information] (アプリのクライアント情報) コンテナから [Edit] (編集) を選択します。
-
アプリクライアントの [Advanced authentication settings] (詳細な認証設定) で、[Accept additional user context data] (追加のユーザーコンテキストデータを受け入れる) を選択します。
-
[Save changes] (変更の保存) をクリックします。
Amazon Cognito API でユーザーコンテキストデータを受け入れるようにアプリクライアントを設定するには、CreateUserPoolClient または UpdateUserPoolClient リクエストで EnablePropagateAdditionalUserContextData
を true
に設定します。ウェブまたはモバイルアプリで脅威保護を使用する方法については、「」を参照してくださいアプリケーションにおける脅威保護のためのデータ収集。アプリがサーバーから 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
リソース
-
AWS Amplify Android 用 SDK: GetUserContextData
-
AWS Amplify SDK for iOS: userContextData
-
JavaScript: amazon-cognito-advanced-security-data.min.js
ユーザーイベント履歴の表示とエクスポート
Amazon Cognito は、脅威保護を有効にすると、ユーザーによって各認証イベントのログを生成します。デフォルトでは、Amazon Cognito コンソールのユーザーメニューまたは AdminListUserAuthEvents API オペレーションを使用してユーザーログを表示できます。また、これらのイベントを、CloudWatch Logs、Amazon S3、Amazon Data Firehose などの外部システムにエクスポートすることもできます。エクスポート機能を使用すると、アプリケーション内のユーザーアクティビティに関するセキュリティ情報について、独自のセキュリティ分析システムにアクセスさせることが容易になります。
ユーザーイベント履歴の表示 (AWS Management Console)
ユーザーのサインイン履歴を表示するには、Amazon Cognito コンソールのユーザーメニューからユーザーを選択します。Amazon Cognito は、ユーザーイベント履歴を 2 年間保持します。

各サインインイベントにはイベント ID があります。イベントには、場所、デバイスの詳細、およびリスク検出結果など、対応するコンテキストデータもあります。
また、イベント ID を Amazon Cognito がイベントを記録した時点で発行したトークンと関連付けることができます。ID とアクセストークンには、ペイロードにこのイベント ID が含まれます。Amazon Cognito はまた、更新トークンの使用を元のイベント ID に関連付けます。元のイベント ID は、Amazon Cognito トークンの発行につながったサインインイベントのイベント ID まで追跡できます。システム内のトークンの使用は、特定の認証イベントまで追跡できます。詳細については、「ユーザープール JSON ウェブトークン (JWT) の理解」を参照してください。
ユーザーイベント履歴の表示 (API/CLI)
Amazon Cognito API オペレーション AdminListUserAuthEvents または admin-list-user-auth-events の AWS Command Line Interface (AWS CLI) を使用して、ユーザーイベント履歴をクエリできます。
ユーザー認証イベントのエクスポート
ユーザーイベントを脅威保護から外部システムにエクスポートするようにユーザープールを設定します。サポートされている外部システムである Amazon S3、CloudWatch Logs、Amazon Data Firehose は、送信または取得するデータの AWS 請求にコストを追加する場合があります。詳細については、「脅威保護ユーザーアクティビティログのエクスポート」を参照してください。
イベントフィードバックを提供します
イベントフィードバックは、リアルタイムでリスクの評価に反映され、リスク評価アルゴリズムを経時的に向上させます。ユーザーは、Amazon Cognito コンソールおよび API を使用して、サインイン試行の妥当性に関するフィードバックを提供できます。
注記
イベントフィードバックは、Amazon Cognito が同じ特性を持つ後続のユーザーセッションに割り当てるリスクレベルに影響します。
Amazon Cognito コンソールで、ユーザーメニューからユーザーを選択し、イベントフィードバックの提供を選択します。イベントの詳細を確認して、[Set as valid] (有効として設定) または [Set as invalid] (無効として設定) できます。
コンソールでは、ユーザーメニューのユーザー詳細にサインイン履歴が一覧表示されます。エントリを選択すると、イベントを有効または無効としてマークできます。また、ユーザープール API オペレーション AdminUpdateAuthEventFeedback および AWS CLI コマンド admin-update-auth-event-feedback を使用してフィードバックを提供することもできます。
Amazon Cognito コンソールで [Set as valid] (有効として設定) を選択するか、API で valid
の FeedbackValue
値を指定するとき、Amazon Cognito がある程度のリスクを評価したユーザーセッションを信頼することを Amazon Cognito に伝えます。Amazon Cognito コンソールで [Set as invalid] (無効として設定) を選択するか、API で invalid
の FeedbackValue
値を指定するとき、ユーザーセッションを信頼しないこと、または Amazon Cognito が十分に高いリスクレベルを評価したとは考えないことを Amazon Cognito に伝えます。
通知メッセージの送信
脅威に対する保護により、Amazon Cognito はリスクの高いサインイン試行をユーザーに通知できます。Amazon Cognito では、サインインが有効か無効かを示すリンクを選択するようユーザーに促すこともできます。Amazon Cognito はこのフィードバックを使用して、ユーザープールのリスク検出精度を向上させます。
[Automatic risk response] (自動リスク対応) セクションで、低、中、高のリスクケースに応じて [Notify Users] (ユーザーに通知) を選択します。

Amazon Cognito は、ユーザーが E メールアドレスを検証したかどうかに関係なく、E メール通知をユーザーに送信します。
通知 E メールメッセージをカスタマイズして、これらのメッセージのプレーンテキストと HTML の両バージョンを提供できます。E メール通知をカスタマイズするには、脅威保護設定で Adaptive 認証メッセージから E メールテンプレートを開きます。E メールテンプレートの詳細については、「メッセージテンプレート」を参照してください。