在达梦系统中,专门为审计设置了开关,要使用审计功能首先要打开审计开关。
--审计开关由过程控制,过程执行完后会立即生效。
SP_SET_ENABLE_AUDIT(param int);
param有三种取值:
● 0:关闭审计(缺省值为0)
● 1:打开普通审计
● 2:打开普通审计和实时审计
--打开普通审计开关
SP_SET_ENABLE_AUDIT (1);
系统的启动与关闭,此级别的审计无法也无需由用户进行设置,只要审计开关打开就会自动生成对应审计记录。
语句级审计不针对特定的对象,只针对用户审计。
语法:
--开启语句审计
SP_AUDIT_STMT(
TYPE VARCHAR(30),
USERNAME VARCHAR (128),
WHENEVER VARCHAR (20)
)
--取消语句审计
SP_NOAUDIT_STMT(
TYPE VARCHAR(30),
USERNAME VARCHAR (128),
WHENEVER VARCHAR (20)
)
--参数说明:
● TYPE 语句级审计选项,即上表中的第一列
● USERNAME 用户名,NULL表示不限制
● WHENEVER 审计时机,可选的取值为:
--ALL:所有的
--SUCCESSFUL:操作成功时
--FAIL:操作失败时
注:取消审计语句和设置审计语句进行匹配,只有完全匹配的才可以取消审计,否则无法取消审计。
针对某个对象的操作进行审计。
语法:
--开启对象审计
SP_AUDIT_OBJECT (
TYPE VARCHAR(30),
USERNAME VARCHAR (128),
SCHNAME VARCHAR (128),
TVNAME VARCHAR (128),
WHENEVER VARCHAR (20)
)
--开启对象某一列审计
SP_AUDIT_OBJECT (
TYPE VARCHAR(30),
USERNAME VARCHAR (128),
SCHNAME VARCHAR (128),
TVNAME VARCHAR (128),
COLNAME VARCHAR (128),
WHENEVER VARCHAR (20)
)
--取消对象审计
SP_NOAUDIT_OBJECT (
TYPE VARCHAR(30),
USERNAME VARCHAR (128),
SCHNAME VARCHAR (128),
TVNAME VARCHAR (128),
WHENEVER VARCHAR (20)
)
--取消对象某一列审计
SP_NOAUDIT_OBJECT (
TYPE VARCHAR(30),
USERNAME VARCHAR (128),
SCHNAME VARCHAR (128),
TVNAME VARCHAR (128),
COLNAME VARCHAR (128),
WHENEVER VARCHAR (20)
)
--参数说明:
● TYPE 对象级审计选项,如:
INSERT UPDATE DELETE SELECT
EXECUTE
MERGE INTO
EXECUTE TRIGGER
LOCK TABLE
BACKUP TABLE
RESTORE TABLE
ALL(所有对象级审计选项)
● USERNAME 用户名
● SCHNAME 模式名,为空时置'null'
● TVNAME 表、视图、存储过程名不能为空
● COLNAME 列名
● WHENEVER 审计时机,可选的取值为:
ALL:所有的
SUCCESSFUL:操作成功时
FAIL:操作失败时
审计设置信息都记录在数据字典表SYSAUDITOR.SYSAUDIT中
SQL> SELECT * FROM SYSAUDITOR.SYSAUDIT;
LEVEL UID TVPID COLID TYPE WHENEVER
----------- ----------- ----------- ----------- ----------- -----------
2 -1 1097 -1 50 3
2 -1 1097 -1 53 3
2 -1 1097 -1 52 3
--列字段说明:
● LEVEL 审计级别
● UID 用户ID
● TVPID 表/视图/触发器/存储过程函数ID
● COLID 列ID
● TYPE 审计类型
● WHENEVER 审计情况
DM 还提供了以下系统函数供查看审计设置中涉及的审计类型 TYPE、审计级别 LEVEL、以及生成时机 WHENEVER 常量对应的具体信息,作为上述动态视图的补充。
--TYPE
SQL> SELECT SF_GET_AUDIT_TYPENAME(50);
行号 SF_GET_AUDIT_TYPENAME(50)
---------- -------------------------
1 INSERT
SQL> SELECT SF_GET_AUDIT_TYPENAME(53);
行号 SF_GET_AUDIT_TYPENAME(53)
---------- -------------------------
1 UPDATE
SQL> SELECT SF_GET_AUDIT_TYPENAME(52);
行号 SF_GET_AUDIT_TYPENAME(52)
---------- -------------------------
1 DELETE
--LEVEL
SQL> SELECT SF_GET_AUDIT_LEVELNAME(1);
行号 SF_GET_AUDIT_LEVELNAME(1)
---------- -------------------------
1 STMT
SQL> SELECT SF_GET_AUDIT_LEVELNAME(2);
行号 SF_GET_AUDIT_LEVELNAME(2)
---------- -------------------------
1 OBJECT
--WHENEVER
SQL> SELECT SF_GET_AUDIT_WHENEVERNAME(1);
行号 SF_GET_AUDIT_WHENEVERNAME(1)
---------- ----------------------------
1 SUCCESSFUL
SQL> SELECT SF_GET_AUDIT_WHENEVERNAME(2);
行号 SF_GET_AUDIT_WHENEVERNAME(2)
---------- ----------------------------
1 FAIL
SQL> SELECT SF_GET_AUDIT_WHENEVERNAME(3);
行号 SF_GET_AUDIT_WHENEVERNAME(3)
---------- ----------------------------
1 ALL
动态视图SYSAUDITOR.V$AUDITRECORDS查询系统默认路径下的审计文件的审计记录。
select * from SYSAUDITOR.V$AUDITRECORDS;
DM审计信息存储在审计文件中。
格式为“AUDIT_GUID_创建时间.log”,其中“GUID”为DM给定的一个唯一值。
审计文件默认存放在数据库的SYSTEM_PATH指定的路径,即数据库所在路径。
也可在dm.ini文件中添加参数AUD_PATH来指定审计文件的存放路径。
dm.ini文件参数AUDIT_MAX_FILE_SIZE指定。
AUDIT_MAX_FILE_SIZE为动态系统级参数,缺省值为100M。可通过系统过程SP_SET_PARA_VALUE对其进行动态修改,有效值范围为1~4096M。
当单个审计文件超过指定大小时,系统会自动切换审计文件,自动创建新的审计文件,审计记录将写入新的审计文件中。
dm.ini文件参数AUDIT_SPACE_LIMIT指定。
AUDIT_SPACE_LIMIT为静态参数,可通过系统过程SP_SET_PARA_VALUE进行修改,但是修改需要重新启动DM数据库服务器才能生效。默认值为8192M。
超过空间上限,根据下面AUDIT_FILE_FULL_MODE 参数设置,进行自动清理或停止写审计。
dm.ini文件参数 AUDIT_FILE_FULL_MODE 指定。
AUDIT_FILE_FULL_MODE为静态参数,可通过系统过程SP_SET_PARA_VALUE进行修改,但是修改需要重新启动DM数据库服务器才能生效。
两种策略都会导致审计记录的缺失,因此,管理员应该及时对审计文件进行备份。
--删除指定时间点之前的审计记录
SP_DROP_AUDIT_FILE(
TIME_STR VARCHAR(128),
TYPE INT
);
--参数说明:
● TIME_STR:指定的时间字符串
● TYPE:审计文件类型,0表示删除普通审计文件,1表示删除实时审计文件
--例如,指定删除2015-12-6 16:30:00以前的普通审计文件。
SP_DROP_AUDIT_FILE('2015-12-6 16:30:00',0);
文章
阅读量
获赞