Amazon Cognito ユーザープールからのログのエクスポート - Amazon Cognito

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

Amazon Cognito ユーザープールからのログのエクスポート

ユーザープールを設定して AWS のサービス、ロググループなど、追加のアクティビティの詳細 CloudWatch ログを別の に送信できます。これらのログは、 のログよりも細かく、ユーザープールのトラブルシューティングや AWS CloudTrail、高度なセキュリティ機能 を使用したユーザーサインインアクティビティの分析に役立ちます。のログSMSと E メール通知エラーをストリーミングする場合、ユーザープールは ERRORレベルのログを CloudWatch ロググループに送信します。ユーザーサインインアクティビティのログをストリーミングする場合、ユーザープールは INFOレベルのログをロググループ、Amazon Data Firehose ストリーム、または Amazon S3 バケットに送信します。ユーザープールで両方のオプションを組み合わせることができます。

ログエクスポートについて知っておくべきこと

コストへの影響

Amazon Data Firehose、Amazon S3、および CloudWatch Logs では、データの取り込みと取得にコストが発生します。ログ記録設定は、 AWS 請求に影響する可能性があります。詳細については、次を参照してください。

ユーザーアクティビティログのエクスポートにはセキュリティ評価が含まれており、ユーザープールの高度なセキュリティ機能 の関数です。Amazon Cognito は、高度なセキュリティ機能がアクティブな場合にのみこれらのログを生成します。これらの機能により、ユーザープールの月間アクティブユーザー (MAU) あたりのコストが増加します。詳細については、「Amazon Cognito の料金」を参照してください。

ベストエフォート配信

Amazon Cognito からのログの配信はベストエフォートに基づきます。ユーザープールが配信するログの量、および CloudWatch Logs、Amazon S3、Firehose のサービスクォータは、ログの配信に影響を与える可能性があります。

既存の外部ログは影響を受けません

これらのログ記録オプションは、ユーザープールの次のログ機能を置き換えたり変更したりすることはありません。

  1. CloudTrail サインアップやサインインなどの日常的なユーザーアクティビティのログ。

  2. CloudWatch メトリクスを使用した大規模なユーザーアクティビティの分析。

これとは別に、 CloudWatch コンソールでユーザープールのインポート結果を表示する および からのログを CloudWatch Logs Lambda トリガーを使用したユーザープールワークフローのカスタマイズで見つけることもできます。Amazon Cognito と Lambda は、これらのログをユーザーアクティビティログに指定したロググループとは異なるロググループに保存します。

ユーザープールにのみ適用されます

ID プールにはログエクスポート機能はありません。

ユーザーアクセス許可とサービスにリンクされたロールが必要です

ログエクスポートを設定する AWS プリンシパルには、以下のトピックで説明されているように、ターゲットリソースを変更するアクセス許可が必要です。Amazon Cognito は、ユーザーに代わってサービスにリンクされたロールを作成し、ターゲットリソースにログを配信するロールを引き受けます。

Amazon Cognito からログを送信するための承認モデルの詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「 からのログ記録を有効にする AWS のサービス」を参照してください。

ログレベルはログタイプに排他的です

メッセージ配信ログは、 userNotificationタイプとERRORエラーレベルのログです。高度なセキュリティユーザーアクティビティログは、 userAuthEventsタイプとINFOエラーレベルです。の 2 つのメンバーを組み合わせることができますLogConfigurations。1 つは userNotification対 CloudWatch ログ、もう 1 つは userAuthEvents Firehose、Amazon S3、または CloudWatch ログです。

ユーザーアクティビティログを複数の送信先に送信することはできません。ユーザー通知ログを CloudWatch Logs 以外の送信先に送信することはできません。

さまざまな設定オプション

ユーザー通知ログは、Amazon Cognito ユーザープールAPIまたは AWS でのみ設定できますSDK。API または Amazon Cognito コンソールで、高度なセキュリティユーザーアクティビティログを設定できます。両方を設定するには、 のリクエスト例で示されているAPIように を使用しますSetLogDeliveryConfiguration

大規模なリソースベースのポリシーで必要な追加設定

サイズが 5,120 文字を超えるリソースポリシーを持つロググループにログを送信するには、/aws/vendedlogs で始まるパスでロググループを設定します。詳細については、「特定の AWS サービスからのログ記録の有効化」を参照してください。

E メールとSMSメッセージの配信エラーのエクスポート

E メールおよびSMSメッセージ配信エラーの場合、ユーザープールからエラーレベルのユーザー通知ログを配信できます。この機能を有効にすると、Amazon Cognito からログを送信する先のロググループを選択できます。ユーザー通知のログ記録は、ユーザープールが Amazon と Amazon で配信した E メールSNSとSMSメッセージのステータスを確認する場合に役立ちますSES。このログエクスポートオプションは、ユーザーアクティビティエクスポート とは異なり、高度なセキュリティ機能を必要としません。

SetLogDeliveryConfiguration API リクエストAPI内の Amazon Cognito ユーザープールを使用して詳細な通知ログを設定できます。GetLogDeliveryConfiguration API リクエストでユーザープールのログ記録設定を表示できます。以下はリクエスト本文の例です。

{ "LogConfigurations": [ { "CloudWatchLogsConfiguration": { "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:example-user-pool-exported" }, "EventSource": "userNotification", "LogLevel": "ERROR" } ], "UserPoolId": "us-west-2_EXAMPLE" }

これらのリクエストは、以下のアクセス許可を持つ AWS  認証情報を使用して認可する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageUserPoolLogs", "Action": [ "cognito-idp:SetLogDeliveryConfiguration", "cognito-idp:GetLogDeliveryConfiguration", ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "CognitoLog", "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "CognitoLoggingCWL", "Action": [ "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "*" ], "Effect": "Allow" } ] }

ユーザープールのイベントの例を次に示します。このログスキーマは変更される可能性があります。一部のフィールドは NULL 値がログとして記録される場合があります。

{ "eventTimestamp": "1687297330677", "eventSource": "USER_NOTIFICATION", "logLevel": "ERROR", "message": { "details": "String" }, "logSourceId": { "userPoolId": "String" } }

高度なセキュリティユーザーアクティビティログのエクスポート

高度なセキュリティ機能を持つユーザープールは、ユーザーアクティビティイベントを記録します。ユーザープールでのユーザーサインイン、サインアウト、およびその他の認証オペレーションの詳細とセキュリティ評価です。独自のログ管理システムでユーザーアクティビティログを確認したり、アーカイブを作成したりできます。このデータは、Amazon CloudWatch Logs ロググループ、Amazon Data Firehose ストリーム、または Amazon Simple Storage Service (Amazon S3) バケットにエクスポートできます。そこから、このデータを他のシステムに取り込むことができます。このシステムは、運用プロセスに適合する方法でデータを分析、正規化、またはその他の方法で処理します。このタイプのデータをエクスポートするには、高度なセキュリティ機能がユーザープールでアクティブである必要があります。

これらのユーザーアクティビティログの情報を使用して、ユーザーサインインとアカウント管理アクティビティのプロファイルを表示できます。デフォルトでは、Amazon Cognito はこれらのイベントをユーザープールに基づくストレージにキャプチャします。次の例は、サインインし、リスク要因がないと評価されたユーザーのイベント例です。この情報を取得するには、 AdminListUserAuthEventsAPIオペレーションを使用します。以下は、その出力例です。

{ "AuthEvents": [ { "EventId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "EventType": "SignIn", "CreationDate": "2024-06-27T10:49:59.139000-07:00", "EventResponse": "Pass", "EventRisk": { "RiskDecision": "NoRisk", "CompromisedCredentialsDetected": false }, "ChallengeResponses": [ { "ChallengeName": "Password", "ChallengeResponse": "Success" } ], "EventContextData": { "IpAddress": "192.0.2.1", "DeviceName": "Chrome 126, Windows 10", "Timezone": "-07:00", "City": "null", "Country": "United States" } } ], "NextToken": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222#2024-06-27T17:49:59.139Z" }

Amazon Cognito コンソールまたは SetLogDeliveryConfigurationAPIオペレーションを使用して、ユーザーアクティビティのログエクスポートをアクティブ化できます。

AWS Management Console
  1. 使用するバケットがまだない場合は、S3 バケットFirehose ストリーム 、またはCloudWatchロググループ を作成します。

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

  3. [User Pools] (ユーザープール) を選択します。

  4. リストから既存のユーザープールを選択するか、ユーザープールを作成します。

  5. 高度なセキュリティタブを選択します。ユーザーアクティビティログのエクスポートを検索し、編集を選択します

  6. ログステータス で、ユーザーアクティビティログのエクスポートを有効にする の横にあるチェックボックスをオンにします。

  7. ログ送信先 で、ログCloudWatch グループ Amazon Data Firehose ストリーム 、または S3 バケット のログ AWS のサービス を処理する を選択します。

  8. 選択すると、対応するリソースタイプがリソースセレクタに入力されます。リストからロググループ、ストリーム、またはバケットを選択します。作成ボタンを選択して、 AWS Management Console 選択したサービスの に移動し、新しいリソースを作成することもできます。

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

API

ユーザーアクティビティログの送信先のタイプを 1 つ選択します。

以下は、Firehose ストリームをログ送信先として設定するSetLogDeliveryConfigurationリクエスト本文の例です。

{ "LogConfigurations": [ { "EventSource": "userAuthEvents", "FirehoseConfiguration": { "StreamArn": "arn:aws:firehose:us-west-2:123456789012:deliverystream/example-user-pool-activity-exported" }, "LogLevel": "INFO" } ], "UserPoolId": "us-west-2_EXAMPLE" }

以下は、Amazon S3 バケットをログの送信先として設定するSetLogDeliveryConfigurationリクエスト本文の例です。

{ "LogConfigurations": [ { "EventSource": "userAuthEvents", "S3Configuration": { "BucketArn": "arn:aws:s3:::amzn-s3-demo-logging-bucket" }, "LogLevel": "INFO" } ], "UserPoolId": "us-west-2_EXAMPLE" }

以下は、 CloudWatch ロググループをログ送信先として設定するSetLogDeliveryConfigurationリクエスト本文の例です。

{ "LogConfigurations": [ { "EventSource": "userAuthEvents", "CloudWatchLogsConfiguration": { "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:DOC-EXAMPLE-LOG-GROUP" }, "LogLevel": "INFO" } ], "UserPoolId": "us-west-2_EXAMPLE" }

ログ配信を設定するユーザーは、ユーザープール管理者であり、次の追加のアクセス許可を持っている必要があります。

Amazon S3
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageUserPoolLogs", "Action": [ "cognito-idp:SetLogDeliveryConfiguration", "cognito-idp:GetLogDeliveryConfiguration", ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "ManageLogsS3", "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "s3:PutBucketPolicy", "s3:GetBucketPolicy" ], "Resource": "*" } ] }
CloudWatch Logs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageUserPoolLogs", "Action": [ "cognito-idp:SetLogDeliveryConfiguration", "cognito-idp:GetLogDeliveryConfiguration", ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "ManageLogsCWL", "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "*" ], "Effect": "Allow" } ] }
Amazon Data Firehose
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageUserPoolLogs", "Action": [ "cognito-idp:SetLogDeliveryConfiguration", "cognito-idp:GetLogDeliveryConfiguration", ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid": "ManageUserPoolLogsFirehose", "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "iam:CreateServiceLinkedRole", "firehose:TagDeliveryStream" ], "Resource": "*" } ] }

ユーザープールのイベントの例を次に示します。このログスキーマは変更される可能性があります。一部のフィールドは NULL 値がログとして記録される場合があります。

{ "eventTimestamp": "1687297330677", "eventSource": "USER_ACTIVITY", "logLevel": "INFO", "message": { "version": "1", "eventId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "eventType": "SignUp", "userSub": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "userName": "test-user", "userPoolId": "us-west-2_EXAMPLE", "clientId": "1example23456789", "creationDate": "Wed Jul 17 17:25:55 UTC 2024", "eventResponse": "InProgress", "riskLevel": "", "riskDecision": "PASS", "challenges": [], "deviceName": "Other, Other", "ipAddress": "192.0.2.1", "requestId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333", "idpName": "", "compromisedCredentialDetected": "false", "city": "Seattle", "country": "United States", "eventFeedbackValue": "", "eventFeedbackDate": "", "eventFeedbackProvider": "" }, "logSourceId": { "userPoolId": "us-west-2_EXAMPLE" } }