浅谈达梦审计

达梦数据库安全管理中重要工作就是审计机制。

DM数据库除了提供数据安全保护措施外,还提供对日常事件的事后审计监督。DM具有一个灵活的审计子系统,可以通过它来跟踪数据库的操作,监视数据库输出信息,以确定是否存在违背安全的行为。这些记录系统级事件、用户的行为以及对数据库对象的访问信息称为审计信息。通过跟踪审计信息,数据库审计员可以查看用户访问的形式以及曾试图对该系统进行的操作,从而采取积极、有效的应对措施。

本文测试环境如下:

操作系统:麒麟V10

数据库:DM8

主要内容:DM数据库、数据库审计。

审计分类和审计活动

  1. 审计分类:
  • 系统审计:包括对系统的启动和关闭进行审计,此级别的审计记录在任何情况下都会强制产生,无需由用户进行任何设置,只要审计开关打开就会自动生成对应审计记录。

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

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

  1. 审计活动:
    打开审计开关(默认是关闭)
    打开审计开关后, 需要对指定的审计对象设置审计规则,否则不记录审计记录。审计信息存放在DM字典表SYSAUDIT中,进行一次审计设置就在SYSAUDIT中增加一条对应的记录,取消审计则删除SYSAUDIT中相应的记录。

一、开启数据库的审计功能

--使用sysauditor用户登录达梦数据库,开启达梦审计功能。
--打开普通审计
SP_SET_ENABLE_AUDIT (1) 
--打开普通审计和实时审计
SP_SET_ENABLE_AUDIT (2) 
#打开达梦审计后,数据库数据文件所在目录下会生成一个以AUDIT+实例名开头,以开启日期结尾的日志文件,即证明数据库审计功能开启成功。
[dmdba@localhost bin]$ cd /dm8/data/DAMENG/
[dmdba@localhost DAMENG]$ ls AUDIT*.log

二、开启审计后的设置

2.1 语句级审计

语句级审计的动作是全局的,不对应具体的数据库对象

语句级别审计 —— 审计DDL操作操作
SP_AUDIT_STMT(TYPE, USERNAME, WHENEVER)
WHENEVER指SUCCESSFUL/FAILED/ALL

--对TEST用户操作表对象DDL操作进行,不管操作成功与否.
SP_AUDIT_STMT ('TABLE', 'TEST', 'ALL')

2.2对象级审计

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

--对象审计——审计某用户(USER)对某模式(SCHEMA)下某对象(OBJECT_NAME)进行的DML操作
SP_AUDIT_OBJECT ('DML','USER', 'SCHEMA','OBJECT_NAME', WHENEVER)
SP_AUDIT_OBJECT ('DML','USER', 'SCHEMA','OBJECT_NAME', 'COLNAME', WHENEVER)

--审计test用户操作test模式下表emp的salary字段
SP_AUDIT_OBJECT ('DELETE','TEST','TEST','EMP','SALARY', 'ALL')
SP_AUDIT_OBJECT ('UPDATE','TEST','TEST','EMP','SALARY', 'ALL')
SP_AUDIT_OBJECT ('INSERT','TEST','TEST','EMP','SALARY', 'ALL')

--P.S 其中,对于 UPDATE 和 DELETE 操作,因为也需要做 SELECT 操作,所以只要设置审计 SELECT 操作时,UPDATE 和 DELETE 也会作为 SELECT 操作被审计。


--P.S 如果不指定特定用户,第二个参数填NULL并用单引号引用
SP_AUDIT_OBJECT ('DELETE','NULL','TEST','EMP','SALARY', 'ALL')
SP_AUDIT_OBJECT ('UPDATE','NULL','TEST','EMP','SALARY', 'ALL')

2.2查询审计信息

查看审计记录的方式有两种,一种是通过DM审计分析工具analyzer查看,一种是查询动态视图V$AUDITRECORDS的结果集查看。

如果使用analyzer查看需要添加AUDIT日志再查看,这里主要讲述使用动态性能视图V$AUDITRECORDS查看。

--注意:需要使用SYSAUDITOR用户登录才能查看V$AUDITRECORDS视图,SYSDBA不能查看
--查询审计信息
SELECT USERNAME,OPERATION,SQL_TEXT,OPTIME,IP,SUCC_FLAG 
FROM V$AUDITRECORDS;

--查询已经开启的审计规则
SELECT * FROM SYSAUDITOR.SYSAUDIT;

2.3清理审计信息

达梦数据库使用SP_DROP_AUDIT_FILE清理



VOID
    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);

2.4关闭审计

--关闭语句级审计
SP_NOAUDIT_STMT (TYPE, USERNAME, WHENEVER)
--关闭对象级审计
SP_NOAUDIT_OBJECT ('DML','OWNER','SCHEMA','OBJECT_NAME', WHENEVER)
SP_NOAUDIT_OBJECT ('DML','OWNER','SCHEMA','OBJECT_NAME', 'COLNAME', WHENEVER)
--关闭系统审计规则
SP_SET_ENABLE_AUDIT (0) 

3.审计设置的说明

关于审计功能还有些特别说明和注意事项:

  • 只要审计功能被启用,系统级的审计记录就会产生;
  • 在进行数据库审计时,审计员之间没有区别,可以审计所有数据库对象,也可取消其他审计员的审计设置;
  • 语句级审计不针对特定的对象,只针对用户;
  • 对象级审计针对指定的用户与指定的对象进行审计;
  • 在设置审计时,审计选项不区分包含关系,都可以设置;
  • 在设置审计时,审计时机不区分包含关系,都可以进行设置;
  • 如果用户执行的一条语句与设置的若干审计项都匹配,只会在审计文件中生成一条审计记录。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值