DM8数据库审计

审计机制是DM数据库管理系统安全管理的重要组成部分之一。DM具有一个灵活的审计子系统,可以通过它来记录系统级事件、个别用户的行为以及对数据库对象的访问。

审计开关

ENABLE_AUDIT参数为达梦数据库审计开关,DM8该参数为READ ONLY只读类型,不能使用SP_SET_PARA_NAME函数修改此参数,可以通过SP_SET_ENABLE_AUDIT动态设置。语法如下:

VOID SP_SET_ENABLE_AUDIT (

      PARAM     INT

)

参数说明:

PARAM:有三种取值(普通版本缺省值为0)。可选的取值为:

0:关闭审计

1:打开普通审计

2:打开普通审计和实时审计

只有SYSAUDITOR数据库审计员才能设置数据库审计开关,打开数据库普通审计功能。命令参考如下。

sp_set_enable_audit(1);

可通过查询V$DM_INI动态视图获取ENABLE_AUDIT的当前值。

select para_name, para_value, para_typefrom v$dm_iniwhere para_name = 'ENABLE_AUDIT';

审计设置

具有AUDIT DATABASE权限的审计员可以进行审计设置。DM允许三个级别审计设置,分别是系统级、语句级和对象级。

审计级别

说明

系统级

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

语句级

对特定类型数据库对象的特殊SQL或语句组的审计。如AUDIT TABLE 将审计CREATE TABLE、ALTER TABLE和DROP TABLE等语句

对象级

审计作用在特殊对象上的语句。如test表上的INSERT语句

语句级审计

语句级审计的动作是全局的,不针对具体的数据库对象,只针对用户。

设置语句级审计的系统过程如下:

VOID SP_AUDIT_STMT (

      TYPE     VARCHAR(30),

      USERNAME    VARCHAR (128),

      WHENEVER    VARCHAR (20)

)

参数说明:

TYPE:语句级审计选项,详情可参考《DM8安全管理》手册。

USERNAME:用户名,NULL表示不限制

WHENEVER:审计时机,可选的取值为:

           ALL:所有的

           SUCCESSFUL:操作成功时

           FAIL:操作失败时

例如,审计所有用户的DELETE TABLE动作。语句参考如下(使用SYSAUDITOR用户执行):

SP_AUDIT_STMT('DELETE TABLE', 'NULL', 'ALL');

设置审计后,使用SYSAUDITOR用户查询SYSAUDIT系统表可以查看相关审计设置信息,语句参考如下(SF_GET_AUDIT_TYPENAME用于获取审计类型,SF_GET_AUDIT_LEVELNAME用于获取审计级别,SF_GET_AUDIT_WHENEVERNAME用于获取审计时机。注意WHENEVER是关键字,查询时需要加双引号):​​​​​​​

select SF_GET_AUDIT_TYPENAME(TYPE) TYPENAME,      SF_GET_AUDIT_LEVELNAME(LEVEL) LEVELNAME,      SF_GET_AUDIT_WHENEVERNAME("WHENEVER") WHENEVERNAME,      UID, TVPID, COLIDfrom SYSAUDIT;

假如我们删除DMHR.EMPLOYEE员工表信息两条(注意,使用SYSDBA操作,SYSAUDITOR没有删除该表的权限),执行动作参考如下:

即使我们未提交数据,使用SYSAUDITOR用户查询V$AUDITRECORDS表,也可以查看到审计相关记录信息,语句参考如下:​​​​​​​

select t.SCHNAME, t.OBJNAME, t.OPERATION, t.SUCC_FLAG, t.SQL_TEXT,        to_char(t.optime, 'yyyy-mm-dd hh24:mi:ss') optime  from v$auditrecords t;

结果展示如下:

使用SP_NOAUDIT_STMT过程可以取消语句级审计,参数与SP_AUDIT_STMT参数相同。取消审计所有用户的DELETE TABLE动作语句参考如下。

SP_NOAUDIT_STMT('DELETE TABLE', 'NULL', 'ALL');

对象级审计

对象级审计发生在具体的对象上,需要指定模式名以及对象名。

设置对象级审计的系统过程如下:

VOID SP_AUDIT_OBJECT (

      TYPE    VARCHAR(30),

      USERNAME    VARCHAR (128),

      SCHNAME    VARCHAR (128),

      TVNAME    VARCHAR (128),

      WHENEVER    VARCHAR (20)

)

VOID SP_AUDIT_OBJECT (

      TYPE     VARCHAR(30),

      USERNAME    VARCHAR (128),

      SCHNAME    VARCHAR (128),

      TVNAME    VARCHAR (128),

      COLNAME      VARCHAR (128),

      WHENEVER    VARCHAR (20)

)

参数说明:

TYPE:对象级审计选项,详情可参考《DM8安全管理》手册。

USERNAME:用户名

SCHNAME:模式名,为空时置‘null’

TVNAME:表、视图、存储过程名不能为空

COLNAME:列名

WHENEVER:审计时机,可选的取值为:

          ALL:所有的

          SUCCESSFUL:操作成功时

          FAIL:操作失败时

假如对表DMHR.DEPARTMENT修改的操作进行审计,语句参考如下:

SP_AUDIT_OBJECT('UPDATE', 'SYSDBA', 'DMHR', 'DEPARTMENT', 'ALL');

假如对表DMHR.EMPLOYEE的SALAERY列的修改成功操作进行审计,语句参考如下:

SP_AUDIT_OBJECT('UPDATE','SYSDBA','DMHR','EMPLOYEE','SALARY','SUCCESSFUL');

设置成功后,查询SYSAUDIT表可以看到新增的对象级审计信息,结果参考如下:

使用SYSDBA查询SYSOBJECTS表中的信息,可以查看对应的用户及对象信息。

使用SYSDBA用户更改DMHR.EMPLOYEE表的SALARY字段,及更改DEPARTMENT表数据信息,语句参考如下:

更改完成后,使用SYSAUDITOR用户查询V$AUDITRECORDS表,可以看到相关审计记录:

使用SP_NOAUDIT_OBJECT过程可以取消对象级审计,参数与SP_AUDIT_OBJECT参数相同。取消上述对象级审计语句参考如下:​​​​​​​

SP_NOAUDIT_OBJECT('UPDATE','SYSDBA', 'DMHR', 'EMPLOYEE', 'SALARY', 'SUCCESSFUL');SP_NOAUDIT_OBJECT('UPDATE','SYSDBA', 'DMHR', 'DEPARTMENT', 'ALL');
审计文件
审计信息存储在审计文件中。审计文件存放在数据库的SYSTEM_PATH参数指定的路径,即数据库所在路径。审计文件命名格式为“AUDIT_实例名_GUID_创建时间.log”,其中“GUID”为DM给定的一个唯一值。审计文件的大小可以通过DM的INI参数AUDIT_MAX_FILE_SIZE指定,也可以使用系统过程SP_DROP_AUDIT_FILE删除某个时间点之前的历史审计信息。

好,以上是本次分享内容,最后做一下总结说明:

1.DM数据库审计开关需要使用SYSAUDITOR用户开启和关闭。相关审计设置和查询也需要使用SYSAUDITOR用户,SYSDBA用户无权开启和设置审计相关信息。

2.数据库审计员无法进行数据库增删改查等DML操作和DDL操作,相关DML和DDL操作需使用数据库管理员SYSDBA或其他有权限的普通管理用户操作。

3.SF_GET_AUDIT_TYPENAME、SF_GET_AUDIT_LEVELNAME、SF_GET_AUDIT_WHENEVERNAME三个函数是DM8新增的系统函数,分别用于获取审计类型、审计级别和审计时机,只有新版本才支持。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值