翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
CloudWatch ロググループなど AWS のサービス、追加のアクティビティの詳細ログを別の に送信するようにユーザープールを設定できます。これらのログは、 のログよりも細かく、ユーザープールのトラブルシューティングや AWS CloudTrail、高度なセキュリティ機能を使用したユーザーサインインアクティビティの分析に役立ちます。SMS および E メール通知エラーのログをストリーミングする場合、ユーザープールは ERROR
レベルのログを CloudWatch ロググループに送信します。ユーザーサインインアクティビティのログをストリーミングする場合、ユーザープールは INFO
レベルのログをロググループ、Amazon Data Firehose ストリーム、または Amazon S3 バケットに送信します。ユーザープールで両方のオプションを組み合わせることができます。
ログエクスポートについて知っておくべきこと
- コストへの影響
-
Amazon Data Firehose、Amazon S3、CloudWatch Logs では、データインジェストと取得にコストが発生します。ログ記録設定が AWS 請求書に影響する場合があります。詳細については次を参照してください:
-
Amazon CloudWatch の料金の Vended Logs
。
ユーザーアクティビティログのエクスポートにはセキュリティ評価が含まれており、ユーザープールの高度なセキュリティ機能の関数です。Amazon Cognito は、高度なセキュリティ機能がアクティブな場合にのみこれらのログを生成します。これらの機能により、ユーザープールの月間アクティブユーザー (MAU) あたりのコストが増加します。詳細については、「Amazon Cognito の料金
」を参照してください。 -
- ユーザーアクティビティログは
INFO
レベル -
エクスポートされたユーザーアクティビティログは
INFO
エラーレベルのみで、認証アクティビティの統計およびセキュリティ分析に関する情報を提供します。スロットリングERROR
エラーなど、WARNING
および エラーレベルのメッセージは、エクスポートされたログに含まれません。 - ベストエフォート配信
-
Amazon Cognito からのログの配信はベストエフォートに基づきます。ユーザープールが配信するログの量と、CloudWatch Logs、Amazon S3、Firehose のサービスクォータは、ログの配信に影響を与える可能性があります。
- 既存の外部ログは影響を受けません
-
これらのログオプションは、ユーザープールの以下のログ機能を置き換えたり変更したりするものではありません。
-
サインアップやサインインなどの日常的なユーザーアクティビティの CloudTrail ログ。
-
CloudWatch メトリクスを使用した大規模なユーザーアクティビティの分析。
別に、CloudWatch Logs で ユーザープールのインポート結果を CloudWatch コンソールに表示 や Lambda トリガーを使用したユーザープールワークフローのカスタマイズ のログを参照することもできます。Amazon Cognito と Lambda は、ユーザーアクティビティログ用に指定したロググループとは異なるロググループに、これらのログを保存します。
-
- ユーザープールにのみ適用されます
-
アイデンティティプールにログエクスポート機能はありません。
- ユーザーアクセス許可とサービスにリンクされたロールが必要です
-
ログのエクスポートを設定する AWS プリンシパルには、以下のトピックで説明するように、ターゲットリソースを変更するアクセス許可が必要です。Amazon Cognito はユーザーに代わってサービスにリンクされたロールを作成し、ターゲットリソースにログを配信するロールを引き受けます。
Amazon Cognito からログを送信するための認可モデルの詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「AWS のサービスからのロギングを有効にする」を参照してください。
- ログレベルはログタイプに排他的です
-
メッセージ配信ログは、
userNotification
タイプとERROR
エラーレベルのログです。高度なセキュリティユーザーアクティビティログは、userAuthEvents
タイプとINFO
エラーレベルのログです。LogConfigurations
の 2 つのメンバーを組み合わせることができます。1 つは CloudWatch Logs のuserNotification
用メンバーで、もう 1 つは Firehose、Amazon S3、または CloudWatch Logs のuserAuthEvents
用メンバーです。ユーザーアクティビティログを複数の送信先に送信できません。CloudWatch Logs 以外の送信先にユーザー通知ログを送信できません。
- さまざまな設定オプション
-
ユーザー通知ログは、Amazon Cognito ユーザープール API または AWS SDK でのみ設定できます。API または Amazon Cognito コンソールで、高度なセキュリティユーザーアクティビティログを設定できます。両方を設定するには、SetLogDeliveryConfiguration のリクエスト例で示されているように API を使用します。
- 大規模なリソースベースのポリシーで必要な追加設定
-
サイズが 5,120 文字を超えるリソースポリシーを持つロググループにログを送信するには、
/aws/vendedlogs
で始まるパスでロググループを設定します。詳細については、「特定の AWS サービスからのログ記録の有効化」を参照してください。 - Amazon S3 でのフォルダの自動作成
-
Amazon S3 バケットへの脅威保護ログのエクスポートを設定すると、Amazon Cognito がバケットに
AWSLogs
フォルダを作成することがあります。そのフォルダはすべてのケースで作成されるわけではなく、設定は作成せずに成功できます。
E メールおよび SMS メッセージ配信エラーのエクスポート
E メールおよび SMS メッセージ配信エラーの場合、ユーザープールからエラーレベルのユーザー通知ログを配信できます。この機能を有効にすると、Amazon Cognito からログを送信する先のロググループを選択できます。ユーザー通知のログ記録は、ユーザープールが Amazon SNS と Amazon SES で配信した E メールや SMS メッセージのステータスを確認する場合に便利です。このログエクスポートオプションは、ユーザーアクティビティのエクスポートとは異なり、プラス機能プランを必要としません。
SetLogDeliveryConfiguration API リクエストで Amazon Cognito ユーザープール API を使用して詳細な通知ログを設定できます。ユーザープールのログ記録設定は、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"
}
}
脅威保護ユーザーアクティビティログのエクスポート
Plus 機能プランと脅威保護が設定されたユーザープールは、ユーザーアクティビティイベントを記録します。ユーザープールでのユーザーサインイン、サインアウト、およびその他の認証オペレーションの詳細とセキュリティ評価です。独自のログ管理システムでユーザーアクティビティログを確認したり、アーカイブを作成したりできます。Amazon CloudWatch Logs ロググループ、Amazon Data Firehose ストリーム、Amazon Simple Storage Service (Amazon S3) バケットを使用できます。そこから、このデータを、運用プロセスに適合する方法でデータを分析、正規化、またはその他の方法で処理する他のシステムに取り込むことができます。このタイプのデータをエクスポートするには、ユーザープールが Plus 機能プランにあり、ユーザープールで高度なセキュリティ機能が有効になっている必要があります。
これらのユーザーアクティビティログの情報を使用して、ユーザーサインインとアカウント管理アクティビティのプロファイルを表示できます。デフォルトでは、Amazon Cognito はこれらのイベントをユーザープールに基づくストレージにキャプチャします。次の例は、サインインし、リスク要因がないと評価されたユーザーのイベント例です。この情報は、AdminListUserAuthEvents
API オペレーションで取得できます。以下は、その出力例です。
{
"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 コンソール内で、または SetLogDeliveryConfiguration API オペレーションを使用して、ユーザーアクティビティのログエクスポートをアクティブ化できます。
-
使用するバケットがまだない場合は、S3 バケット、Firehose ストリーム、または CloudWatch ロググループを作成します。
-
Amazon Cognito コンソール
にサインインします。 -
[User Pools] (ユーザープール) を選択します。
-
リストから既存のユーザープールを選択するか、ユーザープールを作成します。
-
[高度なセキュリティ] タブを選択します。[ユーザーアクティビティログをエクスポートする] を見つけて [編集] を選択します
-
[ログ記録ステータス] で、[ユーザーアクティビティログのエクスポートをアクティブ化] の横にあるチェックボックスをオンにします。
-
ログ記録の送信先で、ログ AWS のサービス を処理する を選択します。CloudWatch ロググループ、Amazon Data Firehose ストリーム、または S3 バケット。
-
選択すると、対応するリソースタイプがリソースセレクターに入力されます。リストからロググループ、ストリーム、またはバケットを選択します。作成ボタンを選択して、 AWS Management Console 選択したサービスの に移動し、新しいリソースを作成することもできます。
-
[変更を保存] を選択します。
ログ配信を設定するユーザーは、ユーザープール管理者で、かつ、次の追加のアクセス許可を持っている必要があります。
{
"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": "*"
}
]
}
ユーザープールのイベントの例を次に示します。このログスキーマは変更される可能性があります。一部のフィールドは 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": "",
"hasContextData": "true"
},
"logSourceId": {
"userPoolId": "us-west-2_EXAMPLE"
}
}