数据库活动流的 databaseActivityEventList JSON 数组
审核日志负载是解密的 databaseActivityEventList
JSON 数组。以下表列表按字母顺序列出了审计日志的解密 DatabaseActivityEventList
数组中每个活动事件的字段。这些字段会因您使用的是 Aurora PostgreSQL 还是 Aurora MySQL 而有所不同。请参阅适用于您的数据库引擎的表。
重要
事件结构可能会发生变化。Aurora 可能会将新字段添加到未来的活动事件中。在解析 JSON 数据的应用程序中,请确保您的代码可以忽略未知字段名称或对其采取适当操作。
Aurora PostgreSQL 的 databaseActivityEventList 字段
以下是 Aurora PostgreSQL 的 databaseActivityEventList
字段。
字段 | 数据类型 | 描述 |
---|---|---|
class |
字符串 |
活动事件的类。Aurora PostgreSQL 的有效值如下所示:
|
clientApplication |
字符串 | 客户端报告的其用于连接的应用程序。由于客户端不必提供此信息,因此值可以为 null。 |
command |
字符串 | 不带任何命令详细信息的 SQL 命令的名称。 |
commandText |
字符串 |
用户传入的实际 SQL 语句。对于 Aurora PostgreSQL,该值与原始 SQL 语句相同。此字段用于除连接或断开连接记录之外的所有类型的记录,在这种情况下,该值为 null。 重要每个语句的完整 SQL 文本在活动流审核日志中可见,包括任何敏感数据。但是,如果 Aurora 可以从上下文中确定数据库用户密码,则会对该密码进行修订,如下面的 SQL 语句所示。
|
databaseName |
字符串 | 用户连接到的数据库。 |
dbProtocol |
字符串 | 数据库协议,例如 Postgres 3.0 。 |
dbUserName |
字符串 | 客户端对其进行身份验证的数据库用户。 |
errorMessage (仅版本 1.1 数据库活动记录) |
字符串 |
如果出现任何错误,则使用数据库服务器生成的错误消息填充此字段。对于未导致错误的普通语句, 错误定义为生成客户端可见 PostgreSQL 错误日志事件(其严重性级别为 内部 PostgreSQL 服务器错误(例如后台检查指针进程错误)不会生成错误消息。但是,无论如何设置日志严重性级别,此类事件的记录仍会发出。这样可防止攻击者关闭日志记录以尝试避开检测。 另请参阅 |
exitCode |
int | 用于会话退出记录的值。在干净的出口,这包含退出代码。在某些故障场景中,无法始终获得退出代码。例如,如果 PostgreSQL 执行 exit() 或操作者执行 kill -9 等命令。如果存在任何错误,则 另请参阅 |
logTime |
字符串 | 审核代码路径中记录的时间戳。这表示 SQL 语句执行结束时间。另请参阅 startTime 字段。 |
netProtocol |
字符串 | 网络通信协议。 |
objectName |
字符串 | 数据库对象的名称(如果正在对一个数据库对象运行 SQL 语句)。此字段仅在对数据库对象运行 SQL 语句时使用。如果未对一个对象运行 SQL 语句,则此值为 null。 |
objectType |
字符串 | 数据库对象类型,例如表、索引、视图等。此字段仅在对数据库对象运行 SQL 语句时使用。如果未对一个对象运行 SQL 语句,则此值为 null。包括下列有效值:
|
paramList |
字符串 | 传递给 SQL 语句的逗号分隔的参数数组。如果 SQL 语句没有参数,则此值为空数组。 |
pid |
int | 为向客户端连接提供服务而分配的后端进程的进程 ID。 |
remoteHost |
字符串 | 客户端 IP 地址或主机名。对于 Aurora PostgreSQL,使用哪一个取决于数据库的 log_hostname 参数设置。remoteHost 值还包括指示活动来自 rdsadmin 用户的 [local] 和 localhost 。 |
remotePort |
字符串 | 客户端的端口号。 |
rowCount |
int | SQL 语句返回的行数。例如,如果 SELECT 语句返回 10 行,则 rowCount 为 10。对于 INSERT 或 UPDATE 语句,则 rowCount 为 0。 |
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 语句的近似执行时间,请使用 |
statementId |
int | 客户端的 SQL 语句的标识符。计数器处于会话级别,并随客户端输入的每个 SQL 语句递增。 |
substatementId |
int | SQL 子语句的标识符。此值计算 statementId 字段标识的每个 SQL 语句的包含的子语句。 |
type |
字符串 | 事件类型。有效值为 record 或 heartbeat 。 |
Aurora MySQL 的 databaseActivityEventList 字段
以下是 Aurora MySQL 的 databaseActivityEventList
字段。
字段 | 数据类型 | 描述 |
---|---|---|
class |
字符串 |
活动事件的类。 Aurora MySQL 的有效值如下所示:
|
clientApplication |
字符串 | 客户端报告的其用于连接的应用程序。由于客户端不必提供此信息,因此值可以为 null。 |
command |
字符串 |
SQL 语句的常规类别。此字段的值取决于
|
commandText |
字符串 |
对于 对于 对于 Aurora MySQL,字符(如引号)前面有反斜杠,表示转义字符。 重要每个语句的完整 SQL 文本在审核日志中可见,包括任何敏感数据。但是,如果 Aurora 可以从上下文中确定数据库用户密码,则会对该密码进行修订,如下面的 SQL 语句所示。
注意作为安全最佳实践,请指定除此处所示提示以外的密码。 |
databaseName |
字符串 | 用户连接到的数据库。 |
dbProtocol |
字符串 | 数据库协议。目前,对于 Aurora MySQL,此值始终为 MySQL 。 |
dbUserName |
字符串 | 客户端对其进行身份验证的数据库用户。 |
endTime (仅版本 1.2 数据库活动记录) |
字符串 |
SQL 语句执行结束的时间。它以协调世界时 (UTC) 格式表示。 要计算 SQL 语句的执行时间,请使用 |
errorMessage (仅版本 1.1 数据库活动记录) |
字符串 |
如果出现任何错误,则使用数据库服务器生成的错误消息填充此字段。对于未导致错误的普通语句, 错误定义为生成客户端可见 MySQL 错误日志事件(其严重性级别为 内部 MySQL 服务器错误(例如后台检查指针进程错误)不会生成错误消息。但是,无论如何设置日志严重性级别,此类事件的记录仍会发出。这样可防止攻击者关闭日志记录以尝试避开检测。 另请参阅 |
exitCode |
int | 用于会话退出记录的值。在干净的出口,这包含退出代码。在某些故障场景中,无法始终获得退出代码。在此类情况下,此值可能为零,也可能为空。 |
logTime |
字符串 | 审核代码路径中记录的时间戳。它以协调世界时 (UTC) 格式表示。有关计算语句持续时间的最准确方法,请参阅 startTime 和 endTime 字段。 |
netProtocol |
字符串 | 网络通信协议。目前,对于 Aurora MySQL,此值始终为 TCP 。 |
objectName |
字符串 | 数据库对象的名称(如果正在对一个数据库对象运行 SQL 语句)。此字段仅在对数据库对象运行 SQL 语句时使用。如果未对一个对象运行 SQL 语句,则此值为空。要构造对象的完全限定名称,请将 databaseName 和 objectName 组合起来。如果查询涉及多个对象,则此字段可以是名称的逗号分隔列表。 |
objectType |
字符串 |
数据库对象类型,例如表、索引等。此字段仅在对数据库对象运行 SQL 语句时使用。如果未对一个对象运行 SQL 语句,则此值为 null。 Aurora MySQL 的有效值包括:
|
paramList |
字符串 | 此字段不用于 Aurora MySQL 且始终为 null。 |
pid |
int | 为向客户端连接提供服务而分配的后端进程的进程 ID。当数据库服务器重新启动时,pid 会发生更改,并且 statementId 字段的计数器会重新开始。 |
remoteHost |
字符串 | 发出 SQL 语句的客户端的 IP 地址或主机名。对于 Aurora MySQL,使用哪一个取决于数据库的 skip_name_resolve 参数设置。值 localhost 指示来自 rdsadmin 特殊用户的活动。 |
remotePort |
字符串 | 客户端的端口号。 |
rowCount |
int | SQL 语句所影响或检索的表行的数目。此字段仅用于作为数据操作语言 (DML) 语句的 SQL 语句。如果 SQL 语句不是 DML 语句,则此值为 null。 |
serverHost |
字符串 | 数据库服务器实例标识符。 |
serverType |
字符串 | 数据库服务器类型,例如 MySQL 。 |
serverVersion |
字符串 | 数据库服务器版本。目前,对于 Aurora MySQL,此值始终为 MySQL 5.7.12 。 |
serviceName |
字符串 | 服务的名称。目前,对于 Aurora MySQL,此值始终为 Amazon Aurora MySQL 。 |
sessionId |
int | 伪唯一会话标识符。 |
startTime (仅版本 1.1 数据库活动记录) |
字符串 |
SQL 语句开始执行的时间。它以协调世界时 (UTC) 格式表示。 要计算 SQL 语句的执行时间,请使用 |
statementId |
int | 客户端的 SQL 语句的标识符。计数器随客户端输入的每个 SQL 语句递增。在重新启动数据库实例时,将重置计数器。 |
substatementId |
int | SQL 子语句的标识符。对于类为 MAIN 的事件,此值为 1;对于类为 AUX 的事件,此值为 2。使用 statementId 字段标识同一语句生成的所有事件。 |
transactionId (仅版本 1.2 数据库活动记录) |
int | 事务的标识符。 |
type |
字符串 | 事件类型。有效值为 record 或 heartbeat 。 |