

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 從 Amazon Cognito 使用者集區匯出日誌
<a name="exporting-quotas-and-usage"></a>

您可以設定使用者集區，將一些額外活動的詳細日誌傳送至另一個活動 AWS 服務，例如 CloudWatch 日誌群組。這些日誌的精細程度比 更精細 AWS CloudTrail，可用於疑難排解您的使用者集區，並使用[威脅防護](cognito-user-pool-settings-threat-protection.md)分析使用者登入活動。當您想要串流簡訊和電子郵件通知錯誤的日誌時，您的使用者集區會將 `ERROR`層級日誌傳送至 CloudWatch 日誌群組。當您想要串流使用者登入活動的日誌時，您的使用者集區會將 `INFO`層級日誌傳送至日誌群組、Amazon Data Firehose 串流或 Amazon S3 儲存貯體。您可以在使用者集區中結合這兩個選項。

**Topics**
+ [

## 日誌匯出須知事項
](#exporting-quotas-and-usage-things-to-know)
+ [

## 匯出電子郵件和簡訊傳遞錯誤
](#exporting-quotas-and-usage-messages)
+ [

## 匯出威脅防護使用者活動日誌
](#exporting-quotas-and-usage-user-activity)

## 日誌匯出須知事項
<a name="exporting-quotas-and-usage-things-to-know"></a>

**成本影響**  
Amazon Data Firehose、Amazon S3 和 CloudWatch Logs 會產生資料擷取和擷取的成本。您的記錄組態可能會影響您的 AWS 帳單。如需詳細資訊，請參閱下列內容：  
+ *Amazon CloudWatch 定價*中的[已修訂日誌](https://aws.amazon.com/cloudwatch/pricing/#Vended_Logs)。
+ [Amazon Data Firehose 定價](https://aws.amazon.com/firehose/pricing/)
+ [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)
使用者活動日誌匯出包含安全評估，是使用者集區[威脅防護](cognito-user-pool-settings-threat-protection.md)的函數。Amazon Cognito 只會在威脅防護處於**僅限稽核**或**全功能**模式，且您的使用者集區位於 Plus [功能計劃](cognito-sign-in-feature-plans.md)時產生這些日誌。

**使用者活動日誌是`INFO`關卡**  
匯出的使用者活動日誌僅處於`INFO`錯誤層級，並提供身分驗證活動統計和安全性分析的資訊。`WARNING` 和 `ERROR`錯誤層級的訊息，例如限流錯誤，不會包含在匯出的日誌中。

**盡最大努力交付**  
最好從 Amazon Cognito 傳遞日誌。您的使用者集區提供的日誌數量，以及 CloudWatch Logs、Amazon S3 和 Firehose 的服務配額可能會影響日誌的交付。

**現有的外部日誌不受影響**  
這些記錄選項不會取代或變更使用者集區的下列日誌函數。  

1. CloudTrail 日誌，內容包含像是註冊和登入等例行使用者活動。

1. 使用 CloudWatch 指標大規模分析使用者活動。
此外，您也可以在 CloudWatch Logs [使用 Lambda 觸發程序來自訂使用者集區工作流程](cognito-user-pools-working-with-lambda-triggers.md)中找到來自 [在 CloudWatch 主控台中檢視使用者集區匯入結果](cognito-user-pools-using-import-tool.md#cognito-user-pools-using-import-tool-cloudwatch)和 的日誌。Amazon Cognito 和 Lambda 將這些日誌存放在與您為使用者活動日誌指定的日誌群組不同的日誌群組中。

**僅適用於使用者集區**  
身分集區中不存在日誌匯出功能。

**需要使用者許可和服務連結角色**  
設定日誌匯出的 AWS 主體必須具有修改目標資源的許可，如以下主題所述。Amazon Cognito 會代表您建立[服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)，並擔任該角色將日誌交付至目標資源。  
如需從 Amazon Cognito 傳送日誌的授權模型詳細資訊，請參閱《*Amazon CloudWatch Logs 使用者指南*》中的[從 啟用記錄 AWS 服務](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions)。

**日誌層級專屬於日誌類型**  
訊息傳遞日誌類型為 ，`ERROR`錯誤層級`userNotification`為 。進階安全使用者活動日誌類型為 ，`INFO`錯誤層級`userAuthEvents`為 。您可以合併兩個 成員`LogConfigurations`，一個 `userNotification`用於 CloudWatch Logs，另一個 `userAuthEvents`用於 Firehose、Amazon S3 或 CloudWatch Logs。  
您無法將使用者活動日誌傳送至多個目的地。您無法將使用者通知日誌傳送至 CloudWatch Logs 以外的任何目的地。

**不同的組態選項**  
您只能使用 Amazon Cognito 使用者集區 API 或 AWS SDK 設定使用者通知日誌。您可以使用 API 或在 Amazon Cognito 主控台中設定進階安全使用者活動日誌。若要設定兩者，請使用 API，如 [SetLogDeliveryConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetLogDeliveryConfiguration.html) 的範例請求所示。

**大型資源型政策所需的其他組態**  
若要將日誌傳送至日誌群組，且資源政策規定的大小超過 5120 個字元，請使用開頭為 `/aws/vendedlogs` 的路徑設定日誌群組。如需詳細資訊，請參閱[從特定 AWS 服務啟用記錄](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html)。

**在 Amazon S3 中自動建立資料夾**  
當您設定將威脅防護日誌匯出至 Amazon S3 儲存貯體時，Amazon Cognito 可能會在儲存貯體中建立 `AWSLogs` 資料夾。並非所有情況下都會建立該資料夾，而且組態可以在不建立的情況下成功。

## 匯出電子郵件和簡訊傳遞錯誤
<a name="exporting-quotas-and-usage-messages"></a>

對於電子郵件和簡訊傳遞錯誤，您可以從使用者集區傳遞**錯誤**層級的使用者通知日誌。當您啟用此功能時，可以選擇 Amazon Cognito 要將日誌傳送到其中的日誌群組。當您想要了解使用者集區透過 Amazon SNS 和 Amazon SES 傳遞的電子郵件和簡訊狀態時，使用者通知記錄非常有用。此日誌匯出選項與[使用者活動匯出](#exporting-quotas-and-usage-user-activity.title)不同，不需要 Plus 功能計劃。

您可以在 [SetLogDeliveryConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetLogDeliveryConfiguration.html) API 請求中使用 Amazon Cognito 使用者集區 API 設定詳細通知日誌。您可以在 [GetLogDeliveryConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetLogDeliveryConfiguration.html) 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 登入資料來授權這些請求。

------
#### [ JSON ]

****  

```
{
    "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"
    }
}
```

## 匯出威脅防護使用者活動日誌
<a name="exporting-quotas-and-usage-user-activity"></a>

具有 Plus 功能計劃和威脅防護日誌的使用者活動事件的使用者集區：使用使用者集區的使用者登入、登出和其他身分驗證操作的詳細資訊和安全性評估。您可能想要在自己的日誌管理系統中檢閱使用者活動日誌，或建立封存。您可以將此資料匯出至 Amazon CloudWatch Logs 日誌群組、Amazon Data Firehose 串流或 Amazon Simple Storage Service (Amazon S3) 儲存貯體。從那裡，您可以將此資料擷取到其他系統，以適合您的操作程序的方式來分析、標準化或以其他方式處理資料。若要匯出此類型的資料，您的使用者集區必須位於 Plus 功能計劃中，且[威脅防護](cognito-user-pool-settings-threat-protection.md)必須在您的使用者集區中處於作用中狀態。

透過這些使用者活動日誌中的資訊，您可以檢視使用者登入和帳戶管理活動的設定檔。根據預設，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](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetLogDeliveryConfiguration.html) API 操作啟用使用者活動的日誌匯出。

------
#### [ AWS 管理主控台 ]

1. 如果您還沒有要使用的日誌群組，請建立 [S3 儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)體、[Firehose 串流](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)或 [CloudWatch 日誌群組](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。

1. 登入 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)。

1. 選擇 **User Pools** (使用者集區)。

1. 從清單中選擇現有的使用者集區，或[建立使用者集區](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html)。

1. 選擇**進階安全**索引標籤。尋找**匯出使用者活動日誌**，然後選擇**編輯**

1. 在**記錄狀態**下，選取**啟用使用者活動日誌匯出**旁的核取方塊。

1. 在**記錄目的地**下，選擇您要處理日誌 AWS 服務 的 ：**CloudWatch 日誌群組**、**Amazon Data Firehose 串流**或 **S3 儲存貯體**。

1. 您的選擇會將對應的資源類型填入資源選擇器。從清單中選擇日誌群組、串流或儲存貯體。您也可以選取**建立**按鈕，以導覽至所選服務的 AWS 管理主控台 ，並建立新的資源。

1. 選取**儲存變更**。

------
#### [ API ]

為您的使用者活動日誌選擇一種目的地類型。

以下是將 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 ]

------
#### [ JSON ]

****  

```
{
    "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 ]

------
#### [ JSON ]

****  

```
{
    "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 ]

------
#### [ JSON ]

****  

```
{
    "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": "",
        "hasContextData": "true"
    },
    "logSourceId": {
        "userPoolId": "us-west-2_EXAMPLE"
    }
}
```