zoukankan      html  css  js  c++  java
  • 针对Oracle的审计方案

    2018-01-18 10:01 AlfredZhao 阅读(435) 评论(0) 编辑 收藏

    主题:针对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导出在测试环境遇到问题,不过最终解决了,具体细节可以参考:

  • 相关阅读:
    写优先
    生产者消费者信号量的个人理解
    向上过滤
    操作系统之进程调度算法笔记
    idea学习
    计算机网络之网络层
    rest-framework routers
    rest framework ViewSet
    rest framework Genericview
    rest framework Views
  • 原文地址:https://www.cnblogs.com/lcword/p/11779245.html
Copyright © 2011-2022 走看看