EXPERIMENTAL_AUDIT语句用来打开或关闭表的 SQL审计日志

审核日志包含有关针对你的系统执行的查询的详细信息,包括:

关于该日志更详细的信息,请查看下面的章节:审计日志文件格式

概要

图片

所需权限

只有root用户可以打开表的审计日志。

参数

Parameter Description
table_name 需要创建审计日志的表名
READ 记录表的所有读操作到审计日志
WRITE 记录表的所有写操作到审计日志
OFF 关闭审计日志

从版本2.0开始,此命令记录所有读取和写入,并且需要READ和WRITE参数(如下面的示例所示)。 在将来的版本中,这应该更改为允许仅记录读取,仅记录写,或两者共同记录。

审计日志文件格式

审计日志文件格式如下所示,每列上方的数字不是格式的一部分; 它们对应于以下描述。

图片

  1. 日期
  2. 时间 (in UTC)
  3. Goroutine ID -该列用于CockroachDB的故障排查,并且后续内容可能会变更
  4. 生成日志行的位置
  5. 日志tags
  6. a. 客户端地址
  7. b. 用户名
  8. c. 节点ID
  9. 日志条目计数器
  10. 日志信息:
  11. a.标签表明数据的生成位置(对于故障排除很有用)
  12. b. application_name 的当前值
  13. c. 记录触发器:
    • 审计日志的触发表和访问模式列表,因为只有某些(读/写)活动被添加到审计日志中
  14. d. 查询语句全文(Note: 可能包含PII)
  15. e. 占位符值(如果有的话)
  16. f. 查询执行时间 (以毫秒为单位)
  17. g. 产生的行数(例如,用于“SELECT”)或处理的行数(例如,用于“INSERT”或“UPDATE”)。
  18. h. 查询的状态
    • 成功:OK
    • 失败或其他:ERROR

审计日志文件存储位置

审计日志默认存储在与CockroachDB生成的其他日志相同的目录中。

若要存储到其他目录, 在 cockroach start添加 --sql-audit-dir指明。

如果您的部署需要特定的生命周期和审核日志文件的访问策略,请用--sql-audit-dir指向具有特定权限设置的目录,以便只有CockroachDB可以创建/删除该文件。

举例

打开审计日志

假设有一个表customers包含了个人身份信息 (PII),执行以下命令以打开该表的审计日志:

ALTER TABLE customers EXPERIMENTAL_AUDIT SET READ WRITE;

现在,每次访问客户数据都会添加到审核日志中,日志的行内容如下所示:

I180211 07:30:48.832004 317 sql/exec_log.go:90  [client=127.0.0.1:62503,user=root,n1] 13 exec "cockroach" {"customers"[53]:READ} "SELECT * FROM customers" {} 123.45 12 OK
I180211 07:30:48.832004 317 sql/exec_log.go:90  [client=127.0.0.1:62503,user=root,n1] 13 exec "cockroach" {"customers"[53]:READ} "SELECT nonexistent FROM customers" {} 0.123 12 ERROR

若要为多个表启用审计,需要为每个表执行单独的“ALTER”语句。

想了解更多相关日志格式,请查看 Audit Log File Format 章节。

想查看更多具体例子,请查看 SQL Audit Logging.

关闭审计日志

执行下列命令关闭审计日志:

ALTER TABLE customers EXPERIMENTAL_AUDIT SET OFF;

See Also