针对Oracle的审计方案
2018-01-18 10:01 AlfredZhao 阅读(306
主题:针对Oracle的审计方案
数据库环境:Oracle 11g
数据库审计需求:
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$的介绍可参考之前我总结过的文章:
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$'
AND OWNER = 'SYS';
--更改AUD$表的表空间为其他表空间
BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
AUDIT_TRAIL_LOCATION_VALUE => '&AUD_TBS_NAME');
END;
/
更多细节可参考之前我总结过的一则案例:
4.需要清理历史审计数据的方案
需要清理历史审计数据的方案:
--截断占用空间最大的AUD$表(需要和DBA确认后操作)
truncate table AUD$;
截断之前可以考虑备份一下审计数据:
Oracle导出sys用户下的系统表aud$:
exp system/oracle file=aud.dmp log=aud.log tables=sys.aud$
实际这个exp导出在测试环境遇到问题,不过最终解决了,具体细节可以参考:
分类:
oracle
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?