网站首页 > 技术文章 正文
数据库环境:Oracle 11g
数据库审计需求:
- 1.需要对连接数据库的行为进行审计
- 2.需要对核心表的DML操作进行审计
- 3.需要迁移审计数据到指定表空间
- 4.需要清理历史审计数据的方案
1.需要对连接数据库的行为进行审计
需要对连接数据库的行为进行审计,其中包含例如审计那些错误密码登录等失败的登录行为。
主要关注查询的表就是aud$
。
比如查询最近一天使用错误密码登录的行为;
--aud$
select sessionid, userid, userhost, comment$text, spare1, ntimestamp#
from aud$
where returncode = 1017
and ntimestamp# > sysdate - 1;
--dba_audit_trail
select *
from dba_audit_trail
where returncode = 1017
and timestamp > sysdate - 1;
更多关于aud$的介绍可参考之前我总结过的文章:
- aud$定位错误用户密码登陆数据库的具体信息
2.需要对核心表的DML操作进行审计
需要对核心表的DML操作进行审计,首先强调下这是不推荐进行审计的,原因是这类审计极少客户会用,它不但会使得核心表的操作性能本身受到一定影响,还有可能触发相关bug。 假如jingyu用户下的T1表非常重要,需要对DML操作进行审计:
SYS@jyzhao1 >AUDIT DELETE,UPDATE,INSERT ON JINGYU.T1;
Audit succeeded.
查询审计结果(列较多,建议图形化工具查看):
SQL> select * from dba_audit_trail order by timestamp;
可以从结果看到所有DML操作都会对应一条action_name为“SESSION REC”的值。
3.需要迁移审计数据到指定表空间
创建新的表空间,比如TBS_AUDIT,然后迁移审计数据从默认的SYSTEM到TBS_AUDIT表空间; 核心步骤如下:
--查看当前AUD$对象所在的表空间
SELECT OWNER, TABLE_NAME, TABLESPACE_NAME
FROM DBA_TABLES
WHERE TABLE_NAME = 'AUD