sysauditor用户操作
打开普通审计开关
SP_SET_ENABLE_AUDIT (1);
查询审计开关的当前值
SELECT * FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';
审计的设置与取消
审计分为系统级,语句级,对象级
设置语句级审计的系统过程如下:
VOID
SP_AUDIT_STMT(
TYPE VARCHAR(30),
USERNAME VARCHAR (128),
WHENEVER VARCHAR (20)
)
参数说明:
TYPE:语句级审计选项,即上表中的第一列
USERNAME :用户名,NULL 表示不限制
WHENEVER :审计时机,可选的取值为:
ALL:所有的
SUCCESSFUL:操作成功时
FAIL:操作失败时
例 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');
取消语句级审计的系统过程如下:
VOID
SP_NOAUDIT_STMT(
TYPE VARCHAR(30),
USERNAME VARCHAR (128),
WHENEVER VARCHAR (20)
)
参数说明:
TYPE:语句级审计选项,即上表中的第一列
USERNAME :用户名,NULL 表示不限制
WHENEVER :审计时机,可选的取值为:
ALL:所有的
SUCCESSFUL:操作成功时
FAIL:操作失败时
例 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');
对象级审计
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:对象级审计选项,即上表中的第一列
USERNAME :用户名
SCHNAME:模式名,为空时置‘null’
TVNAME:表、视图、存储过程名不能为空
COLNAME:列名
WHENEVER :审计时机,可选的取值为:
ALL:所有的
SUCCESSFUL:操作成功时
FAIL:操作失败时
例 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');
取消对象级审计的系统过程如下:
VOID
SP_NOAUDIT_OBJECT (
TYPE VARCHAR(30),
USERNAME VARCHAR (128),
SCHNAME VARCHAR (128),
TVNAME VARCHAR (128),
WHENEVER VARCHAR (20)
)
VOID
SP_NOAUDIT_OBJECT (
TYPE VARCHAR(30),
USERNAME VARCHAR (128),
SCHNAME VARCHAR (128),
TVNAME VARCHAR (128),
COLNAME VARCHAR (128),
WHENEVER VARCHAR (20)
)
参数说明:
TYPE:对象级审计选项,即上表中的第一列
USERNAME :用户名
SCHNAME:模式名,为空时置‘null
TVNAME:表、视图、存储过程名不能为空
COLNAME:列名
WHENEVER :审计时机,可选的取值为:
ALL:所有的
SUCCESSFUL:操作成功时
FAIL:操作失败时
例 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');
语句序列审计(语句级审计和对象级审计的补充)
建立语句序列审计规则的过程包括下面三个系统过程。
VOID
SP_AUDIT_SQLSEQ_START(
NAME VARCHAR (128)
)
VOID
SP_AUDIT_SQLSEQ_ADD(
NAME VARCHAR (128),
SQL VARCHAR (8188)
)
VOID
SP_AUDIT_SQLSEQ_END(
NAME VARCHAR (128)
)
参数说明:
NAME:语句序列审计规则名
SQL:需要审计的语句序列中的 SQL 语句
例 建立一个语句序列审计规则 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 FROM TEST2;');
SP_AUDIT_SQLSEQ_ADD('AUDIT_SQL1', 'SELECT * FROM TEST3;');
SP_AUDIT_SQLSEQ_END('AUDIT_SQL1');
可使用下面的系统过程删除指定的语句序列审计规则
VOID
SP_AUDIT_SQLSEQ_DEL(
NAME VARCHAR (128)
)
参数说明:
NAME:语句序列审计规则名
例 删除语句序列审计规则 AUDIT_SQL1。
SP_AUDIT_SQLSEQ_DEL('AUDIT_SQL1');
系统过程删除指定时间点之前的审计文件
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);
系统过程设置审计文件加密
VOID
SP_AUDIT_SET_ENC(
NAME VARCHAR(128),
KEY VARCHAR(128)
)
参数说明:
NAME:加密算法名,可使用 DM 支持的加密算法,见表 7.1;也支持用户自定义加密
算法,见第 8 章加密引擎介绍
KEY:加密密钥
切换审计文件
VOID
SP_SWITCH_AUDIT_FILE(
AUDIT_SWITCH INT
)
AUDIT_SWITCH:切换开关值,取值 1 或 2。1 表示切换普通审计文件,2 表示同时切
换普通和实时审计文件。对于 DMDSC 环境仅切换当前节点审计文件
例 切换普通审计文件。
SP_SWITCH_AUDIT_FILE(1);
审计信息查阅
除语句序列审计设置外的审计设置信息都记录在数据字典表 SYSAUDITOR.SYSAUDIT 中
语句序列审计设置信息记录在数据字典表 SYSAUDITOR.SYSAUDITSQLSEQ 中,结构如表所示
审计用户可以通过动态视图 SYSAUDITOR.V$AUDITRECORDS查询审计文件路径下的审计文件的审计记录
DM 还提供了以下系统函数供查看审计设置中涉及的审计类型 TYPE、审计级别 LEVEL、
以及生成时机 WHENEVER 常量对应的具体信息,作为上述动态视图的补充。
SF_GET_AUDIT_TYPENAME
VARCHAR
SF_GET_AUDIT_TYPENAME(
TYPE INT
);
参数说明:
TYPE:审计类型,对应 SYSAUDIT 中 TYPE 字段值
返回值:
参数 TYPE 值的意义描述
例 查看 SYSAUDIT 中 TYPE 值 50 的意义描述。
SELECT SF_GET_AUDIT_TYPENAME(50);
SELECT * FROM SYSAUDITOR.SYSAUDIT;
行号 LEVEL UID TVPID COLID TYPE WHENEVER
---------- ----------- ----------- ----------- ----------- -----------
1 2 50331649 1196 -1 50 1
2 2 50331649 1196 -1 53 1
SF_GET_AUDIT_LEVELNAME
VARCHAR
SF_GET_AUDIT_LEVELNAME(
LEVEL INT
);
参数说明:
LEVEL:审计级别,对应 SYSAUDIT 中 LEVEL 字段值
返回值:
参数 LEVEL 值的意义描述
例 查看 SYSAUDIT 中 LEVEL 值为 2 的意义描述。
SELECT SF_GET_AUDIT_LEVELNAME(2);
SF_GET_AUDIT_WHENEVERNAME
VARCHAR
SF_GET_AUDIT_WHENEVERNAME(
WHENEVER INT
);
参数说明:
WHENEVER :审计记录生成时机,对应 SYSAUDIT 中 WHENEVER 字段值
返回值:
参数 WHENEVER 值的意义描述
例 查看 SYSAUDIT 中 WHENEVER 值为 1 的意义描述。
SELECT SF_GET_AUDIT_WHENEVERNAME(1);
审计实时侵害检测
当执行 SP_SET_ENABLE_AUDIT (2);时,开启审计实时侵害检测功能。
创建与删除实时侵害检测规则
例 1 创建一个审计实时侵害检测规则 DANGEROUS_SESSION,该规则检测每个星期一8:00 至 9:00 的所有非本地 SYSDBA 的登录动作。
SP_CREATE_AUDIT_RULE ('DANGEROUS_SESSION','CONNECT', 'SYSDBA', 'NULL', 'NULL', 'ALL', '"127.0.0.1"','MON "8:00:00" TO MON "9:00:00"',0, 0);
例 2 创建一个审计实时侵害检测规则 PWD_CRACK,该规则检测可能的口令暴力破解行为。
SP_CREATE_AUDIT_RULE ('PWD_CRACK','CONNECT', 'NULL', 'NULL', 'NULL', 'FAIL', 'NULL','NULL',1, 50);
当不再需要某个实时侵害检测规则时,可使用下面的系统过程进行删除。
VOID
SP_DROP_AUDIT_RULE(
RULENAME VARCHAR(128)
);
参数说明:
RULENAME:待删除的审计实时侵害检测规则名
例 删除已创建的实时侵害检测规则 DANGEROUS_SESSION。
SP_DROP_AUDIT_RULE ('DANGEROUS_SESSION');
dmaudtool 工具分析审计文件
dmaudtool USERID=<userid> AFIL_PATH=<afil_path> OUT_PATH=<out_path> {PARAMETER=<value>}
dmaudtool USERID=sysauditor/SYSAUDITOR@192.168.6.140:32141 AFIL_PATH=/data/dmdata/audit/AUDIT_GRP1_RT_01_EE658D7DEE658D7D203751947841ABD7_2024-7-1-10-9-1.log OUT_PATH=/data/dmdata/auditlog/ R_SEP=AAAA




