

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 记录管理事件
<a name="logging-management-events-with-cloudtrail"></a>

默认情况下，跟踪记录和事件数据存储将记录管理事件，但不包含数据事件或 Insights 事件。

数据事件或 Insights 事件需额外支付费用。有关更多信息，请参阅[Amazon CloudTrail 定价](https://www.amazonaws.cn/cloudtrail/pricing/)。

**Contents**
+ [管理事件](#logging-management-events)
+ [读取和写入事件](#read-write-events-mgmt)
+ [使用记录管理事件 Amazon Web Services 管理控制台](#logging-management-events-with-the-cloudtrail-console)
  + [更新现有跟踪的管理事件设置](#logging-management-events-with-the-cloudtrail-console-trail)
  + [更新现有事件数据存储的管理事件设置](#logging-management-events-with-the-cloudtrail-console-eds)
+ [使用记录管理事件 Amazon CLI](#creating-mgmt-event-selectors-with-the-AWS-CLI)
  + [示例：记录跟踪的管理事件](#log-mgmt-events-trails-examples)
    + [示例：使用高级事件选择器记录跟踪的管理事件](#log-mgmt-events-trails-examples-adv)
    + [示例：使用基本事件选择器记录跟踪的管理事件](#log-mgmt-events-trails-examples-basic)
+ [使用记录管理事件 Amazon SDKs](#logging-management-events-with-the-AWS-SDKs)

## 管理事件
<a name="logging-management-events"></a>

管理事件可让您了解对 Amazon 账户中的资源执行的管理操作。这些也称为控制面板操作。示例管理事件包括：
+ 配置安全性（例如，IAM `AttachRolePolicy` API 操作）
+ 注册设备（例如，Amazon EC2 `CreateDefaultVpc` API 操作）。
+ 配置传送数据的规则（例如，Amazon EC2 `CreateSubnet` API 操作）
+ 设置日志记录（例如， Amazon CloudTrail `CreateTrail`API 操作）

管理事件还包括在您的账户中发生的非 API 事件。例如，当用户登录您的账户时，会 CloudTrail 记录该`ConsoleLogin`事件。有关更多信息，请参阅 [捕获的非 API 事件 CloudTrail](cloudtrail-non-api-events.md)。

默认情况下，跟踪和事件数据存储配置为记录管理事件。

**注意**  
 CloudTrail **事件历史记录**功能仅支持管理事件。您不能从 Amazon KMS **事件历史记录**中排除事件；您应用于跟踪的设置不适用于**事件历史记录**。有关更多信息，请参阅 [处理 CloudTrail 事件历史记录](view-cloudtrail-events.md)。

## 读取和写入事件
<a name="read-write-events-mgmt"></a>

将跟踪或事件数据存储配置为记录管理事件时，可以指定是需要只读事件、只写事件还是两者都需要。
+ **读取**

  只读事件包括将读取您的资源但不进行更改的 API 操作。例如，只读事件包括 Amazon EC2 `DescribeSecurityGroups` 和 `DescribeSubnets` API 操作。这些操作仅返回有关 Amazon EC2 资源的信息，但不更改您的配置。
+ **写入**

  只写事件包括将修改（或可能修改）您的资源的 API 操作。例如，Amazon EC2 `RunInstances` 和 `TerminateInstances` API 操作将修改您的实例。

**示例：为单独的跟踪记录记录读取事件和写入事件**

以下示例说明如何将跟踪记录配置为将账户的日志活动拆分到单独的 S3 存储桶中：一个存储桶接收只读事件，另一个存储桶接收只写事件。

1. 您创建一个跟踪并选择一个名为 `amzn-s3-demo-bucket1` 的 S3 存储桶来接收日志文件。然后，您更新跟踪以指定您需要 **Read**（读取）管理事件。

1. 您创建另一个跟踪并选择一个名为 `amzn-s3-demo-bucket2` 的 S3 存储桶来接收日志文件。然后，您更新跟踪以指定您需要 **Write**（写入）管理事件。

1. Amazon EC2 `DescribeInstances` 和 `TerminateInstances` API 操作将在您的账户中执行。

1. `DescribeInstances` API 操作是只读事件，它匹配第一个跟踪的设置。跟踪将记录事件并将事件传输到 `amzn-s3-demo-bucket1`。

1. `TerminateInstances` API 操作是只写事件，它匹配第二个跟踪的设置。跟踪将记录事件并将事件传输到 `amzn-s3-demo-bucket2`。

## 使用记录管理事件 Amazon Web Services 管理控制台
<a name="logging-management-events-with-the-cloudtrail-console"></a>

本节介绍了如何更新现有跟踪或事件数据存储的管理事件设置。

**Topics**
+ [更新现有跟踪的管理事件设置](#logging-management-events-with-the-cloudtrail-console-trail)
+ [更新现有事件数据存储的管理事件设置](#logging-management-events-with-the-cloudtrail-console-eds)

### 更新现有跟踪的管理事件设置
<a name="logging-management-events-with-the-cloudtrail-console-trail"></a>

请按照以下过程更新现有跟踪的管理事件设置。

1. 登录 Amazon Web Services 管理控制台 并打开 CloudTrail 控制台，网址为[https://console.aws.amazon.com/cloudtrail/](https://console.amazonaws.cn/cloudtrail/)。

1. 打开 CloudTrail 控制台的 T **ra** ils 页面并选择跟踪名称。

1. 对于 **Management events**（管理事件），选择 **Edit**（编辑）。
   + 选择您是否要记录**读取**事件和/或**写入**事件。
   + 选择 “**排除 Amazon KMS 事件**”，从 TraiL 中筛选 Amazon Key Management Service (Amazon KMS) 事件。默认设置是包括所有 Amazon KMS 事件。

     只有在跟踪中记录管理 Amazon KMS 事件时，才可使用记录或排除事件的选项。如果您选择不记录管理事件，则不会记录 Amazon KMS 事件，也无法更改 Amazon KMS 事件日志记录设置。

     Amazon KMS 诸如`Encrypt``Decrypt`、和之类的操作`GenerateDataKey`通常会生成大量事件（超过 99%）。这些操作现在记录为**读取**事件。诸如`Disable``Delete`、和`ScheduleKey`（通常占事件量不到 0.5%）之类的低容量相关 Amazon KMS 操作被记录为**写入 Amazon KMS **事件。

     要排除高容量事件（如`Encrypt``Decrypt``GenerateDataKey`、和），但仍记录相关事件（例如`Disable``ScheduleKey`、`Delete`和），请选择记录**写入**管理事件，然后清除 “**排除” Amazon KMS 事件**复选框。

1. 完成后选择**保存更改**。

### 更新现有事件数据存储的管理事件设置
<a name="logging-management-events-with-the-cloudtrail-console-eds"></a>

1. 登录 Amazon Web Services 管理控制台 并打开 CloudTrail 控制台，网址为[https://console.aws.amazon.com/cloudtrail/](https://console.amazonaws.cn/cloudtrail/)。

1. 打开 CloudTrail 控制台**的事件数据存储**页面，然后选择事件数据存储名称。

1. 对于**管理事件**，请选择**编辑**，然后配置下面的设置：

   1. 在**简单事件收集**或**高级事件收集**之间进行选择：
      + 如果要记录所有事件、记录仅读取事件或记录仅写入事件，请选择**简单事件收集**。您也可以选择排除 Amazon Key Management Service 和 Amazon RDS 数据 API 管理事件。
      + 如果要根据高级事件选择器字段（包括 `eventName`、`eventType`、`eventSource` 和 `userIdentity.arn` 字段）的值包括或排除管理事件，请选择**高级事件收集**。

   1. 如果您选择了**简单事件收集**，请选择是要记录所有事件、仅记录读取事件还是仅记录写入事件。您也可以选择排除 Amazon KMS 和 Amazon RDS 管理事件。

   1. 如果您选择了**高级事件收集**，请进行以下选择：

      1. 在**日志选择器模板**中，选择一个预定义的模板，或者选择**自定义**以基于高级事件选择器字段值构建自定义配置。

         您可以从以下预定义模板中进行选择：
         + **记录所有事件**：选择此模板以记录所有事件。
         + **仅记录读取事件**：选择此模板以仅记录读取事件。只读事件是不会更改资源状态的事件，例如 `Get*` 或 `Describe*` 事件。
         + **仅记录写入事件**：选择此模板以仅记录写入事件。写入事件可添加、更改或删除资源、属性或构件，例如 `Put*`、`Delete*` 或 `Write*` 事件。
         + **仅记录 Amazon Web Services 管理控制台 事件**-选择此模板仅记录源自的事件 Amazon Web Services 管理控制台。
         + **排除 Amazon Web Services 服务 已启动的事件**-选择此模板可排除 Amazon Web Services 服务 具有`eventType`关联角色的事件和使用 Amazon Web Services 服务关联角色启动的事件 (SLRs)。`AwsServiceEvent`

      1. （可选）在**选择器名称**中，输入用于标识选择器的名称。选择器名称是高级事件选择器的描述性名称，例如 “记录 Amazon Web Services 管理控制台 会话中的管理事件”。选择器名称在高级事件选择器中列为 `Name`，展开 **JSON 视图**即可查看该名称。

      1. 如果您选择了**自定义**，则在**高级事件选择器**中，将基于高级事件选择器字段值构建表达式。
**注意**  
选择器不支持使用通配符，例如 `*`。要将多个值与单个条件匹配，可以使用 `StartsWith`、`EndsWith`、`NotStartsWith` 或 `NotEndsWith` 明确匹配事件字段的开头或结尾。

         1. 从下面的字段中选择。
            + **`readOnly`**：`readOnly`可以设置为**等于**值 `true` 或 `false`。当它设置为 `false` 时，事件数据存储将记录只写管理事件。只读管理事件是不会更改资源状态的事件，例如 `Get*` 或 `Describe*` 事件。写入事件可添加、更改或删除资源、属性或构件，例如 `Put*`、`Delete*` 或 `Write*` 事件。要同时记录**读取**和**写入**事件，请勿添加 `readOnly` 选择器。
            + **`eventName`**：`eventName`可以使用任何运算符。您可以使用它来包含或排除任何管理事件，例如 `CreateAccessPoint` 或 `GetAccessPoint`。
            + **`userIdentity.arn`**：包含或排除特定 IAM 身份所采取操作的事件。有关更多信息，请参阅 [CloudTrail userIdentity 元素](https://docs.amazonaws.cn/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。
            + **`sessionCredentialFromConsole`**— 包括或排除源自 Amazon Web Services 管理控制台 会话的事件。可以将此字段设置为**等于**或**不等于**值 `true`。
            + **`eventSource`**：可以使用它来包含或排除特定的事件源。`eventSource` 通常为服务名称的简短形式，不含空格但会加上 `.amazonaws.com`。例如，可以设置 `eventSource` **等于** `ec2.amazonaws.com`，以便仅记录 Amazon EC2 管理事件。
            + **`eventType`**：要包括或排除的 [eventType](cloudtrail-event-reference-record-contents.md#ct-event-type)。例如，可以将此字段设置为**不等于** `AwsServiceEvent`，以排除 [Amazon Web Services 服务 事件](non-api-aws-service-events.md)。

         1. 对于每个字段，请选择 **\+ 条件**以根据需要添加任意数量的条件，所有条件总共可有最多 500 个指定值。

            有关如何 CloudTrail 评估多个条件的信息，请参阅[如何 CloudTrail 评估一个字段的多个条件](filtering-data-events.md#filtering-data-events-conditions)。
**注意**  
对于事件数据存储上的所有选择器，最多可以有 500 个值。这包括选择器的多个值的数组，例如 `eventName`。如果所有选择器均为单个值，则最多可以向选择器添加 500 个条件。

         1. 根据需要，选择 **\+ 字段**以添加其他字段。为了避免错误，请不要为字段设置冲突或重复的值。

      1. 或者，展开 **JSON 视图**将您的高级事件选择器作为 JSON 数据块查看。

   1. 选择**启用 Insights 事件捕获**以启用 Insights。要启用 Insights，您需要设置[目标事件数据存储](query-event-data-store-insights.md#query-event-data-store-insights-procedure)来将根据该事件数据存储中的管理事件活动收集 Insights 事件。

      如果您选择启用 Insights，请执行以下操作。

      1. 选择将记录 Insights 事件的目标事件存储。目标事件数据存储将根据该事件数据存储中的管理事件活动收集 Insights 事件。有关如何创建目标事件数据存储的信息，请参阅[要创建记录 Insights 事件的目标事件数据存储](query-event-data-store-insights.md#query-event-data-store-insights-procedure)。

      1. 选择 Insights 类型。您可以选择 **API 调用率**、**API 错误率**或同时选择此两者。您必须记录**写入**管理事件，以针对 **API 调用率**记录 Insights 事件。您必须记录**读取**或**写入**管理事件，以针对 **API 错误率**记录 Insights 事件。

1. 完成后选择**保存更改**。

## 使用记录管理事件 Amazon CLI
<a name="creating-mgmt-event-selectors-with-the-AWS-CLI"></a>

您可以使用 Amazon CLI配置您的跟踪记录以记录管理事件。

### 示例：记录跟踪的管理事件
<a name="log-mgmt-events-trails-examples"></a>

要查看您的跟踪是否正在记录管理事件，请运行 `get-event-selectors` 命令。

```
aws cloudtrail get-event-selectors --trail-name {{TrailName}}
```

以下示例返回跟踪的默认设置。默认情况下，跟踪记录所有管理事件，记录所有事件源的事件，但不记录数据事件。

```
{
    "TrailARN": "arn:aws:cloudtrail:us-east-1:111122223333:trail/{{TrailName}}",
    "AdvancedEventSelectors": [
        {
            "Name": "Management events selector",
            "FieldSelectors": [
                {
                    "Field": "eventCategory",
                    "Equals": [
                        "Management"
                    ]
                }
            ]
        }
    ]
}
```

您可以使用基本或高级事件选择器来记录管理事件。不能将事件选择器和高级事件选择器同时应用于跟踪。如果将高级事件选择器应用于跟踪，则所有现有的基本事件选择器都将被覆盖。以下部分提供了如何使用高级事件选择器和基本事件选择器记录管理事件的示例。

**Topics**
+ [示例：使用高级事件选择器记录跟踪的管理事件](#log-mgmt-events-trails-examples-adv)
+ [示例：使用基本事件选择器记录跟踪的管理事件](#log-mgmt-events-trails-examples-basic)

#### 示例：使用高级事件选择器记录跟踪的管理事件
<a name="log-mgmt-events-trails-examples-adv"></a>

以下示例为名为的跟踪创建了一个高级事件选择器，{{TrailName}}以包含只读和只写管理事件（省略`readOnly`选择器），但排除 Amazon Key Management Service (Amazon KMS) 事件。由于 Amazon KMS 事件被视为管理事件，而且其数量可能很大，因此，如果您有多个跟踪记录管理事件，它们可能会对您的 CloudTrail 账单产生重大影响。

如果您选择不记录管理事件，则不会记录 Amazon KMS 事件，也无法更改 Amazon KMS 事件日志记录设置。

要重新开始将 Amazon KMS 事件记录到跟踪，请移除`eventSource`选择器，然后再次运行该命令。

```
aws cloudtrail put-event-selectors --trail-name {{TrailName}} \
--advanced-event-selectors '
[
  {
    "Name": "Log all management events except KMS events",
    "FieldSelectors": [
      { "Field": "eventCategory", "Equals": ["Management"] },
      { "Field": "eventSource", "NotEquals": ["kms.amazonaws.com"] }
    ]
  }
]'
```

以下示例返回为跟踪配置的高级事件选择器。

```
{
  "AdvancedEventSelectors": [
    {
      "Name": "Log all management events except KMS events",
      "FieldSelectors": [
        {
          "Field": "eventCategory", 
          "Equals": [ "Management" ]
        },
        {
          "Field": "eventSource", 
          "NotEquals": [ "kms.amazonaws.com" ]
        }
      ]
    }
  ],
  "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/{{TrailName}}"
}
```

要再次开始将排除的事件记录到跟踪，请删除 `eventSource` 选择器，如以下命令中所示。

```
aws cloudtrail put-event-selectors --trail-name {{TrailName}} \
--advanced-event-selectors '
[
  {
    "Name": "Log all management events",
    "FieldSelectors": [
      { "Field": "eventCategory", "Equals": ["Management"] }
    ]
  }
]'
```

下一个示例为名为的跟踪创建高级事件选择器，{{TrailName}}以包括只读和只写管理事件（省略`readOnly`选择器），但不包括 Amazon RDS 数据 API 管理事件。要排除 Amazon RDS 数据 API 管理事件，请在 `eventSource` 字段的字符串值中指定 Amazon RDS 数据 API 事件源：`rdsdata.amazonaws.com`。

如果选择不记录管理事件，则不会记录 Amazon RDS 数据 API 管理事件，并且您无法更改 Amazon RDS 数据 API 事件日志记录设置。

要再次开始将 Amazon RDS 数据 API 管理事件记录到跟踪，请删除 `eventSource` 选择器，然后再次运行命令。

```
aws cloudtrail put-event-selectors --trail-name {{TrailName}} \
--advanced-event-selectors '
[
  {
    "Name": "Log all management events except Amazon RDS Data API management events",
    "FieldSelectors": [
      { "Field": "eventCategory", "Equals": ["Management"] },
      { "Field": "eventSource", "NotEquals": ["rdsdata.amazonaws.com"] }
    ]
  }
]'
```

以下示例返回为跟踪配置的高级事件选择器。

```
{
  "AdvancedEventSelectors": [
    {
      "Name": "Log all management events except Amazon RDS Data API management events",
      "FieldSelectors": [
        {
          "Field": "eventCategory", 
          "Equals": [ "Management" ]
        },
        {
          "Field": "eventSource", 
          "NotEquals": [ "rdsdata.amazonaws.com" ]
        }
      ]
    }
  ],
  "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/{{TrailName}}"
}
```

要再次开始将排除的事件记录到跟踪，请删除 `eventSource` 选择器，如以下命令中所示。

```
aws cloudtrail put-event-selectors --trail-name {{TrailName}} \
--advanced-event-selectors '
[
  {
    "Name": "Log all management events",
    "FieldSelectors": [
      { "Field": "eventCategory", "Equals": ["Management"] }
    ]
  }
]'
```

#### 示例：使用基本事件选择器记录跟踪的管理事件
<a name="log-mgmt-events-trails-examples-basic"></a>

要将跟踪配置为记录管理事件，请运行 `put-event-selectors` 命令。以下示例说明如何配置您的跟踪以包含两个 S3 对象的所有管理事件。您可以为一个跟踪指定 1 至 5 个事件选择器。您可以为一个跟踪指定 1 至 250 个数据资源。

**注意**  
无论有多少个事件选择器，最多只能有 250 个 S3 数据资源。

```
aws cloudtrail put-event-selectors --trail-name {{TrailName}} --event-selectors '[{ "ReadWriteType": "All", "IncludeManagementEvents":true, "DataResources": [{ "Type": "AWS::S3::Object", "Values": ["arn:aws:s3:::amzn-s3-demo-bucket/prefix", "arn:aws:s3:::amzn-s3-demo-bucket2/prefix2"] }] }]'
```

以下示例返回为跟踪配置的事件选择器。

```
{
    "TrailARN": "arn:aws:cloudtrail:us-east-1:111122223333:trail/{{TrailName}}",
    "EventSelectors": [
        {
            "ReadWriteType": "All",
            "IncludeManagementEvents": true,
            "DataResources": [
                {
                    "Type": "AWS::S3::Object",
                    "Values": [
                        "arn:aws:s3:::amzn-s3-demo-bucket/prefix",
                        "arn:aws:s3:::amzn-s3-demo-bucket2/prefix2",
                    ]  
                }
            ],
            "ExcludeManagementEventSources": []
        }
    ]
}
```

要从跟踪日志中排除 Amazon Key Management Service (Amazon KMS) 事件，请运行`put-event-selectors`命令并添加值为`ExcludeManagementEventSources`的属性`kms.amazonaws.com`。以下示例为名为的跟踪创建事件选择器，{{TrailName}}以包括只读和只写管理事件，但不包括 Amazon KMS 事件。由于 Amazon KMS 可能会生成大量事件，因此本示例中的用户可能希望限制事件以管理跟踪成本。

```
aws cloudtrail put-event-selectors --trail-name {{TrailName}} --event-selectors '[{"ReadWriteType": "All","ExcludeManagementEventSources": ["kms.amazonaws.com"],"IncludeManagementEvents": true}]'
```

以下示例返回为跟踪配置的事件选择器。

```
{
    "TrailARN": "arn:aws:cloudtrail:us-east-1:111122223333:trail/{{TrailName}}",
    "EventSelectors": [
        {
            "ReadWriteType": "All",
            "IncludeManagementEvents": true,
            "DataResources": [],
            "ExcludeManagementEventSources": [
                "kms.amazonaws.com"
            ]
        }
    ]
}
```

要从跟踪的日志中排除 Amazon RDS 数据 API 管理事件，请运行 `put-event-selectors` 命令并添加值为 `rdsdata.amazonaws.com` 的 `ExcludeManagementEventSources` 属性。以下示例为名为的跟踪创建事件选择器，{{TrailName}}以包括只读和只写管理事件，但不包括 Amazon RDS 数据 API 管理事件。由于 Amazon RDS 数据 API 可以生成大量管理事件，因此此示例中的用户可能希望限制事件以管理跟踪的成本。

```
{
    "TrailARN": "arn:aws:cloudtrail:us-east-1:111122223333:trail/{{TrailName}}",
    "EventSelectors": [
        {
            "ReadWriteType": "All",
            "IncludeManagementEvents": true,
            "DataResources": [],
            "ExcludeManagementEventSources": [
                "rdsdata.amazonaws.com"
            ]
        }
    ]
}
```

要重新开始向跟踪记录 Amazon KMS 或 Amazon RDS 数据 API 管理事件，请传递一个空字符串作为值`ExcludeManagementEventSources`，如以下命令所示。

```
aws cloudtrail put-event-selectors --trail-name {{TrailName}} --event-selectors '[{"ReadWriteType": "All","ExcludeManagementEventSources": [],"IncludeManagementEvents": true}]'
```

要将相关 Amazon KMS 事件记录到跟踪（如`Disable``ScheduleKey`、`Delete`和），但不包括高容量 Amazon KMS 事件（如`Encrypt``Decrypt``GenerateDataKey`、和），请记录只写管理事件，并保留记录 Amazon KMS 事件的默认设置，如以下示例所示。

```
aws cloudtrail put-event-selectors --trail-name {{TrailName}} --event-selectors '[{"ReadWriteType": "WriteOnly","ExcludeManagementEventSources": [],"IncludeManagementEvents": true}]'
```

## 使用记录管理事件 Amazon SDKs
<a name="logging-management-events-with-the-AWS-SDKs"></a>

使用该[GetEventSelectors](https://docs.amazonaws.cn/awscloudtrail/latest/APIReference/API_GetEventSelectors.html)操作来查看您的跟踪是否正在记录跟踪的管理事件。您可以将跟踪配置为通过[PutEventSelectors](https://docs.amazonaws.cn/awscloudtrail/latest/APIReference/API_PutEventSelectors.html)操作记录管理事件。有关更多信息，请参阅 [Amazon CloudTrail API 参考](https://docs.amazonaws.cn/awscloudtrail/latest/APIReference/)。