您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

达梦7中数据库审计的使用

文章目录

  • 前言
  • 一、DM系统管理员
  • 二、审计开关
    • 2.1 审计的相关参数
    • 2.2 打开审计功能
  • 三、审计级别
    • 3.1语句级审计
      • 3.1.1 设置语句级审计
      • 3.1.2 取消语句级审计
    • 3.2 对象级审计
      • 3.2.1 设置对象级审计
      • 3.2.2 取消对象级审计
    • 3.3 语句序列审计
      • 3.3.1 建立语句序列审计
      • 3.3.2 删除语句序列审计
  • 四 审计文件管理
  • 五 审计信息查阅
  • 六 其他


前言

数据库审计主要用于监视并记录对数据库服务器的各类操作行为,并记入审计日志或数据库中以便日后进行跟踪、查询、分析,以实现对用户操作的监控和审计。审计是一项非常重要的工作,也是数据安全体系的重要组成部分。

本文使用的数据库版本为DM7。


一、DM系统管理员

为了保证数据库系统的安全性,DM 数据库采用“三权分立”或“四权分立”的安全机制,“三权分立”时系统内置三种系统管理员,包括数据库管理员、数据库安全员和数据库审计员,四权分立”时新增了一类用户,称为数据库对象操作员。它们各司其职,互相制约,有效地避免了将所有权限集中于一人的风险,保证了系统的安全性。

数据库管理员(DBA)、数据库安全员(SSO)、数据库审计员(AUDITOR)、数据库对象操作员(DBO)。

数据库审计中使用的是数据库审计员(AUDITOR)。
数据库审计员可以设置要审计的对象和操作、定义新的数据库审计员、查看和分析审计记录。通过设置审计,几乎可以跟踪任何人在系统内执行的任何操作,为事后追查提供便利。

二、审计开关

2.1 审计的相关参数

参数名缺省值属性说明
ENABLE_AUDIT0动态,系统级审计开关,0:关闭;1:打开普通审计;2 打开普通审计和实时审计
AUDIT_FILE_FULL_MODE1静态审计文件满后的处理方式,1:删除文件;2:不删除文件,也不添加审计记录
AUDIT_MAX_FILE_SIZE100动态,系统级审计文件的最大大小,以兆为单位。有效值范围(1~4096)

2.2 打开审计功能

使用SYSDBA账号

代码如下(示例):

----打开审计功能
SQL> sp_set_para_value(1,'ENABLE_AUDIT',1);

----查看审计状态
SELECT * FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';

三、审计级别

数据库审计员指定被审计对象的活动称为审计设置,只有具有 AUDIT DATABASE 权限的审计员才能进行审计设置。DM 提供审计设置系统过程来实现这种设置,被审计的对象可以是某类操作,也可以是某些用户在数据库中的全部行踪。只有预先设置的操作和用户才能被 DM 系统自动进行审计。

DM 允许在三个级别上进行审计设置:

审计级别说明
系统级系统的启动与关闭,此级别的审计无法也无需由用户进行设置,只要审计开关打开就会自动生成对应审计记录
语句级导致影响特定类型数据库对象的特殊 SQL 或语句组的审计。如 AUDIT TABLE 将审计 CREATE TABLE、ALTER TABLE 和 DROP TABLE 等语句
对象级审计作用在特殊对象上的语句。如 test 表上的 INSERT 语句

审计设置存放于 DM 字典表 SYSAUDIT 中,进行一次审计设置就在 SYSAUDIT 中增加一条对应的记录,取消审计则删除 SYSAUDIT 中相应的记录。

3.1语句级审计

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

审计选项审计的数据库操作说明
ALL所有的语句级审计选项所有可审计操作
TABLECREATE TABLE、ALTER TABLE、DROP TABLE、TRUNCATE TABLE创建/修改/删除/清空基表操作
INSERT TABLEINSERT INTO TABLE表上的插入操作
UPDATE TABLEUPDATE TABLE表上的修改操作
DELETE TABLEDELETE FROM TABLE表上的删除操作
SELECT TABLESELECT FROM TABLE表上的查询操作
………………

3.1.1 设置语句级审计

----1,审计表的创建、修改和删除。
SP_AUDIT_STMT('TABLE', 'NULL', 'ALL');
----2,对 SYSDBA 创建用户成功进行审计。
SP_AUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL');
----3,对用户 USER2 进行的表的修改和删除进行审计,不管失败和成功。
SP_AUDIT_STMT('UPDATE TABLE', 'USER2', 'ALL');
SP_AUDIT_STMT('DELETE TABLE', 'USER2', 'ALL');

3.1.2 取消语句级审计

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

----1,取消对表的创建、修改和删除的审计。
SP_NOAUDIT_STMT('TABLE', 'NULL', 'ALL');
----2,取消对 SYSDBA 创建用户成功进行审计。
SP_NOAUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL');
----3,取消对用户 USER2 进行的表的修改和删除的审计。
SP_NOAUDIT_STMT('UPDATE TABLE', 'USER2', 'ALL');
SP_NOAUDIT_STMT('DELETE TABLE', 'USER2', 'ALL');

3.2 对象级审计

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

3.2.1 设置对象级审计

----1,对 SYSDBA 对表 PERSON.ADDRESS 进行的添加和修改的成功操作进行审计。
SP_AUDIT_OBJECT('INSERT', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');
SP_AUDIT_OBJECT('UPDATE', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');
----2,对 SYSDBA 对表 PERSON.ADDRESS 的 ADDRESS1 列进行的修改成功的操作进行审计。
SP_AUDIT_OBJECT('UPDATE','SYSDBA','PERSON','ADDRESS','ADDRESS1','SUCCESSFUL');

3.2.2 取消对象级审计

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

----1,取消对 SYSDBA 对表 PERSON.ADDRESS 进行的添加和修改的成功操作的审计。
SP_NOAUDIT_OBJECT('INSERT', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');
SP_NOAUDIT_OBJECT('UPDATE', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');
----2,取消对 SYSDBA 对表 PERSON.ADDRESS 的 ADDRESS1 列进行的修改成功操作
的审计。
SP_NOAUDIT_OBJECT('UPDATE','SYSDBA','PERSON','ADDRESS','ADDRESS1','SUCCESSFUL
');

3.3 语句序列审计

DM 还提供了语句序列审计功能,作为语句级审计和对象级审计的补充。语句序列审计需要审计员预先建立一个审计规则,包含 N 条 SQL 语句(SQL1,SQL2……),如果某个会话依次执行了这些 SQL 语句,就会触发审计。

3.3.1 建立语句序列审计

使用说明:
建立语句序列审计规则需要先调用 SP_AUDIT_SQLSEQ_START,之后调用若干次SP_AUDIT_SQLSEQ_ADD,每次加入一条 SQL 语句,审计规则中的 SQL 语句顺序根据加入 SQL 语句的顺序确定,最后调用 SP_AUDIT_SQLSEQ_END 完成规则的建立。

----例如,建立一个语句序列审计规则 AUDIT_SQL1。
SP_AUDIT_SQLSEQ_START('AUDIT_SQL1');
SP_AUDIT_SQLSEQ_ADD(' AUDIT_SQL1', 'SELECT NAME FROM TEST1;');
SP_AUDIT_SQLSEQ_ADD(' AUDIT_SQL1', 'SELECT ID ROM TEST2;');
SP_AUDIT_SQLSEQ_ADD(' AUDIT_SQL1', 'SELECT * FROM TEST3;');
SP_AUDIT_SQLSEQ_END(' AUDIT_SQL1');

3.3.2 删除语句序列审计

----例如,删除语句序列审计规则 AUDIT_SQL1。
SP_AUDIT_SQLSEQ_DEL(' AUDIT_SQL1');

四 审计文件管理

审计文件的大小可以通过 DM 的 INI 参数 AUDIT_MAX_FILE_SIZE 指定。当单个审计文件超过指定大小时,系统会自动切换审计文件,自动创建新的审计文件,审计记录将写入新的审计文件中。AUDIT_MAX_FILE_SIZE 为动态系统级参数,缺省值为 100M,DBA用户可通过系统过程 SP_SET_PARA_VALUE 对其进行动态修改,有效值范围为 1~4096M。

随着系统的运行,审计记录将会不断增加,审计文件需要更多的磁盘空间。在极限情况下,审计记录可能会因为磁盘空间不足而无法写入审计文件,最终导致系统无法正常运行。
对这种情况的处理有两种策略,通过设置 DM 的 INI 参数 AUDIT_FILE_FULL_MODE 进行配置。当将 AUDIT_FILE_FULL_MODE 置为 1 时,将删除最老的审计文件,直至有足够的空间创建新审计文件;当将 AUDIT_FILE_FULL_MODE 置为 2 时,将不再写审计记录,默
认值为 1。AUDIT_FILE_FULL_MODE 为静态参数,可通过系统过程
SP_SET_PARA_VALUE 进行修改,但是修改需要重新启动 DM 数据库服务器才能生效。

若系统审计人员已对历史审计信息进行了充分分析,不再需要某个时间点之前的历史审计信息,可使用下面的系统过程删除指定时间点之前的审计文件,但是不会删除 DM 当前正在使用的审计文件。

----例如,指定删除 2015-12-6 16:30:00 以前的普通审计文件。
SP_DROP_AUDIT_FILE('2015-12-6 16:30:00',0);

五 审计信息查阅

当审计设置后,日志记录在 SYSAUDITOR.V$AUDITRECORDS

序号数据类型说明
1USERIDINTEGER用户 ID
2USERNAMEVARCHAR(128)用户名
3ROLEIDINTEGER角色 ID
4ROLENAMEVARCHAR(128)角色名
5IPVARCHAR(25)IP 地址
6SCHIDINTEGER模式 ID
7SCHNAMEVARCHAR(128)模式名
8OBJIDINTEGER对象 ID
9OBJNAMEVARCHAR(128)对象名
10OPERATIONVARCHAR(128)操作类型名
11SUCC_FLAGCHAR(1)成功标记
12SQL_TEXTVARCHAR(8188)SQL 文本
13DESCRIPTIONVARCHAR(8188)描述信息
14OPTIMEDATETIME操作时间
----使用SYSAUDITOR审计账号登录
select * from  SYSAUDITOR.V$AUDITRECORDS ;

六 其他

参考文档《DM7安全管理.pdf》


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进