

# 数据库活动流的 databaseActivityEventList JSON 数组
<a name="DBActivityStreams.AuditLog.databaseActivityEventList"></a>

审核日志负载是解密的 `databaseActivityEventList` JSON 数组。以下表列表按字母顺序列出了审计日志的解密 `DatabaseActivityEventList` 数组中每个活动事件的字段。这些字段会因您使用的是 Aurora PostgreSQL 还是 Aurora MySQL 而有所不同。请参阅适用于您的数据库引擎的表。

**重要**  
事件结构可能会发生变化。Aurora 可能会将新字段添加到未来的活动事件中。在解析 JSON 数据的应用程序中，请确保您的代码可以忽略未知字段名称或对其采取适当操作。

## Aurora PostgreSQL 的 databaseActivityEventList 字段
<a name="DBActivityStreams.AuditLog.databaseActivityEventList.apg"></a>

以下是 Aurora PostgreSQL 的 `databaseActivityEventList` 字段。


| 字段 | 数据类型 | 描述 | 
| --- | --- | --- | 
| class | 字符串 |  活动事件的类。Aurora PostgreSQL 的有效值如下所示： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/DBActivityStreams.AuditLog.databaseActivityEventList.html)  | 
| clientApplication | 字符串 | 客户端报告的其用于连接的应用程序。由于客户端不必提供此信息，因此值可以为 null。 | 
| command | 字符串 | 不带任何命令详细信息的 SQL 命令的名称。 | 
| commandText | 字符串 |  用户传入的实际 SQL 语句。对于 Aurora PostgreSQL，该值与原始 SQL 语句相同。此字段用于除连接或断开连接记录之外的所有类型的记录，在这种情况下，该值为 null。  每个语句的完整 SQL 文本在活动流审核日志中可见，包括任何敏感数据。但是，如果 Aurora 可以从上下文中确定数据库用户密码，则会对该密码进行修订，如下面的 SQL 语句所示。 <pre>ALTER ROLE role-name WITH password</pre>   | 
| databaseName | 字符串 | 用户连接到的数据库。 | 
| dbProtocol | 字符串 | 数据库协议，例如 Postgres 3.0。 | 
| dbUserName | 字符串 | 客户端对其进行身份验证的数据库用户。 | 
| errorMessage（仅版本 1.1 数据库活动记录） | 字符串 |  如果出现任何错误，则使用数据库服务器生成的错误消息填充此字段。对于未导致错误的普通语句，`errorMessage` 值为 null。 错误定义为生成客户端可见 PostgreSQL 错误日志事件（其严重性级别为 `ERROR` 或更高）的任何活动。有关更多信息，请参阅 [PostgreSQL 消息严重性级别](https://www.postgresql.org/docs/current/runtime-config-logging.html#RUNTIME-CONFIG-SEVERITY-LEVELS)。例如，语法错误和查询取消会生成错误消息。 内部 PostgreSQL 服务器错误（例如后台检查指针进程错误）不会生成错误消息。但是，无论如何设置日志严重性级别，此类事件的记录仍会发出。这样可防止攻击者关闭日志记录以尝试避开检测。 另请参阅 `exitCode` 字段。  | 
| exitCode | int | 用于会话退出记录的值。在干净的出口，这包含退出代码。在某些故障场景中，无法始终获得退出代码。例如，如果 PostgreSQL 执行 exit() 或操作者执行 kill -9 等命令。如果存在任何错误，则 `exitCode` 字段将显示 SQL 错误代码 `SQLSTATE`，如 [PostgreSQL 错误代码](https://www.postgresql.org/docs/current/errcodes-appendix.html)中所列。另请参阅 `errorMessage` 字段。 | 
| logTime | 字符串 | 审核代码路径中记录的时间戳。这表示 SQL 语句执行结束时间。另请参阅 startTime 字段。 | 
| netProtocol | 字符串 | 网络通信协议。 | 
| objectName | 字符串 | 数据库对象的名称（如果正在对一个数据库对象运行 SQL 语句）。此字段仅在对数据库对象运行 SQL 语句时使用。如果未对一个对象运行 SQL 语句，则此值为 null。 | 
| objectType | 字符串 | 数据库对象类型，例如表、索引、视图等。此字段仅在对数据库对象运行 SQL 语句时使用。如果未对一个对象运行 SQL 语句，则此值为 null。包括下列有效值：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/DBActivityStreams.AuditLog.databaseActivityEventList.html) | 
| paramList | 字符串 | 传递给 SQL 语句的逗号分隔的参数数组。如果 SQL 语句没有参数，则此值为空数组。 | 
| pid | int | 为向客户端连接提供服务而分配的后端进程的进程 ID。 | 
| remoteHost | 字符串 | 客户端 IP 地址或主机名。对于 Aurora PostgreSQL，使用哪一个取决于数据库的 log\$1hostname 参数设置。remoteHost 值还包括指示活动来自 rdsadmin 用户的 [local] 和 localhost。 | 
| remotePort | 字符串 | 客户端的端口号。 | 
| rowCount | int | SQL 语句所影响或检索的表行的数目。此字段仅用于作为数据操作语言 (DML) 语句的 SQL 语句。如果 SQL 语句不是 DML 语句，则此值为 null。 | 
| serverHost | 字符串 | 数据库服务器主机 IP 地址。serverHost 值还包括指示活动来自 rdsadmin 用户的 [local] 和 localhost。 | 
| serverType | 字符串 | 数据库服务器类型，例如 PostgreSQL。 | 
| serverVersion | 字符串 | 数据库服务器版本，例如对于 Aurora PostgreSQL 为 2.3.1。 | 
| serviceName | 字符串 | 服务名称，例如 Amazon Aurora PostgreSQL-Compatible edition。 | 
| sessionId | int | 伪唯一会话标识符。 | 
| sessionId | int | 伪唯一会话标识符。 | 
| startTime（仅版本 1.1 数据库活动记录） | 字符串 |  SQL 语句开始执行的时间。 要计算 SQL 语句的近似执行时间，请使用 `logTime - startTime`。另请参阅 `logTime` 字段。  | 
| statementId | int | 客户端的 SQL 语句的标识符。计数器处于会话级别，并随客户端输入的每个 SQL 语句递增。 | 
| substatementId | int | SQL 子语句的标识符。此值计算 statementId 字段标识的每个 SQL 语句的包含的子语句。 | 
| type | 字符串 | 事件类型。有效值为 record 或 heartbeat。 | 

## Aurora MySQL 的 databaseActivityEventList 字段
<a name="DBActivityStreams.AuditLog.databaseActivityEventList.ams"></a>

以下是 Aurora MySQL 的 `databaseActivityEventList` 字段。


| 字段 | 数据类型 | 描述 | 
| --- | --- | --- | 
| class | 字符串 |  活动事件的类。 Aurora MySQL 的有效值如下所示： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/DBActivityStreams.AuditLog.databaseActivityEventList.html)  | 
| clientApplication | 字符串 | 客户端报告的其用于连接的应用程序。由于客户端不必提供此信息，因此值可以为 null。 | 
| command | 字符串 |  SQL 语句的常规类别。此字段的值取决于 `class` 的值。 `class` 为 `MAIN` 时的值包括以下值： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/DBActivityStreams.AuditLog.databaseActivityEventList.html) `class` 为 `AUX` 时的值包括以下值： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/DBActivityStreams.AuditLog.databaseActivityEventList.html)  | 
| commandText | 字符串 |  对于 `class` 值为 `MAIN` 的事件，此字段表示用户传入的实际 SQL 语句。此字段用于除连接或断开连接记录之外的所有类型的记录，在这种情况下，该值为 null。  对于 `class` 值为 `AUX` 的事件，此字段包含有关事件中涉及的对象的补充信息。 对于 Aurora MySQL，字符（如引号）前面有反斜杠，表示转义字符。  每个语句的完整 SQL 文本在审核日志中可见，包括任何敏感数据。但是，如果 Aurora 可以从上下文中确定数据库用户密码，则会对该密码进行修订，如下面的 SQL 语句所示。 <pre>mysql> SET PASSWORD = 'my-password';</pre> 作为安全最佳实践，请指定除此处所示提示以外的密码。   | 
| databaseName | 字符串 | 用户连接到的数据库。 | 
| dbProtocol | 字符串 | 数据库协议。目前，对于 Aurora MySQL，此值始终为 MySQL。 | 
| dbUserName | 字符串 | 客户端对其进行身份验证的数据库用户。 | 
| endTime（仅版本 1.2 数据库活动记录） | 字符串 |  SQL 语句执行结束的时间。它以协调世界时 (UTC) 格式表示。 要计算 SQL 语句的执行时间，请使用 `endTime - startTime`。另请参阅 `startTime` 字段。  | 
| errorMessage（仅版本 1.1 数据库活动记录） | 字符串 |  如果出现任何错误，则使用数据库服务器生成的错误消息填充此字段。对于未导致错误的普通语句，`errorMessage` 值为 null。 错误定义为生成客户端可见 MySQL 错误日志事件（其严重性级别为 `ERROR` 或更高）的任何活动。有关更多信息，请参阅 *MySQL 参考手册*中的[错误日志](https://dev.mysql.com/doc/refman/5.7/en/error-log.html)。例如，语法错误和查询取消会生成错误消息。 内部 MySQL 服务器错误（例如后台检查指针进程错误）不会生成错误消息。但是，无论如何设置日志严重性级别，此类事件的记录仍会发出。这样可防止攻击者关闭日志记录以尝试避开检测。 另请参阅 `exitCode` 字段。  | 
| exitCode | int | 用于会话退出记录的值。在干净的出口，这包含退出代码。在某些故障场景中，无法始终获得退出代码。在此类情况下，此值可能为零，也可能为空。 | 
| logTime | 字符串 | 审核代码路径中记录的时间戳。它以协调世界时 (UTC) 格式表示。有关计算语句持续时间的最准确方法，请参阅 startTime 和 endTime 字段。 | 
| netProtocol | 字符串 | 网络通信协议。目前，对于 Aurora MySQL，此值始终为 TCP。 | 
| objectName | 字符串 | 数据库对象的名称（如果正在对一个数据库对象运行 SQL 语句）。此字段仅在对数据库对象运行 SQL 语句时使用。如果未对一个对象运行 SQL 语句，则此值为空。要构造对象的完全限定名称，请将 databaseName 和 objectName 组合起来。如果查询涉及多个对象，则此字段可以是名称的逗号分隔列表。 | 
| objectType | 字符串 |  数据库对象类型，例如表、索引等。此字段仅在对数据库对象运行 SQL 语句时使用。如果未对一个对象运行 SQL 语句，则此值为 null。 Aurora MySQL 的有效值包括： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/DBActivityStreams.AuditLog.databaseActivityEventList.html)  | 
| paramList | 字符串 | 此字段不用于 Aurora MySQL 且始终为 null。 | 
| pid | int | 为向客户端连接提供服务而分配的后端进程的进程 ID。当数据库服务器重新启动时，pid 会发生更改，并且 statementId 字段的计数器会重新开始。 | 
| remoteHost | 字符串 | 发出 SQL 语句的客户端的 IP 地址或主机名。对于 Aurora MySQL，使用哪一个取决于数据库的 skip\$1name\$1resolve 参数设置。值 localhost 指示来自 rdsadmin 特殊用户的活动。 | 
| remotePort | 字符串 | 客户端的端口号。 | 
| rowCount | int | SQL 语句返回的行数。例如，如果 SELECT 语句返回 10 行，则 rowCount 为 10。对于 INSERT 或 UPDATE 语句，则 rowCount 为 0。 | 
| serverHost | 字符串 | 数据库服务器实例标识符。 | 
| serverType | 字符串 | 数据库服务器类型，例如 MySQL。 | 
| serverVersion | 字符串 | 数据库服务器版本。目前，对于 Aurora MySQL，此值始终为 MySQL 5.7.12。 | 
| serviceName | 字符串 | 服务的名称。目前，对于 Aurora MySQL，此值始终为 Amazon Aurora MySQL。 | 
| sessionId | int | 伪唯一会话标识符。 | 
| startTime（仅版本 1.1 数据库活动记录） | 字符串 |  SQL 语句开始执行的时间。它以协调世界时 (UTC) 格式表示。 要计算 SQL 语句的执行时间，请使用 `endTime - startTime`。另请参阅 `endTime` 字段。  | 
| statementId | int | 客户端的 SQL 语句的标识符。计数器随客户端输入的每个 SQL 语句递增。在重新启动数据库实例时，将重置计数器。 | 
| substatementId | int | SQL 子语句的标识符。对于类为 MAIN 的事件，此值为 1；对于类为 AUX 的事件，此值为 2。使用 statementId 字段标识同一语句生成的所有事件。 | 
| transactionId（仅版本 1.2 数据库活动记录） | int | 事务的标识符。 | 
| type | 字符串 | 事件类型。有效值为 record 或 heartbeat。 | 