达梦数据库审计相关参数
基础环境
操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo)
数据库版本:DM Database Server 64 V8
架构:单实例
1 查看审计相关的参数
查看AUD相关的参数。
1.1 查看dm.ini配置文件。
在dm.ini配置文件是看到AUDIT_FILE_FULL_MODE、AUDIT_SPACE_LIMIT、AUDIT_MAX_FILE_SIZE、AUDIT_IP_STYLE 4个参数。
[dmdba@test DAMENG]$ cat dm.ini |grep AUD
AUDIT_FILE_FULL_MODE = 1 #operation mode when audit file is full,1: delete old file; 2: no longer to write audit records
AUDIT_SPACE_LIMIT = 8192 #audit space limit in Megabytes
AUDIT_MAX_FILE_SIZE = 100 #maximum audit file size in Megabytes
AUDIT_IP_STYLE = 0 #IP style in audit record, 0: IP, 1: IP(hostname), default 0
1.2 查看数据库v$parameter视图
v$parameter视图里查到了6个参数。比dm.ini多了AUD_PATH、ENABLE_AUDIT 这2个。
SQL> select * from v$parameter where name like '%AUD%';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION DEFAULT_VALUE ISDEFAULT
---------- ----------- -------------------- --------- ----- --------- ---------- ----------------------------------------------------------------------------------------------- ------------- -----------
1 7 AUD_PATH READ ONLY audit log path NULL 1
2 473 ENABLE_AUDIT READ ONLY 0 0 0 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit 0 1
3 474 AUDIT_FILE_FULL_MODE IN FILE 1 1 1 operation mode when audit file is full, 1: delete old file; 2: no longer to write audit records 1 1
4 475 AUDIT_SPACE_LIMIT IN FILE 8192 8192 8192 audit space limit in Megabytes 8192 1
5 476 AUDIT_MAX_FILE_SIZE SYS 100 100 100 maximum audit file size in Megabytes 100 1
6 477 AUDIT_IP_STYLE SYS 0 0 0 IP style in audit record, 0: IP, 1: IP(hostname), default 0 0 1
6 rows got
已用时间: 3.660(毫秒). 执行号:905.
注:达梦数据库的参数共有3种类型。
参数类型。
READ ONLY:手动参数, 表示服务器运行过程中不可修改;
IN FILE: 静态参数, 只可修改 ini 文件;
SYS 和 SESSION: 动态参数, ini 文件和内存同时可修改。其中, SYS 为系统级参数,SESSION 为会话级参数
2 测试相关参数
2.1 参数ENABLE_AUDIT
在 DM 系统中,专门为审计设置了开关,要使用审计功能首先要打开审计开关。审计开关由过程 VOID SP_SET_ENABLE_AUDIT(param int) ;控制, 过程执行完后会立即生效, param 有三种取值:
0:关闭审计
1:打开普通审计
2:打开普通审计和实时审计
缺省值为 0。
--开启审计
[dmdba@test DAMENG]$ disql sysauditor/Dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 4.787(ms)
disql V8
SQL> select user();
行号 USER()
---------- ----------
1 SYSAUDITOR
已用时间: 4.813(毫秒). 执行号:500.
SQL> select name,value,sys_value,file_value from v$parameter where name='ENABLE_AUDIT';
行号 NAME VALUE SYS_VALUE FILE_VALUE
---------- ------------ ----- --------- ----------
1 ENABLE_AUDIT 0 0 0
已用时间: 9.256(毫秒). 执行号:501.
SQL> SP_SET_ENABLE_AUDIT (2);
DMSQL 过程已成功完成
已用时间: 7.608(毫秒). 执行号:502.
--**VALUE和SYS_VALUE的值都为2,表示在会话级和系统级已开启审计**
SQL> select name,value,sys_value,file_value from v$parameter where name='ENABLE_AUDIT';
行号 NAME VALUE SYS_VALUE FILE_VALUE
---------- ------------ ----- --------- ----------
1 ENABLE_AUDIT 2 2 0
已用时间: 4.369(毫秒). 执行号:503.
--查看审计文件。在**$DM_HOME/data/数据库名** 路径下已经生成审计文件。
[dmdba@test DAMENG]$ pwd
/dm8/data/DAMENG
[dmdba@test DAMENG]$ ls -lrt AUDIT_DMSERVER_*
-rw-r--r-- 1 dmdba dinstall 104857600 Apr 5 19:32 AUDIT_DMSERVER_CAA80D52CAA80D52C2F1D1D17841ABD7_2024-4-5-19-32-16.log
-rw-r--r-- 1 dmdba dinstall 104857600 Apr 5 19:54 AUDIT_DMSERVER_79D60ECB79D60ECB460640887841ABD7_2024-4-5-19-32-52.log
-rw-r--r-- 1 dmdba dinstall 104857600 Apr 5 19:58 AUDIT_DMSERVER_1F6DB4EA1F6DB4EA5825223C7841ABD7_2024-4-5-19-58-46.log
2.2 参数AUD_PATH
参数AUD_PATH表示审计文件的保存路径。默认值为**$DM_HOME/data/数据库名**。可以通过视图V$AUDIT_SPACE确认。V$AUDIT_SPACE动态性能视图只有审计用户可以查询。
--使用sysdba用户
[dmdba@test DAMENG]$ disql sysdba/Dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.944(ms)
disql V8
SQL> select user();
行号 USER()
---------- ------
1 SYSDBA
已用时间: 1.634(毫秒). 执行号:600.
SQL> select * from V$AUDIT_SPACE;
select * from V$AUDIT_SPACE;
[-5504]:没有[V$AUDIT_SPACE]对象的查询权限.
已用时间: 0.366(毫秒). 执行号:0.
SQL> exit
--使用sysauditor用户
[dmdba@test DAMENG]$ disql sysauditor/Dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.196(ms)
disql V8
SQL> select user();
行号 USER()
---------- ----------
1 SYSAUDITOR
已用时间: 1.255(毫秒). 执行号:700.
SQL> select * from V$AUDIT_SPACE;
行号 AUD_PATH AUDIT_FILE_FULL_MODE AUDIT_MAX_FILE_SIZE AUD_SPACE_LIMIT AUD_SPACE_FREE
---------- ---------------- -------------------- ------------------- --------------- --------------
1 /dm8/data/DAMENG 1 100 8192 -1
已用时间: 0.276(毫秒). 执行号:701.
SQL>
修改审计文件保存路径
--新建目录
[dmdba@test ~]$ mkdir -p /dm8/log/audit
--修改dm.ini配置文件
--新增
AUD_PATH=/dm8/log/audit
--重启实例
[dmdba@test DAMENG]$ DmServiceDMSERVER restart
Stopping DmServiceDMSERVER: [ OK ]
Starting DmServiceDMSERVER: [ OK ]
[dmdba@test DAMENG]$
--确认参数
[dmdba@test DAMENG]$ disql sysauditor/Dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 5.763(ms)
disql V8
SQL> select * from V$AUDIT_SPACE;
行号 AUD_PATH AUDIT_FILE_FULL_MODE AUDIT_MAX_FILE_SIZE AUD_SPACE_LIMIT AUD_SPACE_FREE
---------- -------------- -------------------- ------------------- --------------- --------------
1 /dm8/log/audit 1 100 8192 -1
已用时间: 2.053(毫秒). 执行号:500.
SQL>
--新路径下已经生成审计文件
[dmdba@test audit]$ pwd
/dm8/log/audit
[dmdba@test audit]$ ll
total 102400
-rw-r--r-- 1 dmdba dinstall 104857600 Apr 5 20:16 AUDIT_DMSERVER_7416B3257416B325D6B6A7A17841ABD7_2024-4-5-20-16-51.log
2.3 参数AUDIT_SPACE_LIMIT
参数AUDIT_SPACE_LIMIT表示审计空间的限制大小。默认值为8192,单位为MB。
SQL> select * from v$parameter where name = 'AUDIT_SPACE_LIMIT';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION DEFAULT_VALUE ISDEFAULT
---------- ----------- ----------------- ------- ----- --------- ---------- ------------------------------ ------------- -----------
1 475 AUDIT_SPACE_LIMIT IN FILE 8192 8192 8192 audit space limit in Megabytes 8192 1
通过dm.ini配置文件来修改。例如改为1024。
--修改dm.ini配置文件
AUDIT_SPACE_LIMIT=1024
--重启实例
[dmdba@test DAMENG]$ DmServiceDMSERVER restart
Stopping DmServiceDMSERVER: [ OK ]
Starting DmServiceDMSERVER: [ OK ]
[dmdba@test DAMENG]$ disql sysauditor/Dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 4.095(ms)
disql V8
SQL> select name,value,sys_value,file_value from v$parameter where name='AUDIT_SPACE_LIMIT';
行号 NAME VALUE SYS_VALUE FILE_VALUE
---------- ----------------- ----- --------- ----------
1 AUDIT_SPACE_LIMIT 1024 1024 1024
已用时间: 5.451(毫秒). 执行号:500.
但是经过测试,发现AUDIT_SPACE_LIMIT参数没生效。
--AUD_SPACE_LIMIT参数已经设置为300,按官方文档解释应该只能使用300M的空间。但实际已经使用了900M的空间。
[dmdba@test DAMENG]$ disql sysauditor/Dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 4.457(ms)
disql V8
SQL> select * from V$AUDIT_SPACE;
行号 AUD_PATH AUDIT_FILE_FULL_MODE AUDIT_MAX_FILE_SIZE AUD_SPACE_LIMIT AUD_SPACE_FREE
---------- -------------- -------------------- ------------------- --------------- --------------
1 /dm8/log/audit 1 100 300 299
已用时间: 2.139(毫秒). 执行号:500.
SQL>
[dmdba@test log]$ pwd
/dm8/log
[dmdba@test log]$ du -sm audit/
901 audit/
[dmdba@test log]$ cd audit/
[dmdba@test audit]$ du -sm *
100 AUDIT_DMSERVER_67FABDDF67FABDDF33B703827841ABD7_2024-4-5-20-43-29.log
100 AUDIT_DMSERVER_7416B3257416B325D6B6A7A17841ABD7_2024-4-5-20-16-51.log
100 AUDIT_DMSERVER_B32DE179B32DE179B5D42C9E7841ABD7_2024-4-5-20-52-47.log
100 AUDIT_DMSERVER_CE635524CE635524067158ED7841ABD7_2024-4-5-20-51-57.log
100 AUDIT_DMSERVER_D599F4C0D599F4C010D5DFC47841ABD7_2024-4-5-20-37-47.log
100 AUDIT_DMSERVER_DD082677DD082677A124D68B7841ABD7_2024-4-5-20-27-15.log
100 AUDIT_DMSERVER_E0610456E061045639EF823C7841ABD7_2024-4-5-20-39-18.log
100 AUDIT_DMSERVER_E3FCFBABE3FCFBABC68AE5F47841ABD7_2024-4-5-20-40-21.log
100 AUDIT_DMSERVER_F8CB1556F8CB1556961BD7327841ABD7_2024-4-5-20-41-54.log
[dmdba@test audit]$
那会不会是默认值的8192生效呢? 发现aud文件增长到了8801M还未停止。 目前不确认该参数的限制,后续再补充。
[dmdba@test log]$ pwd
/dm8/log
[dmdba@test log]$ du -sm audit/
8801 audit/
[dmdba@test log]$
2.4 参数AUDIT_FILE_FULL_MODE
参数AUDIT_FILE_FULL_MODE表示剩余空间不足时的处理方式。
在V$AUDIT_SPACE视图中的解释为:
在v$parameter视图中的解释为:
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION DEFAULT_VALUE ISDEFAULT
---------- ----------- -------------------- ------- ----- --------- ---------- ----------------------------------------------------------------------------------------------- ------------- -----------
1 474 AUDIT_FILE_FULL_MODE IN FILE 1 1 1 operation mode when audit file is full, 1: delete old file; 2: no longer to write audit records 1 1
两者对参数 AUDIT_FILE_FULL_MODE=1 的解释不一样。
下面做测试:
–本次单独挂载一块5G的盘作为审议文件的保存目录。看5G空间用完后,数据库会做什么操作?
[root@test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 13M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda3 72G 34G 39G 47% /
/dev/sda1 297M 138M 159M 47% /boot
tmpfs 781M 8.0K 781M 1% /run/user/42
tmpfs 781M 0 781M 0% /run/user/0
/dev/sdb1 4.8G 20M 4.6G 1% /dm8/log/audit
[dmdba@test arch]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 4.8G 4.5G 119M 98% /dm8/log/audit
2024-04-06 11:49:23.403 [WARNING] database P0000026077 T0000000000000026077 Disk space is almost overflow for AUDIT.
2024-04-06 11:49:23.403 [ERROR] database P0000026077 T0000000000000026077 Disk space overflow, aud_fil_create_low[/dm8/log/audit/AUDIT_DMSERVER_2A7DD3302A7DD330DB464E677841ABD7_2024-4-6-11-49-23.log] failed.
2024-04-06 11:49:23.404 [WARNING] database P0000026077 T0000000000000026077 Audit file /dm8/log/audit/AUDIT_DMSERVER_91DCFBCD91DCFBCDC3BA815A7841ABD7_2024-4-6-10-20-11.log is overwritten
2024-04-06 11:49:23.404 [WARNING] database P0000026077 T0000000000000026077 Disk space is almost overflow for AUDIT.
2024-04-06 11:49:23.407 [INFO] database P0000026077 T0000000000000026125 nsvr_lsnr_thread successfully created.
2024-04-06 11:49:23.407 [INFO] database P0000026077 T0000000000000026100 total 0 active crash trx, pseg_crash_trx_rollbacksys_only(0) begin ...
2024-04-06 11:49:23.407 [INFO] database P0000026077 T0000000000000026100 pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
2024-04-06 11:49:23.407 [INFO] database P0000026077 T0000000000000026100 pseg_crash_trx_rollback end
2024-04-06 11
–开始看到 [WARNING] database P0000025576 T0000000000000025576 Disk space is almost overflow for AUDIT. 此时审计目录使用率98%。且AUDIT_DMSERVER_91DCFBCD91DCFBCDC3BA815A7841ABD7_2024-4-6-10-20-11.log号审计日志被覆盖。说明AUDIT_FILE_FULL_MODE=1是数据库会删除旧的归档日志。
2024-04-06 11:58:21.097 [INFO] database P0000027063 T0000000000000027063 nsvr_process_before_open begin.
2024-04-06 11:58:21.115 [INFO] database P0000027063 T0000000000000027063 nsvr_process_before_open success.
2024-04-06 11:58:21.115 [WARNING] database P0000027063 T0000000000000027063 Disk space is almost overflow for AUDIT.
2024-04-06 11:58:21.115 [ERROR] database P0000027063 T0000000000000027063 Disk space overflow, aud_fil_create_low[/dm8/log/audit/AUDIT_DMSERVER_C978F64DC978F64DAA0784967841ABD7_2024-4-6-11-58-21.log] failed.
2024-04-06 11:58:21.115 [INFO] database P0000027063 T0000000000000027085 total 0 active crash trx, pseg_crash_trx_rollbacksys_only(0) begin ...
2024-04-06 11:58:21.115 [INFO] database P0000027063 T0000000000000027111 nsvr_lsnr_thread successfully created.
2024-04-06 11:58:21.115 [INFO] database P0000027063 T0000000000000027085 pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
当AUDIT_FILE_FULL_MODE=2时,空间不足情况下则不生成审计日志,但不影响数据库运行。
2.5 参数AUDIT_MAX_FILE_SIZE
参数AUDIT_MAX_FILE_SIZE表示单个审计文件的大小,默认值为100,单位MB。
SQL> select * from v$parameter where name = 'AUDIT_MAX_FILE_SIZE';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION DEFAULT_VALUE ISDEFAULT
---------- ----------- ------------------- ---- ----- --------- ---------- ------------------------------------ ------------- -----------
1 476 AUDIT_MAX_FILE_SIZE SYS 100 100 100 maximum audit file size in Megabytes 100 1
已用时间: 4.718(毫秒). 执行号:502.
尝试修改参数AUDIT_MAX_FILE_SIZE 为10,要使用SYSDBA用户修改。
[dmdba@test DAMENG]$ disql sysdba/Dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.691(ms)
disql V8
SQL> select user();
行号 USER()
---------- ------
1 SYSDBA
已用时间: 1.832(毫秒). 执行号:600.
SQL> alter system set 'AUDIT_MAX_FILE_SIZE'=10 both;
DMSQL 过程已成功完成
已用时间: 5.006(毫秒). 执行号:603.
SQL> select * from v$parameter where name = 'AUDIT_MAX_FILE_SIZE';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION DEFAULT_VALUE ISDEFAULT
---------- ----------- ------------------- ---- ----- --------- ---------- ------------------------------------ ------------- -----------
1 476 AUDIT_MAX_FILE_SIZE SYS 10 10 10 maximum audit file size in Megabytes 100 0
已用时间: 4.113(毫秒). 执行号:604.
SQL>
最新的审计文件已经变为10MB大小。
2.6 参数AUDIT_IP_STYLE
参数AUDIT_IP_STYLE表示审计文件中是否记录主机名。
将其修改为1,再通过analyzer工具查看审计文件,发现IP地址列已经带上主机名。
[dmdba@test DAMENG]$ disql sysdba/Dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.586(ms)
disql V8
SQL> alter system set 'AUDIT_IP_STYLE'=1 both;
DMSQL 过程已成功完成
已用时间: 6.273(毫秒). 执行号:1300.
SQL> select * from v$parameter where name = 'AUDIT_IP_STYLE';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION DEFAULT_VALUE ISDEFAULT
---------- ----------- -------------- ---- ----- --------- ---------- ----------------------------------------------------------- ------------- -----------
1 477 AUDIT_IP_STYLE SYS 1 1 1 IP style in audit record, 0: IP, 1: IP(hostname), default 0 0 0
已用时间: 5.769(毫秒). 执行号:1301.
谨记:心存敬畏,行有所止。