审计
审计机制是 DM 数据库管理系统安全管理的重要组成部分之一。DM 数据库除了提供数据安全保护措施外,还提供对日常事件的事后审计监督。DM 具有一个灵活的审计子系统,可以通过它来记录系统级事件、个别用户的行为以及对数据库对象的访问。通过考察、跟踪审计信息,数据库审计员可以查看用户访问的形式以及曾试图对该系统进行的操作,从而采取积极、有效的应对措施
审计开关
审计有三种状态:
0:关闭审计
1:打开普通审计
2:打开普通审计和实时审计
打开审计功能
----打开审计功能
SQL> sp_set_para_value(1,'ENABLE_AUDIT',1);
----该方法仅适用于DM8版本,DM7报错,而且只能用SYSAUDITOR用户来打开此功能。
SQL> SP_SET_ENABLE_AUDIT (1);
----查看审计状态
SELECT * FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';
审计级别
审计级别 | 说明 |
---|---|
系统级 | 系统的启动与关闭,此级别的审计无法也无需由用户进行设置,只要审计开关打开就会自动生成对应审计记录 |
语句级 | 导致影响特定类型数据库对象的特殊 SQL 或语句组的审计。如 AUDIT TABLE 将审计 CREATE TABLE、ALTER TABLE 和 DROP TABLE 等语句 |
对象级 | 审计作用在特殊对象上的语句。如 test 表上的 INSERT 语句 |
审计级别设置
设置语句级审计过程
----例 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');
取消语句级审计过程
----例 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');
设置对象级审计
----例 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');
取消对象级审计
----例 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');
查看审计信息
当审计设置后,审计的相关设置信息都记录在数据字典表SYSAUDITOR.SYSAUDIT 中。
通过SYSAUDITOR.V$AUDITRECORDS
视图查询系统默认路径下的审计文件的审计记录。
设置匹配规则
-- 审计USER01用户对SYSDBA.T1的删除记录操作,不论删除成功与否
SP_AUDIT_OBJECT('DELETE', 'USER01', 'SYSDBA', 'T1', 'ALL');
SYSAUDITOR设置审计和审计分析规则
--审计USER01用户对SYSDBA.T1的删除记录操作,不论删除成功与否
SP_AUDIT_OBJECT('DELETE', 'USER01', 'SYSDBA', 'T1', 'ALL');
--审计规则USER01用户对SYSDBA.T1的删除记录操作为危险删除操作,不论删除成功与否,允许的IP段、时间段、频数,频数是最后2个参数。x分钟出现Y次以上就算频数超限。
SP_CREATE_AUDIT_RULE ('DANGEROUS_DELETE','DELETE', 'USER01', 'SYSDBA', 'T1', 'ALL', '"127.0.0.1"','MON "3:00:00" TO MON "5:00:00"',1, 3);