SQL 审计日志记录了执行的查询的详细信息。记录针对包含个人标识信息的表运行的所有查询时,该特性特别有用。 提供了一个在 hubble中的 SQL 审计日志的示例,包括:
ALTER TABLE ... EXPERIMENTAL_AUDIT SET ...
范围 | 描述 |
---|---|
table_name | 您要为其创建审核日志的表的名称。 |
READ | 将所有表读取记录到审核日志文件中。 |
WRITE | 将所有表写入记录到审计日志文件。 |
OFF | 关闭审计日志。 |
使用下面的语句来创建:
create table users (
id uuid primary key default gen_random_uuid(),
name string not null,
password string not null,
address string not null,
telephone int not null,
email string unique not null
);
我们使用ALTER TABLE
的 EXPERIMENTAL_AUDIT
子命令打开对表的审计。
alter table users experimental_audit set read write;
默认情况下,活动审计日志文件的前缀是 hubble-sql-audit,并存储在 hubble数据库的标准日志目录中。要将审计日志文件存储在特定的目录中,请将 ——sql-audit-dir 标志传递给hubble start。与其他日志文件一样,它根据 ——log-file-max-size 设置进行调整。 当我们查看这个示例的审计日志时,我们会正如预期的那样看到下面的行,显示了到目前为止我们所运行的每个命令。
--log-config-file=log.yaml
中的这个文件 log.yaml
具体位置log.yaml
文件查看审计日志文件路径例如:
[root@poc-hubble01 ~]# more /var/lib/hubbletp310/log.yaml
# configuration after validation:
file-defaults:
# 日志的路径
dir: /data/hubbledir310/logs
max-file-size: 10MiB
max-group-size: 100MiB
buffered-writes: true
filter: INFO
format: hubdb-v2
redact: false
redactable: true
exit-on-error: true
滚动审计日志
[root@poc-hubble01 logs]# pwd
/data/hubbledir310/logs
[root@poc-hubble01 logs]# tail -f hubble310-sql-audit.log
先打开审计日志文件 查看是否有滚动日志,再执行插入以及查询语句
insert into users (name, password, address, telephone, email) values (
'scottwolf',
'scottwolf',
'北京海淀',
18210301210,
'16666666666@qq.com'
),(
'scott',
'scott',
'北京朝阳',
18210301200,
'177777777@qq.com'
);
验证是否已成功添加数据:
root@poc-hubble01:35432/defaultdb> select * from users;
id | name | password | address | telephone | email
---------------------------------------+-----------+-----------+----------+-------------+---------------------
5b3dba74-8894-4964-a418-83479d3aca41 | scottwolf | scottwolf | 北京海淀 | 18210301210 | 16666666666@qq.com
ce24b852-1a33-4b2a-9377-9b6b9cc1a20a | scott | scott | 北京朝阳 | 18210301200 | 177777777@qq.com
(2 rows)
Time: 4ms total (execution 3ms / network 0ms)
通过查看审计日志是否有滚动
I220616 05:52:04.516870 1228462113 8@util/log/event_log.go:32 ⋮ [n1,client=‹192.168.1.11:19420›,hostssl,user=root] 25 ={"Timestamp":1655358724514188553,"EventType":"sensitive_table_access","Statement":"‹INSERT INTO \"\".\"\".users(name, password, address, telephone, email) VALUES ('scottwolf', 'scottwolf', e'\\U00005317\\U00004EAC\\U00006D77\\U00006DC0', 18210301210, '16666666666@qq.com'), ('scott', 'scott', e'\\U00005317\\U00004EAC\\U0000671D\\U00009633', 18210301200, '177777777@qq.com')›","Tag":"INSERT","User":"root","DescriptorID":7842,"ApplicationName":"$ hubble sql","ExecMode":"exec","NumRows":2,"Age":1.920044,"TxnCounter":59,"AccessMode":"rw"}
I220616 05:52:29.741715 1228462113 8@util/log/event_log.go:32 ⋮ [n1,client=‹192.168.1.11:19420›,hostssl,user=root] 26 ={"Timestamp":1655358749739046887,"EventType":"sensitive_table_access","Statement":"‹SELECT * FROM \"\".\"\".users›","Tag":"SELECT","User":"root","DescriptorID":7842,"ApplicationName":"$ hubble sql","ExecMode":"exec","NumRows":2,"Age":1.679085,"FullTableScan":true,"TxnCounter":61,"TableName":"‹defaultdb.public.users›","AccessMode":"r"}
操作sql语句写入到审计日志中
关闭审计日志语句:
root@poc-hubble01:35432/defaultdb> alter table users experimental_audit set off;
ALTER TABLE
Time: 55ms total (execution 54ms / network 0ms)
设置完关闭审计日志,先打开审计日志文件,再执行对users表查询,验证是否滚动日志
查询对应表,查看审计日志文件是否有日志输出
[root@poc-hubble01 logs]# pwd
/data/hubbledir310/logs
[root@poc-hubble01 logs]# tail -f hubble310-sql-audit.log
root@poc-hubble01:35432/defaultdb> select count(1) from users;
count
---------
2
(1 row)
Time: 3ms total (execution 2ms / network 0ms)
操作查询语句,审计日志文件没有滚动日志。 结论:users表审计日志关闭