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

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

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

CloudWatch ロググループなど AWS サービス、追加のアクティビティの詳細なログを別の に送信するようにユーザープールを設定できます。これらのログは のログよりも細かく、ユーザープールのトラブルシューティングや 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 メトリクスを使用した大規模なユーザーアクティビティの分析。

これとは別に、ユーザーインポートジョブLambda トリガーからのログも CloudWatch Logs で確認できます。Amazon Cognito と Lambda は、詳細なアクティビティログ用に指定したロググループとは異なるロググループに、これらのログを保存します。

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

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

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

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

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

ログレベルはログタイプに限定されます

メッセージ配信ログは、 userNotification タイプとERRORエラーレベルのログです。高度なセキュリティユーザーアクティビティログは、 userAuthEvents タイプとINFOエラーレベルのログです。の 2 つのメンバーを組み合わせることができます。LogConfigurations1 つは 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。このログエクスポートオプションは、ユーザーアクティビティエクスポート とは異なり、高度なセキュリティ機能を必要としません。

API SetLogDeliveryConfiguration 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:::DOC-EXAMPLE-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" } }