AWS CloudTrail における Amazon Cognito ログイン - Amazon Cognito

AWS CloudTrail における Amazon Cognito ログイン

Amazon Cognito は、Amazon Cognito でユーザー、ロール、または AWS のサービスが実行したアクションを記録するサービスである AWS CloudTrail と統合されています。CloudTrail は、Amazon Cognito の API コールのサブセットをイベントとしてキャプチャし、これには Amazon Cognit コンソールと、Amazon Cognito API 操作へのコードコールからのコールが含まれます。証跡を作成する場合、Amazon Cognito のイベントを含めた CloudTrail イベントの Amazon S3 バケットへの継続的な配信を有効にすることができます。追跡を設定しない場合でも、CloudTrail コンソールの [Event history] (イベント履歴) で最新のイベントを表示できます。CloudTrail によって収集された情報を使用して、Amazon Cognito に対して行われたリクエスト、リクエスト元の IP アドレス、リクエスト者、リクエストが行われた日時、および追加の詳細を確認できます。

設定や有効化の方法など、CloudTrail の詳細については、「AWS CloudTrail ユーザーガイド」を参照してください。

特定の CloudTrail イベントに対する Amazon CloudWatch アラームを作成することもできます。例えば、ID プールの設定が変更された場合にアラームがトリガーされるように CloudWatch を設定できます。詳細については、「CloudTrail イベントの CloudWatch アラームの作成: 例」を参照してください。

Amazon Cognito が CloudTrail に送信する情報

CloudTrail は、AWS アカウント の作成時にオンになります。Amazon Cognito でサポートされているイベントアクティビティが発生すると、そのアクティビティは [Event history] (イベント履歴) で AWS のその他サービスのイベントと共に CloudTrail イベントに記録されます。最近のイベントは、AWSアカウントで表示、検索、ダウンロードできます。詳細については、「Viewing events with CloudTrail event history」(CloudTrail イベント履歴でのイベントの表示) を参照してください。

Amazon Cognito のイベントなどの AWS アカウントのイベントの継続的な記録については、証跡を作成します。CloudTrail の証跡がログファイルを Amazon S3 バケットに配信します。デフォルトでは、コンソールで証跡を作成すると、すべての リージョンに証跡が適用されます。証跡は、AWSパーティションのすべてのリージョンからのイベントをログに記録し、指定した Amazon S3 バケットにログファイルを配信します。さらに、CloudTrail ログで収集したイベントデータをより詳細に分析し、それに基づく対応するためにその他の AWS のサービスを設定できます。詳細については、次を参照してください。

各イベントまたはログエントリには、リクエストの生成者に関する情報が含まれます。同一性情報は次の判断に役立ちます。

  • リクエストが、ルートと IAM ユーザー認証情報のどちらを使用して送信されたか。

  • リクエストがロールまたはフェデレーションユーザーの一時的なセキュリティ認証情報を使用して行われたかどうか。

  • リクエストが別の AWS サービスによって行われたかどうか。

詳細については、「CloudTrail userIdentity エレメント」を参照してください。

AWS CloudTrail 内の機密データ

ユーザープールと ID プールはユーザーデータを処理するため、Amazon Cognito は CloudTrail イベントの一部のプライベートフィールドを値 HIDDEN_FOR_SECURITY_REASONS で非表示にします。Amazon Cognito がイベントに設定しないフィールドの例については、「Amazon Cognito イベントの例」を参照してください。Amazon Cognito は、パスワードやトークンなど、一般的にユーザー情報を含む一部のフィールドだけを非表示にします。Amazon Cognito は、API リクエスト内の非公開フィールドに入力された個人識別情報の自動検出やマスキングを行いません。

ユーザープールイベント

Amazon Cognito は、[User pool actions] (ユーザープールのアクション) ページにリストされているすべてのアクションを、イベントとして CloudTrail ログファイルに記録することをサポートします。Amazon Cognito は、ユーザープールイベントを管理イベントとして CloudTrail にログ記録します。

Amazon Cognito ユーザープール CloudTrail エントリの eventType フィールドから、アプリが Amazon Cognito ユーザープール API に対してリクエストを送信したのか、OpenID Connect、SAML 2.0、またはホストされた UI のリソースを提供するエンドポイントに対してリクエストを送信したのかがわかります。API リクエストには AwsApiCall の eventType があり、エンドポイントリクエストには AwsServiceEvent の eventType があります。

また、Amazon Cognito は次のホストされた UI リクエストをイベントとして CloudTrail にログ記録します。

CloudTrail でのホスト型 UI オペレーション
操作 説明
Login_GET, CognitoAuthentication ユーザーは ログインエンドポイント に認証情報を表示または送信します。
OAuth2_Authorize_GET, Beta_Authorize_GET ユーザーは 認可エンドポイント を表示します。
OAuth2Response_GET, OAuth2Response_POST ユーザーは IdP トークンを /oauth2/idpresponse エンドポイントに送信します。
SAML2Response_POST, Beta_SAML2Response_POST ユーザーは IdP SAML アサーションを /saml2/idpresponse エンドポイントに送信します。
Login_OIDC_SAML_POST ユーザーは、ログインエンドポイント でユーザー名を入力し、IdP identifier と一致させます。
Token_POST, Beta_Token_POST ユーザーは、認可コードをトークンエンドポイントに送信します。
Signup_GET, Signup_POST ユーザーは、サインアップ情報を /signup エンドポイントに送信します。
Confirm_GET, Confirm_POST ユーザーは、ホストされた UI で確認コードを送信します。
ResendCode_POST ユーザーは、ホストされた UI で確認コードの再送リクエストを送信します。
ForgotPassword_GET, ForgotPassword_POST ユーザーは、パスワードのリセットリクエストを /forgotPassword エンドポイントに送信します。
ConfirmForgotPassword_GET, ConfirmForgotPassword_POST ユーザーは、ForgotPassword リクエストを確認するコードを /confirmForgotPassword エンドポイントに送信します。
ResetPassword_GET, ResetPassword_POST ユーザーは、ホストされた UI で新しいパスワードを送信します。
Mfa_GET, Mfa_POST ユーザーは、ホストされた UI で多要素認証 (MFA) コードを送信します。
MfaOption_GET, MfaOption_POST ユーザーは、ホストされた UI で MFA の好みの方法を選択します。
MfaRegister_GET, MfaRegister_POST ユーザーは、MFA の登録時にホストされた UI で多要素認証 (MFA) コードを送信します。
Logout ユーザーは、/logout エンドポイントでサインアウトします。
SAML2Logout_POST ユーザーは、/saml2/logout エンドポイントでサインアウトします。
Error_GET ユーザーは、ホストされた UI でエラーページを表示します。
UserInfo_GET, UserInfo_POST ユーザーまたは IdP は、userInfo エンドポイント と情報を交換します。
Confirm_With_Link_GET ユーザーは、Amazon Cognito が E メールメッセージで送信したリンクに基づいて確認を送信します。
Event_Feedback_GET ユーザーは、高度なセキュリティ機能イベントに関するフィードバックを Amazon Cognito に送信します。
注記

ユーザー固有のリクエストについて、Amazon Cognito は CloudTrail ログに UserSub を記録しますが、UserName は記録しません。ListUsers API を呼び出し、sub のフィルターを使用することで、所定の UserSub のユーザーを見つけることができます。

アイデンティティプールイベント

データイベント

Amazon Cognito は、CloudTrail への Amazon Cognito ID イベントをデータイベントとしてログ記録します。データイベントは、CloudTrail がデフォルトではログ記録しない大量のデータプレーン API オペレーションです。追加の変更がイベントデータに適用されます。

これらの API オペレーションの CloudTrail ログを生成するには、トレイル内のデータイベントを有効にし、Cognito ID プールのイベントセレクターを選択する必要があります。詳細については、「AWS CloudTrail ユーザーガイド」の「証跡のデータイベントの記録」を参照してください。

次の CLI コマンドを使用して、ID プールのイベントセレクターをトレイルに追加することもできます。

aws cloudtrail put-event-selectors --trail-name <trail name> --advanced-event-selectors \ "{\ \"Name\": \"Cognito Selector\",\ \"FieldSelectors\": [\ {\ \"Field\": \"eventCategory\",\ \"Equals\": [\ \"Data\"\ ]\ },\ {\ \"Field\": \"resources.type\",\ \"Equals\": [\ \"AWS::Cognito::IdentityPool\"\ ]\ }\ ]\ }"

管理イベント

Amazon Cognito は、残りの Amazon Cognito アイデンティティプール API オペレーションを管理イベントとしてログ記録します。CloudTrail は、デフォルトで管理イベント API オペレーションをログ記録します。

Amazon Cognito が CloudTrail にログ記録する Amazon Cognito ID API オペレーションのリストについては、Amazon Cognito アイデンティティプール API リファレンス をご覧ください。

Amazon Cognito Sync

Amazon Cognito は、すべての Amazon Cognito Sync API オペレーションを管理イベントとしてログ記録します。Amazon Cognito が CloudTrail にログ記録する Amazon Cognito Sync API オペレーションのリストについては、Amazon Cognito Sync API Reference(Amazon Cognito Sync API リファレンス) をご覧ください。

Amazon CloudWatch Logs Insights を使用した Amazon Cognito CloudTrail イベントの分析

Amazon CloudWatch Logs Insights は、Amazon Cognito CloudTrail イベントをインタラクティブに検索し、分析することを可能にします。イベントを CloudWatch Logs に送信するように証跡を設定すると、CloudTrail は証跡設定に一致するイベントのみを送信します。

Amazon Cognito CloudTrail イベントをクエリする、または調査するには、AWS リソースで実行された管理操作を監視できるように、CloudTrail コンソールの追跡設定で [Management events] (管理イベント) オプションが選択されていることを確認してください。アカウント内でのエラー、異常なアクティビティ、または異常なユーザー動作を特定したい場合は、オプションで追跡設定の [Insights イベント] オプションを選択することができます。

サンプル Amazon Cognito クエリ

Amazon CloudWatch コンソールでは、以下のクエリを使用できます。

一般的なクエリ

最近追加された 25 件のログイベントを検索します。

fields @timestamp, @message | sort @timestamp desc | limit 25 | filter eventSource = "cognito-idp.amazonaws.com"

例外を含む、最近追加された 25 件のログイベントのリストを取得します。

fields @timestamp, @message | sort @timestamp desc | limit 25 | filter eventSource = "cognito-idp.amazonaws.com" and @message like /Exception/

例外とエラーのクエリ

Amazon Cognito ユーザープール sub と共に、最近追加されたエラーコード NotAuthorizedException を伴う 25 件のログイベントを検索します。

fields @timestamp, additionalEventData.sub as user | sort @timestamp desc | limit 25 | filter eventSource = "cognito-idp.amazonaws.com" and errorCode= "NotAuthorizedException"

eventName と対応する sourceIPAddress を持つレコードの数を検索します。

filter eventSource = "cognito-idp.amazonaws.com" | stats count(*) by sourceIPAddress, eventName

NotAuthorizedException エラーをトリガーした上位 25 の IP アドレスを検索します。

filter eventSource = "cognito-idp.amazonaws.com" and errorCode= "NotAuthorizedException" | stats count(*) as count by sourceIPAddress, eventName | sort count desc | limit 25

ForgotPassword API を呼び出した上位 25 の IP アドレスを検索します。

filter eventSource = "cognito-idp.amazonaws.com" and eventName = 'ForgotPassword' | stats count(*) as count by sourceIPAddress | sort count desc | limit 25