

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

# 用于 AWS 出售日志的内置处理器
<a name="CloudWatch-Logs-Transformation-BuiltIn"></a>

本节包含有关内置处理器的信息，您可以将这些处理器与 AWS 提供日志的服务一起使用。

**Contents**
+ [parseWAF](#CloudWatch-Logs-Transformation-parseWAF)
+ [parsePostgres](#CloudWatch-Logs-Transformation-parsePostGres)
+ [parseCloudfront](#CloudWatch-Logs-Transformation-parseCloudFront)
+ [parseRoute53](#CloudWatch-Logs-Transformation-parseRoute53)
+ [parseVPC](#CloudWatch-Logs-Transformation-parseVPC)
+ [parseToOCSF](CloudWatch-Logs-Transformation-parseToOCSF.md)

## parseWAF
<a name="CloudWatch-Logs-Transformation-parseWAF"></a>

使用此处理器来解析 AWS WAF 出售的日志，它获取每个标头名称的内容`httpRequest.headers`并使用相应的值创建 JSON 密钥。它还会对 `labels` 执行相同的操作。这些转换可以使查询 AWS WAF 日志变得更加容易。有关 AWS WAF 日志格式的更多信息，请参阅 [Web ACL 流量的日志示例](https://docs.aws.amazon.com/waf/latest/developerguide/logging-examples.html)。

此处理器仅接受 `@message` 作为输入。

**重要**  
如果您使用此处理器，则它必须是转换器中的第一个处理器。

**示例**

以以下日志事件为例：

```
{
  "timestamp": 1576280412771,
  "formatVersion": 1,
  "webaclId": "arn:aws:wafv2:ap-southeast-2:111122223333:regional/webacl/STMTest/1EXAMPLE-2ARN-3ARN-4ARN-123456EXAMPLE",
  "terminatingRuleId": "STMTest_SQLi_XSS",
  "terminatingRuleType": "REGULAR",
  "action": "BLOCK",
  "terminatingRuleMatchDetails": [
    {
      "conditionType": "SQL_INJECTION",
      "sensitivityLevel": "HIGH",
      "location": "HEADER",
      "matchedData": ["10", "AND", "1"]
    }
  ],
  "httpSourceName": "-",
  "httpSourceId": "-",
  "ruleGroupList": [],
  "rateBasedRuleList": [],
  "nonTerminatingMatchingRules": [],
  "httpRequest": {
    "clientIp": "1.1.1.1",
    "country": "AU",
    "headers": [
      { "name": "Host", "value": "localhost:1989" },
      { "name": "User-Agent", "value": "curl/7.61.1" },
      { "name": "Accept", "value": "*/*" },
      { "name": "x-stm-test", "value": "10 AND 1=1" }
    ],
    "uri": "/myUri",
    "args": "",
    "httpVersion": "HTTP/1.1",
    "httpMethod": "GET",
    "requestId": "rid"
  },
  "labels": [{ "name": "value" }]
}
```

处理器配置如下所示：

```
[
    {
        "parseWAF": {}
    }
]
```

转换后的日志事件将如下所示。

```
{
  "httpRequest": {
    "headers": {
      "Host": "localhost:1989",
      "User-Agent": "curl/7.61.1",
      "Accept": "*/*",
      "x-stm-test": "10 AND 1=1"
    },
    "clientIp": "1.1.1.1",
    "country": "AU",
    "uri": "/myUri",
    "args": "",
    "httpVersion": "HTTP/1.1",
    "httpMethod": "GET",
    "requestId": "rid"
  },
  "labels": { "name": "value" },
  "timestamp": 1576280412771,
  "formatVersion": 1,
  "webaclId": "arn:aws:wafv2:ap-southeast-2:111122223333:regional/webacl/STMTest/1EXAMPLE-2ARN-3ARN-4ARN-123456EXAMPLE",
  "terminatingRuleId": "STMTest_SQLi_XSS",
  "terminatingRuleType": "REGULAR",
  "action": "BLOCK",
  "terminatingRuleMatchDetails": [
    {
      "conditionType": "SQL_INJECTION",
      "sensitivityLevel": "HIGH",
      "location": "HEADER",
      "matchedData": ["10", "AND", "1"]
    }
  ],
  "httpSourceName": "-",
  "httpSourceId": "-",
  "ruleGroupList": [],
  "rateBasedRuleList": [],
  "nonTerminatingMatchingRules": []
}
```

## parsePostgres
<a name="CloudWatch-Logs-Transformation-parsePostGres"></a>

使用此处理器来解析 Amazon RDS for PostgreSQL 出售的日志、提取字段并将其转换为 JSON 格式。有关 RDS for PostgreSQL 日志格式的更多信息，请参阅 [RDS for PostgreSQL 据库日志文件](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.PostgreSQL.html#USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix)。

此处理器仅接受 `@message` 作为输入。

**重要**  
如果您使用此处理器，则它必须是转换器中的第一个处理器。

**示例**

以以下日志事件为例：

```
2019-03-10 03:54:59 UTC:10.0.0.123(52834):postgres@logtestdb:[20175]:ERROR: column "wrong_column_name" does not exist at character 8
```

处理器配置如下所示：

```
[
    {
        "parsePostgres": {}
    }
]
```

转换后的日志事件将如下所示。

```
{
  "logTime": "2019-03-10 03:54:59 UTC",
  "srcIp": "10.0.0.123(52834)",
  "userName": "postgres",
  "dbName": "logtestdb",
  "processId": "20175",
  "logLevel": "ERROR"
}
```

## parseCloudfront
<a name="CloudWatch-Logs-Transformation-parseCloudFront"></a>

使用此处理器来解析 Amazon CloudFront 出售的日志、提取字段并将其转换为 JSON 格式。对编码的字段值进行解码。整数和双精度值按此方法处理。有关 Amazon CloudFront 日志格式的更多信息，请参阅[配置和使用标准日志（访问日志）](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html)。

此处理器仅接受 `@message` 作为输入。

**重要**  
如果您使用此处理器，则它必须是转换器中的第一个处理器。

**示例**

以以下日志事件为例：

```
2019-12-04  21:02:31   LAX1   392    192.0.2.24    GET    d111111abcdef8.cloudfront.net  /index.html    200    -  Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36  -  -  Hit    SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ==   d111111abcdef8.cloudfront.net  https  23 0.001  -  TLSv1.2    ECDHE-RSA-AES128-GCM-SHA256    Hit    HTTP/2.0   -  -  11040  0.001  Hit    text/html  78 -  -
```

处理器配置如下所示：

```
[
    {
        "parseCloudfront": {}
    }
]
```

转换后的日志事件将如下所示。

```
{
  "date": "2019-12-04",
  "time": "21:02:31",
  "x-edge-location": "LAX1",
  "sc-bytes": 392,
  "c-ip": "192.0.2.24",
  "cs-method": "GET",
  "cs(Host)": "d111111abcdef8.cloudfront.net",
  "cs-uri-stem": "/index.html",
  "sc-status": 200,
  "cs(Referer)": "-",
  "cs(User-Agent)": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
  "cs-uri-query": "-",
  "cs(Cookie)": "-",
  "x-edge-result-type": "Hit",
  "x-edge-request-id": "SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ==",
  "x-host-header": "d111111abcdef8.cloudfront.net",
  "cs-protocol": "https",
  "cs-bytes": 23,
  "time-taken": 0.001,
  "x-forwarded-for": "-",
  "ssl-protocol": "TLSv1.2",
  "ssl-cipher": "ECDHE-RSA-AES128-GCM-SHA256",
  "x-edge-response-result-type": "Hit",
  "cs-protocol-version": "HTTP/2.0",
  "fle-status": "-",
  "fle-encrypted-fields": "-",
  "c-port": 11040,
  "time-to-first-byte": 0.001,
  "x-edge-detailed-result-type": "Hit",
  "sc-content-type": "text/html",
  "sc-content-len": 78,
  "sc-range-start": "-",
  "sc-range-end": "-"
}
```

## parseRoute53
<a name="CloudWatch-Logs-Transformation-parseRoute53"></a>

使用此处理器来解析 Amazon Route 53 Public Data Plane 出售的日志、提取字段并将其转换为 JSON 格式。对编码的字段值进行解码。此处理器不支持 Amazon Route 53 Resolver 日志。

此处理器仅接受 `@message` 作为输入。

**重要**  
如果您使用此处理器，则它必须是转换器中的第一个处理器。

**示例**

以以下日志事件为例：

```
1.0 2017-12-13T08:15:50.235Z Z123412341234 example.com AAAA NOERROR TCP IAD12 192.0.2.0 198.51.100.0/24
```

处理器配置如下所示：

```
[
    {
        "parseRoute53": {}
    }
]
```

转换后的日志事件将如下所示。

```
{
  "version": 1.0,
  "queryTimestamp": "2017-12-13T08:15:50.235Z",
  "hostZoneId": "Z123412341234",
  "queryName": "example.com",
  "queryType": "AAAA",
  "responseCode": "NOERROR",
  "protocol": "TCP",
  "edgeLocation": "IAD12",
  "resolverIp": "192.0.2.0",
  "ednsClientSubnet": "198.51.100.0/24"
}
```

## parseVPC
<a name="CloudWatch-Logs-Transformation-parseVPC"></a>

使用此处理器来解析 Amazon VPC 公开发布的日志、提取字段并将其转换为 JSON 格式。对编码的字段值进行解码。

此处理器仅接受 `@message` 作为输入。

**重要**  
如果您使用此处理器，则它必须是转换器中的第一个处理器。

**示例**

以以下日志事件为例：

```
2 123456789010 eni-abc123de 192.0.2.0 192.0.2.24 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK
```

处理器配置如下所示：

```
[
    {
        "parseVPC": {}
    }
]
```

转换后的日志事件将如下所示。

```
{
  "version": 2,
  "accountId": "123456789010",
  "interfaceId": "eni-abc123de",
  "srcAddr": "192.0.2.0",
  "dstAddr": "192.0.2.24",
  "srcPort": 20641,
  "dstPort": 22,
  "protocol": 6,
  "packets": 20,
  "bytes": 4249,
  "start": 1418530010,
  "end": 1418530070,
  "action": "ACCEPT",
  "logStatus": "OK"
}
```

# parseToOCSF
<a name="CloudWatch-Logs-Transformation-parseToOCSF"></a>

`parseToOCSF` 处理器将日志转换为开放式网络安全架构框架（OCSF）事件。OCSF 是一种开放标准，它为安全数据提供了通用架构，从而能够在不同安全工具和平台之间实现更好的互操作性和分析。

该处理器对于安全分析工作流程特别有用，在这些工作流程中，您需要将来自各种 AWS 服务的日志格式标准化为一致的架构以进行下游分析。

**参数**

`eventSource`（必需）  
指定生成要转换的日志事件的 AWS 服务或进程。有效值为：  
+ `CloudTrail`- CloudTrail 日志
+ `Route53Resolver`：Route 53 Resolver 日志
+ `VPCFlow`：Amazon VPC 流日志
+ `EKSAudit`：Amazon EKS 审计日志
+ `AWSWAF`- AWS WAF 日志

`ocsfVersion`（必需）  
指定用于转换后的日志事件的 OCSF 架构版本。目前支持的版本：`V1.1, V1.5`

`mappingVersion`（可选）  
指定 OCSF 转换映射版本。控制在将日志转换为 OCSF 格式时应用哪种转换逻辑。如果未指定，则在创建策略时使用最新的可用版本。发布新的映射版本时，现有策略不会自动升级。当前最新版本:`v1.5.0`.  
**注意：**在支持时`ocsfVersion`不支持`V1.1`。

`source`（可选）  
要解析的日志事件中字段的路径。如果省略，则解析整条日志消息。

**示例**

以下示例展示了如何使用 `parseToOCSF` 将 VPC 流日志转换为 OCSF 格式：

```
{
  "parseToOCSF": {
    "eventSource": "VPCFlow",
    "ocsfVersion": "V1.1"
  }
}
```

以下示例说明如何为一致的转换行为指定特定的映射版本：

```
{
  "parseToOCSF": {
    "eventSource": "CloudTrail",
    "ocsfVersion": "V1.5",
    "mappingVersion": "v1.5.0"
  }
}
```