注册
达梦数据库审计相关知识点
技术分享/ 文章详情 /

达梦数据库审计相关知识点

Jane 2022/11/07 2429 4 2

一、审计开关

在达梦系统中,专门为审计设置了开关,要使用审计功能首先要打开审计开关。

--审计开关由过程控制,过程执行完后会立即生效。
SP_SET_ENABLE_AUDIT(param int);
param有三种取值:
● 0:关闭审计(缺省值为0)
● 1:打开普通审计
● 2:打开普通审计和实时审计

--打开普通审计开关
SP_SET_ENABLE_AUDIT (1);

二、审计级别

2.1 系统级

系统的启动与关闭,此级别的审计无法也无需由用户进行设置,只要审计开关打开就会自动生成对应审计记录。

2.2 语句级

语句级审计不针对特定的对象,只针对用户审计。
image.png

语法:

--开启语句审计
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:操作失败时

注:取消审计语句和设置审计语句进行匹配,只有完全匹配的才可以取消审计,否则无法取消审计。

2.3 对象级

针对某个对象的操作进行审计。

语法:

--开启对象审计
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审计信息存储在审计文件中。

5.1 审计文件命名

格式为“AUDIT_GUID_创建时间.log”,其中“GUID”为DM给定的一个唯一值。

5.2 审计文件存放路径

审计文件默认存放在数据库的SYSTEM_PATH指定的路径,即数据库所在路径。

也可在dm.ini文件中添加参数AUD_PATH来指定审计文件的存放路径。

5.3 审计文件的大小

dm.ini文件参数AUDIT_MAX_FILE_SIZE指定。

AUDIT_MAX_FILE_SIZE为动态系统级参数,缺省值为100M。可通过系统过程SP_SET_PARA_VALUE对其进行动态修改,有效值范围为1~4096M。

当单个审计文件超过指定大小时,系统会自动切换审计文件,自动创建新的审计文件,审计记录将写入新的审计文件中。

5.4 审计文件空间上限

dm.ini文件参数AUDIT_SPACE_LIMIT指定。

AUDIT_SPACE_LIMIT为静态参数,可通过系统过程SP_SET_PARA_VALUE进行修改,但是修改需要重新启动DM数据库服务器才能生效。默认值为8192M。

超过空间上限,根据下面AUDIT_FILE_FULL_MODE 参数设置,进行自动清理或停止写审计。

5.5 审计文件清理策略

dm.ini文件参数 AUDIT_FILE_FULL_MODE 指定。

AUDIT_FILE_FULL_MODE为静态参数,可通过系统过程SP_SET_PARA_VALUE进行修改,但是修改需要重新启动DM数据库服务器才能生效。

  • AUDIT_FILE_FULL_MODE置为1时,将删除最老的审计文件,直至有足够的空间创建新审计文件。若将所有可以删除的审计文件都删除后空间仍旧不够,则数据库会挂起不再处理任何请求,直至磁盘空间被清理出足够创建新审计文件的空间,默认值为1。
  • AUDIT_FILE_FULL_MODE置为2时,将不再写审计记录。

两种策略都会导致审计记录的缺失,因此,管理员应该及时对审计文件进行备份。

--删除指定时间点之前的审计记录
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);

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服