Amazon Cognito ユーザープールのユーザーアクティビティを監視、分析したいと考えています。
解決策
ユーザーアクティビティを監視、分析するには、AWS CloudTrail の [イベント履歴] ページを参照し、AWS CloudTrail ログの検索用に Amazon Athena テーブルを作成し、Amazon Cognito の脅威対策を有効化します。
CloudTrail のイベント履歴ページを確認し、ユーザープールへの API 呼び出しを分析する
次の手順を実行します。
- Cognito ユーザープールと同じリージョンで CloudTrail コンソールを開きます。
- ナビゲーションペインで [イベント履歴] を選択します。
- [表示列を選択] で [イベント名] と [イベントソース] を選択してから、次の手順を実行します。
[イベントソース] で cognito-idp.amazonaws.com を選択すると、ユーザープールのアクティビティが表示されます。cognito-identity.amazonaws.com を選択すると、ID プールのアクティビティが表示されます。
[イベント名] にユーザープールイベントたは API アクションの名前を入力します (例: InitiateAuth、CreateUserPool)。
注: CloudTrail ログには、UserSub のみが表示されます。ユーザー固有のリクエストに関する UserName は省略されます。ユーザー名を特定するには、ListUsers API を実行し、sub 属性でフィルターします。
注: CloudTrail イベント履歴ページには、AWS リージョンにおける過去 90 日間の管理イベントに関する記録が表示されます。イベントデータストアまたは証跡を作成すると、過去 90 日のアクティビティとイベントに関する継続的な記録にアクセスできます。イベント履歴の詳細については、「イベント履歴の制限事項」を参照してください。
CloudTrail ログの検索用に Athena テーブルを作成する
CloudTrail が Amazon Simple Storage Service (Amazon S3) バケットに保存するログに対し、Athena に CloudTrail ログ検索用のテーブルを作成することができます。
注: 次のクエリにおいて、your_athena_tablename を Athena テーブル名に置き換えてください。
次の Athena クエリを実行し、CloudTrail ログから Cognito ユーザー登録イベントを取得します。
SELECT eventTime, eventName, additionalEventData
FROM your_athena_tablename
WHERE eventsource = 'cognito-idp.amazonaws.com'
AND eventname IN ('SignUp', 'signup_POST', 'signup_GET')
AND eventtime >= '2025-07-15T09:00:00Z'
AND eventtime < '2025-07-15T10:00:00Z'
ORDER BY eventtime ASC;
次のクエリを実行すると、汎用一意識別子 (UUID) のサブ値を持つ特定の Cognito ユーザーに関するすべてのユーザーアクティビティが表示されます。
SELECT eventTime, eventName, additionalEventData
FROM your_athena_tablename
WHERE eventsource = 'cognito-idp.amazonaws.com'
AND json_extract_scalar(additionaleventdata, '$.sub') = '826bfee9-68d8-4046-b292-4f8cdd839bcd'
AND eventtime >= '2025-06-17T00:00:00Z'
ORDER BY eventtime ASC;
注: この例では、826bfee9-68d8-4046-b292-4f8cdd839bcd が UserSub 値です。
脅威対策を有効化し、詳細アクティビティログを生成する
ユーザー認証イベントの詳細ログを確認するには、次の手順を実行します。