达梦审计
前言
根据达梦官网文档整理
一、为什么要做数据库审计
-
增强内部安全,可解答是哪个对象/人员更改了关键数据,并在何时进行的更改。
-
安全等保、内审等合规条件的基本需求
-
定责、追责等提供依据,起到威慑作用
二、谁去做审计
- 安全审计员、也有可能是DBA、第三方监理部门
三、什么时候做审计
-
等保要求规范
-
保证数据安全,如一些敏感数据,核心业务数据外泄
-
出于其它业务上考虑,如防止贪污、非法转移等
四、审计
审计机制是 DM 数据库管理系统安全管理的重要组成部分之一。DM 数据库除了提供数 据安全保护措施外,还提供对日常事件的事后审计监督。DM 具有一个灵活的审计子系统, 可以通过它来记录系统级事件、个别用户的行为以及对数据库对象的访问。通过考察、跟踪 审计信息,数据库审计员可以查看用户访问的形式以及曾试图对该系统进行的操作,从而采 取积极、有效的应对措施。
五、dm.ini审计相关的参数
参数 | 说明 |
---|---|
AUD_PATH | DM 审计信息存储在审计文件中。审计文件默认存放在数据库的 SYSTEM_PATH 指定的路径,即数据库所在路径。用户也可在 dm.ini 文件中添加参数 AUD_PATH 来指定审计文件的存放路径 |
AUDIT_SPACE_LIMIT | 审计文件总存储空间大小,该参数取值范围为 0~1024*1024M,0 表示不限制,缺省为 8192M。 |
AUDIT_MAX_FILE_SIZE | 单个审计文件的大小,有效值范围为 1~4096M,缺省值为 100M。当单个审计文件超过指定大小时,系统会自动切换审计文件,自动创建新的审计文件,审计记录将写入新的审计文件中。 |
AUDIT_FILE_FULL_MODE | 随着系统的运行,审计记录将会不断增加,审计文件需要更多的磁盘空间。在极限情况下,审计记录可能会因为磁盘空间不足而无法写入审计文件,最终导致系统无法正常运行。对这种情况的处理有两种策略。 1:删除最老的审计文件,直至有足够的空间创建新审计文件。若将所有可以删除的审计文件都删除后空间仍旧不够,则数据库会挂起不再处理任何请求,直至磁盘空间被清理出足够创建新审计文件的空间。 2:不再写审计记录 |
注意
AUDIT_FILE_FULL_MODE
的**两种策略都会导致审计记录的缺失,因此,管理员应该及时对审计文件进行备份**。
六、审计类别
数据库审计员指定被审计对象的活动称为审计设置,只有具有 AUDIT DATABASE 权限的审计员才能进行审计设置。DM 提供审计设置系统过程来实现这种设置,被审计的对象可以是某类操作,也可以是某些用户在数据库中的全部行踪。只有预先设置的操作和用户才能被 DM 系统自动进行审计。
DM 允许在三个级别上进行审计设置。
审计级别 | 说明 |
---|---|
系统级 | 系统的启动、关闭、部分系统事件以及一些系统过程和函数的调用,此级别的审计无法也无需由用户进行设置,只要审计开关打开就会自动生成对应审计记录 |
语句级 | 导致影响特定类型数据库对象的特殊 SQL 或语句组的审计。如 AUDIT TABLE 将审计 CREATE TABLE、ALTER TABLE 和 DROP TABLE 等语句 |
对象级 | 审计作用在特殊对象上的语句。如 test 表上的 INSERT 语句 |
语句级与对象级的区别?
- 语句级一类的操作,不指明具体对象
- 对象级针对某个具体对象的操作
审计设置存放于 DM 字典表
SYSAUDIT
中,进行一次审计设置就在 SYSAUDIT 中增加一条对应的记录,取消审计则删除 SYSAUDIT 中相应的记录。
SYSAUDITOR.SYSAUDIT表结构:
列 | 数据类型 | 说明 | 系统函数 |
---|---|---|---|
LEVEL | SMALLINT | 审计级别 | SF_GET_AUDIT_LEVELNAME |
UID | INTEGER | 用户 ID | |
TVPID | INTEGER | 表/视图/触发器/存储过程函数 ID | |
COLID | SMALLINT | 列 ID | |
TYPE | SMALLINT | 审计类型 | SF_GET_AUDIT_TYPENAME |
WHENEVER | SMALLINT | 审计情况 | SF_GET_AUDIT_WHENEVERNAME |
SQL > SELECT * FROM SYSAUDIT;
#|LEVEL |UID |TVPID |COLID |TYPE |WHENEVER|
-+------+--------+------+------+------+--------+
1| 1|50331649| -1| -1| 9| 3|
2| 1|50331649| -1| -1| 12| 3|
3| 1|50331649| -1| -1| 13| 3|SQL> SELECT SF_GET_AUDIT_LEVELNAME(LEVEL) AS 审计级别, SF_GET_AUDIT_TYPENAME(TYPE) 审计项, SF_GET_AUDIT_WHENEVERNAME("WHENEVER") 审计条件 FROM SYSAUDIT;审计级别 审计项 审计条件
-------- ---------- --------
STMT TABLESPACE ALL
STMT USER ALL
STMT ROLE ALL
1、系统级审计
系统级审计无法也无需由用户进行设置,只要审计开关打开就会自动生成对应审计记录。
系统级审计选项
审计的数据库操作 | 说明 |
---|---|
数据库系统启动关闭 | 区分第一次启动、正常退出后启动、异常退出后启动和还原库后第一次启动 |
审计空间不足告警 | 系统定时检测如果审计空间不足就会生成审计记录 |
数据库版本升级 | 包括数据字典版本、回滚段版本等 |
主备之间 redo 日志传输故障和恢复 | 包括主备之间 redo 日志传输异常和恢复两种 |
SP_SET_ENABLE_AUDIT | 打开/关闭审计开关 |
SP_AUDIT_STMT/SP_NOAUDIT_STMT | 设置/取消语句级审计 |
SP_AUDIT_OBJECT | 设置对象级审计 |
SP_AUDIT_SET_ENC | 设置审计加密 |
SP_DROP_AUDIT_FILE | 删除审计文件 |
SP_SWITCH_AUDIT_FILE | 切换审计文件 |
SP_SET_PARA_VALUE | 设置 DM.INI 文件中整型的参数值 |
SP_SET_PARA_STRING_VALUE | 设置 DM.INI 文件中字符型的参数值 |
SP_SET_PARA_DOUBLE_VALUE | 设置 DM.INI 文件中浮点型的参数值 |
SF_SET_SYSTEM_PARA_VALUE | 修改整型、double、varchar 的静态配置参数或动态配置参数 |
SF_SET_SESSION_PARA_VALUE | 设置会话级 INI 参数在当前会话上的值 |
SP_RESET_SESSION_PARA_VALUE | 重置会话级 INI 参数在当前会话上的值,使得当前会话的参数值和全局值一致 |
SP_SET_PARAM_IN_SESSION | 设置指定会话的会话级 INI 参数的值 |
SP_SET_SQLLOG_INI | 修改 SQLLOG.INI 文件的内容 |
SP_DELETE_SQLLOG_INI_MODE | 删除 SQLLOG.INI 文件中的模式 |
2、语句级审计(STMT)
语句级审计的动作是全局的,不对应具体的数据库对象。其审计选项如表所示。
审计选项 | 审计的数据库操作 | 说明 |
---|---|---|
ALL | 所有的语句级审计选项 | 所有可审计操作 |
USER | CREATE USER ALTER USER DROP USER | 创建/修改/删除用户操作 |
ROLE | CREATE ROLE DROP ROLE | 创建/删除角色操作 |
TABLESPACE | CREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE | 创建/修改/删除表空间操作 |
SCHEMA | CREATE SCHEMA DROP SCHEMA SET SCHEMA | 创建/删除/设置当前模式操作 |
TABLE | CREATE TABLE ALTER TABLE DROP TABLE TRUNCATE TABLE | 创建/修改/删除/清空基表操作 |
VIEW | CREATE VIEW ALTER VIEW DROP VIEW | 创建/修改/删除视图操作 |
INDEX | CREATE INDEX DROP INDEX | 创建/删除索引操作 |
PROCEDURE | CREATE PROCEDURE ALTER PROCEDURE DROP PROCEDURE | 创建/修改/删除存储模块操作 |
TRIGGER | CREATE TRIGGER ALTER TRIGGER DROP TRIGGER | 创建/修改/删除触发器操作 |
SEQUENCE | CREATE SEQUENCE ALTER SEQUENCE DROP SEQUENCE | 创建/修改/删除序列操作 |
CONTEXT | CREATE CONTEXT INDEX ALTER CONTEXT INDEX DROP CONTEXT INDEX | 创建/修改/删除全文索引操作 |
SYNONYM | CREATE SYNONYM DROP SYNONYM | 创建/删除同义词 |
OPERATOR | CREATE OPERATOR DROP OPERATOR | 创建/删除自定义运算符 |
GRANT | GRANT | 授予权限操作 |
REVOKE | REVOKE | 回收权限操作 |
AUDIT | AUDIT | 设置审计操作 |
NOAUDIT | NOAUDIT | 取消审计操作 |
INSERT TABLE | INSERT INTO TABLE | 表上的插入操作 |
UPDATE TABLE | UPDATE TABLE | 表上的修改操作 |
DELETE TABLE | DELETE FROM TABLE | 表上的删除操作 |
SELECT TABLE | SELECT FROM TABLE | 表上的查询操作 |
EXECUTE PROCEDURE | CALL PROCEDURE | 调用存储过程或函数操作 |
PACKAGE | CREATE PACKAGE DROP PACKAGE | 创建/删除包规范 |
PACKAGE BODY | CREATE PACKAGE BODY DROP PACKAGE BODY | 创建/删除包体 |
MAC POLICY | CREATE POLICY ALTER POLICY DROP POLICY | 创建/修改/删除策略 |
MAC LEVEL | CREATE LEVEL ALTER LEVEL DROP LEVEL | 创建/修改/删除等级 |
MAC COMPARTMENT | CREATE COMPARTMENT ALTER COMPARTMENT DROP COMPARTMENT | 创建/修改/删除范围 |
MAC GROUP | CREATE GROUP ALTER GROUP DROP GROUP ALTER GROUP PARENT | 创建/修改/删除组,更新父组 |
MAC LABEL | CREATE LABEL ALTER LABEL DROP LABEL | 创建/修改/删除标记 |
MAC USER | USER SET LEVELS USER SET COMPARTMENTS USER SET GROUPS USER SET PRIVS | 设置用户等级/范围/组/特权 |
MAC TABLE | INSERT TABLE POLICY REMOVE TABLE POLICY APPLY TABLE POLICY | 插入/取消/应用表标记 |
MAC SESSION | SESSION LABEL SESSION ROW LABEL RESTORE DEFAULT LABELS SAVE DEFAULT LABELS | 保存/取消会话标记 设置会话默认标记 设置会话行标记 |
CHECKPOINT | CHECKPOINT | 检查点(checkpoint) |
SAVEPOINT | SAVEPOINT | 保存点 |
EXPLAIN | EXPLAIN | 显示执行计划 |
NOT EXIST | 分析对象不存在导致的错误 | |
DATABASE | ALTER DATABASE | 修改当前数据库操作 |
CONNECT | LOGIN LOGOUT | 登录/退出操作 |
COMMIT | COMMIT | 提交操作 |
ROLLBACK | ROLLBACK | 回滚操作 |
SET TRANSACTION | SET TRX ISOLATION SET TRX READ WRITE | 设置事务的读写属性和隔离级别 |
BACKUP | BACKUP DATABASE BACKUP TABLESPACE BACKUP TABLE BACKUP ARCHIVE | 库/表空间/表/归档备份操作 |
RESTORE | RESTORE TABLESPACE RESTORE TABLE | 表空间/表还原操作 |
DIMP | DIMP FULL DIMP OWNER DIMP SCHEMA DIMP TABLE | 逻辑导入:库级/用户级/模式级/表级 |
DEXP | DEXP FULL DEXP OWNER DEXP SCHEMA DEXP TABLE | 逻辑导出:库级/用户级/模式级/表级 |
FLDR | FLDR IN FLDR OUT | FLDR 工具导入/导出 |
WARNING | AUD SPACE WARNING | 审计剩余可用空间不足 |
KEY | CREATE KEY DESTROY KEY | 生成/销毁密钥 |
CRYPT | ENCRYPT DECRYPT | 数据加密/解密 |
DTS | DTS IN DTS OUT | DTS 工具迁入/迁出 |
2.1 设置语句级审计
设置语句级审计的系统过程如下:
VOID
SP_AUDIT_STMT(TYPE VARCHAR(30),USERNAME VARCHAR (128),WHENEVER VARCHAR (20)
)
TYPE
:语句级审计选项,即上表中的第一列
USERNAME
:用户名,NULL 表示不限制
WHENEVER
:审计时机,可选的取值为:
- ALL:所有的
- SUCCESSFUL:操作成功时
- FAIL:操作失败时
-- 审计表的创建、修改、删除和清空
SP_AUDIT_STMT('TABLE', 'NULL', 'ALL');-- 对 SYSDBA 创建、修改、删除用户成功进行审计
SP_AUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL');-- 对用户 CALL进行的表的修改和删除进行审计,不管失败和成功
SP_AUDIT_STMT('UPDATE TABLE', 'CALL', 'ALL');
SP_AUDIT_STMT('DELETE TABLE', 'CALL', 'ALL');
2.2 取消语句级审计
取消语句级审计的系统过程如下:
VOID
SP_NOAUDIT_STMT(TYPE VARCHAR(30),USERNAME VARCHAR (128),WHENEVER VARCHAR (20)
)
TYPE
:语句级审计选项,即上表中的第一列
USERNAME
:用户名,NULL 表示不限制
WHENEVER
:审计时机,可选的取值为:
- ALL:所有的
- SUCCESSFUL:操作成功时
- FAIL:操作失败时
-- 取消对表的创建、修改、删除和清空的审计
SP_NOAUDIT_STMT('TABLE', 'NULL', 'ALL');-- 取消对 SYSDBA 创建、修改、删除用户成功进行审计
SP_NOAUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL');-- 取消对用户 CALL进行的表的修改和删除的审计
SP_NOAUDIT_STMT('UPDATE TABLE', 'CALL', 'ALL');
SP_NOAUDIT_STMT('DELETE TABLE', 'CALL', 'ALL');
3、对象级审计(OBJECT)
对象级审计发生在具体的对象上,需要指定模式名以及对象名。其审计选项如表所示。
审计选项 | TABLE | VIEW | COL | PROCEDURE FUNCTION | TRIGGER |
---|---|---|---|---|---|
INSERT | √ | √ | √ | ||
UPDATE | √ | √ | √ | ||
DELETE | √ | √ | √ | ||
SELECT | √ | √ | √ | ||
EXECUTE | √ | ||||
MERGE INTO | √ | √ | |||
EXECUTE TRIGGER | √ | ||||
LOCK TABLE | √ | ||||
BACKUP TABLE | √ | ||||
RESTORE TABLE | √ | ||||
ALL(所有对象级审计选项) | √ | √ | √ | √ | √ |
注意:
对于 UPDATE 和 DELETE 操作,因为也需要做 SELECT 操作,所以只要设置审计 SELECT 操作时,UPDATE 和 DELETE 也会作为 SELECT 操作被审计。
创建测试表
CREATE SCHEMA PERSON AUTHORIZATION SYSDBA;CREATE TABLE PERSON.ADDRESS
(uid int,ADDRESS1 VARCHAR(100)
);
3.1 设置对象级审计
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:操作失败时
SQL> SELECT SF_GET_AUDIT_LEVELNAME(LEVEL) AS 审计级别, SF_GET_AUDIT_TYPENAME(TYPE) 审计项, SF_GET_AUDIT_WHENEVERNAME("WHENEVER") 审计条件 FROM SYSAUDIT;审计级别 审计项 审计条件
-------- ---------- ----------
STMT TABLESPACE ALL
STMT USER ALL
STMT ROLE ALL
STMT TABLE ALL
STMT USER SUCCESSFUL
- 加入对象审计
-- 对 SYSDBA 对表 PERSON.ADDRESS 进行的添加和修改的成功操作进行审计
SQL> SP_AUDIT_OBJECT('INSERT', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');
SQL> SP_AUDIT_OBJECT('UPDATE', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');
-- 对 SYSDBA 对表 PERSON.ADDRESS 的 ADDRESS1 列进行的修改成功的操作进行审计
SQL> SP_AUDIT_OBJECT('UPDATE','SYSDBA','PERSON','ADDRESS','ADDRESS1','SUCCESSFUL');
SQL> SELECT SF_GET_AUDIT_LEVELNAME(LEVEL) AS 审计级别, SF_GET_AUDIT_TYPENAME(TYPE) 审计项, SF_GET_AUDIT_WHENEVERNAME("WHENEVER") 审计条件 FROM SYSAUDIT;审计级别 审计项 审计条件
-------- ---------- ----------
STMT TABLESPACE ALL
STMT USER ALL
STMT ROLE ALL
STMT TABLE ALL
STMT USER SUCCESSFUL
OBJECT INSERT SUCCESSFUL
OBJECT UPDATE SUCCESSFUL
OBJECT UPDATE SUCCESSFUL
3.2 测试对象审计
INSERT INTO PERSON.ADDRESS VALUES(1,'福建');
UPDATE PERSON.ADDRESS SET UID = 4;
UPDATE PERSON.ADDRESS SET ADDRESS1 = '上海';
SQL> SELECT USERNAME,SCHNAME,OBJNAME,OPERATION,SUCC_FLAG,SQL_TEXT FROM V$AUDITRECORDS WHERE OBJNAME = 'ADDRESS';
*************************** 1. row ***************************USERNAME: SYSDBASCHNAME: PERSONOBJNAME: ADDRESS
OPERATION: INSERT
SUCC_FLAG: YSQL_TEXT: INSERT INTO PERSON.ADDRESS VALUES(1,'福建');
*************************** 2. row ***************************USERNAME: SYSDBASCHNAME: PERSONOBJNAME: ADDRESS
OPERATION: UPDATE
SUCC_FLAG: YSQL_TEXT: UPDATE PERSON.ADDRESS SET ADDRESS1 = '上海';
审计结果表中可以发现,语句1,3被审计记录了,而语句2没有被审计记录。
3.3 取消对象级审计
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:操作失败时
取消对象审计
-- 取消对 SYSDBA 对表 PERSON.ADDRESS 进行的添加和修改的成功操作的审计
SP_NOAUDIT_OBJECT('INSERT', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');
SP_NOAUDIT_OBJECT('UPDATE', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');
-- 取消对 SYSDBA 对表 PERSON.ADDRESS 的 ADDRESS1 列进行的修改成功操作的审计
SP_NOAUDIT_OBJECT('UPDATE','SYSDBA','PERSON','ADDRESS','ADDRESS1','SUCCESSFUL');
SQL> SELECT SF_GET_AUDIT_LEVELNAME(LEVEL) AS 审计级别, SF_GET_AUDIT_TYPENAME(TYPE) 审计项, SF_GET_AUDIT_WHENEVERNAME("WHENEVER") 审计条件 FROM SYSAUDIT;审计级别 审计项 审计条件
-------- ---------- ----------
STMT TABLESPACE ALL
STMT USER ALL
STMT ROLE ALL
STMT TABLE ALL
STMT USER SUCCESSFUL
4、语句序列审计
DM 还提供了语句序列审计功能,作为语句级审计和对象级审计的补充。语句序列审计需要审计员预先建立一个审计规则,包含 N 条 SQL 语句(SQL1,SQL2……),如果某个会话依次执行了这些 SQL 语句,就会触发审计。
4.1 创建语句序列审计
建立语句序列审计规则的过程包括下面三个系统过程。
VOIDSP_AUDIT_SQLSEQ_START(NAME VARCHAR (128)
)VOIDSP_AUDIT_SQLSEQ_ADD(NAME VARCHAR (128),SQL VARCHAR (8188)
)VOIDSP_AUDIT_SQLSEQ_END(NAME VARCHAR (128)
)
NAME
:语句序列审计规则名
SQL
:需要审计的语句序列中的 SQL 语句
建立语句序列审计规则需要先调用 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 FROM TEST2;');
SP_AUDIT_SQLSEQ_ADD('AUDIT_SQL1', 'SELECT * FROM TEST3;');
SP_AUDIT_SQLSEQ_END('AUDIT_SQL1');
4.2 取消语句序列审计
VOIDSP_AUDIT_SQLSEQ_DEL(NAME VARCHAR (128)
)
删除语句序列审计规则 AUDIT_SQL1
SP_AUDIT_SQLSEQ_DEL('AUDIT_SQL1');
5、总结
- 只要审计功能被启用,系统级的审计记录就会产生;
- 在进行数据库审计时,审计员之间没有区别,可以审计所有数据库对象,也可取消其他审计员的审计设置;
- 语句级审计不针对特定的对象,只针对用户;
- 对象级审计针对指定的用户与指定的对象进行审计;
- 在设置审计时,审计选项不区分包含关系,都可以设置;
- 在设置审计时,审计时机不区分包含关系,都可以进行设置;
- 如果用户执行的一条语句与设置的若干审计项都匹配,只会在审计文件中生成一条审计记录。
七、常用的审计命令
1、开启审计
在 DM 系统中,专门为审计设置了开关,要使用审计功能首先要打开审计开关。审计开关由过程 VOID SP_SET_ENABLE_AUDIT(param int)控制,过程执行完后会立即生效,param 有三种取值:
- 0:关闭审计
- 1:打开普通审计
- 2:打开普通审计和实时审计
缺省值为 0。
SP_SET_ENABLE_AUDIT (1);
注意
审计开关必须由具有数据库审计员权限的管理员进行设置,DBA权限是开不了的。
2、查看审计开关状态
SELECT PARA_NAME,PARA_VALUE FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';
3、查看审计设置信息
SELECT * FROM SYSAUDIT;
4、查看语句序列审计设置信息
SELECT * FROM SYSAUDITSQLSEQ;
5、查看审计详细记录
SELECT * FROM V$AUDITRECORDS;
SYSAUDITOR.V$AUDITRECORDS结构
列 | 数据类型 | 说明 |
---|---|---|
USERID | INTEGER | 用户 ID |
USERNAME | VARCHAR(128) | 用户名 |
ROLEID | INTEGER | 角色 ID。 没有具体角色的用户和 SQL 序列审计,没用角色信息。 |
ROLENAME | VARCHAR(128) | 角色名。 没有具体角色的用户和 SQL 序列审计,没用角色信息。 |
IP | VARCHAR(25) | IP 地址 |
SCHID | INTEGER | 模式 ID |
SCHNAME | VARCHAR(128) | 模式名 |
OBJID | INTEGER | 对象 ID |
OBJNAME | VARCHAR(128) | 对象名 |
OPERATION | VARCHAR(128) | 操作类型名 |
SUCC_FLAG | CHAR(1) | 成功标记 |
SQL_TEXT | VARCHAR(8188) | SQL 文本 |
DESCRIPTION | VARCHAR(8188) | 描述信息 |
OPTIME | DATETIME | 操作时间 |
MAC | VARCHAR(25) | 操作对应的 MAC 地址 |
SEQNO | TINYINT | DMDSC 环境下表示生成审计记录的节点号,非 DMDSC 环境下始终 0 |
BIND_INFO | VARCHAR(8188) | 绑定参数具体值,如果绑定参数是复杂类型,仅记录类型名,不记录具体值 |
6、审计相关函数
名称 | 用途 | 参数说明 |
---|---|---|
SP_SET_ENABLE_AUDIT | 打开/关闭审计开关 | |
SP_AUDIT_STMT/SP_NOAUDIT_STMT | 设置/取消语句级审计 | |
SP_AUDIT_OBJECT | 设置对象级审计 | |
SP_AUDIT_SQLSEQ_START SP_AUDIT_SQLSEQ_ADD SP_AUDIT_SQLSEQ_END | 设置语句序列审计 | |
SP_AUDIT_SQLSEQ_DEL | 取消语句序列审计 | |
SP_DROP_AUDIT_FILE | 删除指定时间点之前的审计文件,但是不会删除 DM 当前正在使用的审计文件。 | TIME_STR :指定的时间字符串TYPE :审计文件类型,0 表示删除普通审计文件,1 表示删除实时审计文件 |
SP_SWITCH_AUDIT_FILE | 切换是指生成一个新的审计文件,并将新生成的审计信息存储在新生成的审计文件中。一般用在审计文件被删除无法存储审计信息,或任何需要生成新审计文件的情况下。 | AUDIT_SWITCH :切换开关值,取值 1 或 2。1 表示切换普通审计文件;2 表示同时切换普通和实时审计文件。对于 DMDSC 环境仅切换当前节点审计文件。 |
SF_GET_AUDIT_TYPENAME | 表SYSAUDIT.TYPE 值的意义描述 | TYPE : 审计类型,对应 SYSAUDIT 中 TYPE 字段值 |
SF_GET_AUDIT_LEVELNAME | 表SYSAUDIT.LEVEL 值的意义描述 | LEVEL : 审计级别,对应 SYSAUDIT 中 LEVEL 字段值 |
SF_GET_AUDIT_WHENEVERNAME | 表SYSAUDIT.WHENEVER 值的意义描述 | WHENEVER :审计记录生成时机,对应 SYSAUDIT 中 WHENEVER 字段值 |
-- 指定删除 2015-12-6 16:30:00 以前的普通审计文件
SP_DROP_AUDIT_FILE('2015-12-6 16:30:00',0);
达梦社区:https://eco.dameng.com