zoukankan      html  css  js  c++  java
  • AUDIT审计的一些使用


    AUDIT审计的一些使用
    原创 Linux操作系统 作者:westzq1984 时间:2012-11-15 14:34:22 2772 0
    11g开始默认开启了审计功能,配置选项为DB,同时对权限,登录进行了审计

    审计其实是个很有用的功能,如果不打算使用审计,也可以考虑开启审计,但是删除其定义的规则即可:
    noaduit all;
    noaduit all statements;
    noaudit all privileges;
    noaudit EXEMPT ACCESS POLICY;

    对于审计存放的位置,建议设置为XML,EXTENDED。这样增加了对SQL语句的捕获,并且存放在操作系统上,更利于清理
    默认审计不会取AUDIT SYSDBA登录的用户,除非设置AUDIT_SYS_OPERATIONS为TRUE。所以,在决定启用审计的系统中,要严格控制SYSDBA权限的用户
    在启用审计的系统中,严格控制DBA角色的分配,否则,审计数据可能会被篡改

    审计的维护:

    迁移AUD$和FGA_LOG$表,直接MOVE的话,配置表中的数据不会更改。但是影响不大
    BEGIN
     DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(
      AUDIT_TRAIL_TYPE            => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
      AUDIT_TRAIL_LOCATION_VALUE  => 'USERS');
    END;
    /

    清空所有审计数据
    BEGIN
      DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
          AUDIT_TRAIL_TYPE        => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FILES,
          USE_LAST_ARCH_TIMESTAMP => FALSE);
    END;
    /
    TRUNCATE TABLE SYS.AUD$;

    11g可以创建自动清理审计数据的JOB
    其可以根据归档时间进行清理
    BEGIN  -- 清理DB审计数据必须初始化。
     DBMS_AUDIT_MGMT.INIT_CLEANUP(
      AUDIT_TRAIL_TYPE            => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
      DEFAULT_CLEANUP_INTERVAL    => 12);   -- 定义调度清理工作的频率。其决定DB如何清理审计数据,但和实际运行频率无关
    END;
    /

    SELECT * FROM DBA_AUDIT_MGMT_CONFIG_PARAMS

    BEGIN  -- 定义归档审计数据的时间戳
      DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
       AUDIT_TRAIL_TYPE     =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
       LAST_ARCHIVE_TIME    =>  SYSDATE);
      DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
       AUDIT_TRAIL_TYPE     =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
       LAST_ARCHIVE_TIME    =>  SYSDATE);
      DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
       AUDIT_TRAIL_TYPE     =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML,
       LAST_ARCHIVE_TIME    =>  SYSDATE);     
    END;
    /

    SELECT * FROM DBA_AUDIT_MGMT_LAST_ARCH_TS;


    BEGIN
      DBMS_AUDIT_MGMT.CREATE_PURGE_JOB (
       AUDIT_TRAIL_TYPE            => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
       AUDIT_TRAIL_PURGE_INTERVAL  => 24,
       AUDIT_TRAIL_PURGE_NAME      => 'Audit_Trail_PJ',
       USE_LAST_ARCH_TIMESTAMP     => TRUE );
    END;
    /

    SELECT * FROM dba_scheduler_jobs



    审计的一些用法:

    审计登录
    audit session;
    本质是审计CREATE SESSION权限的使用
    可以获得:登录时间,用户名,主机,主机用户名,主机上的进程号
    SELECT * FROM DBA_COMMON_AUDIT_TRAIL
    WHERE (STATEMENT_TYPE = 'LOGON'   -- 普通登录
    OR OS_PRIVILEGE = 'SYSDBA')       -- SYSDBA登录
    AND RETURNCODE > 0                 -- 失败的登录

    审计DDL
    audit ALTER SYSTEM,CLUSTER,CONTEXT,DATABASE LINK,DIMENSION,DIRECTORY,INDEX,MATERIALIZED VIEW,OUTLINE,PROCEDURE ,PROFILE,PUBLIC DATABASE LINK,PUBLIC SYNONYM,ROLE,ROLLBACK SEGMENT,SEQUENCE,SYNONYM,SYSTEM AUDIT,SYSTEM GRANT,TABLE,TABLESPACE,TRIGGER,TYPE,USER,VIEW,ALTER SEQUENCE,ALTER TABLE,COMMENT TABLE,GRANT DIRECTORY,GRANT PROCEDURE,GRANT SEQUENCE,GRANT TABLE,GRANT TYPE
    审计功能没有提供一种可以直接审计全部DDL的方法
    审计指定对象上的DDL:
      audit ALTER,AUDIT,COMMENT,GRANT,INDEX,RENAME on / default;
      audit AUDIT,COMMENT,GRANT,RENAME on / default

    审计对象上的所有操作,包括DML操作
    audit all on ;

    审计由于对象不存在而报错的语句
    audit not exists;
    SELECT * FROM dba_common_audit_trail WHERE returncode=942

    审计报错的语句
    audit all statements whenever not successful; -- 审计DDL语句错误,以及PK冲突等
    audit all on whenever not successful; -- 审计DML语句错误

    如果撤销用户的DBA角色,需要分配给用户那些必须的系统权限
    audit all privileges by ;
    SELECT DISTINCT priv_used FROM dba_common_audit_trail WHERE db_user='’

    ALL与ALL STATEMENTS的区别
    ALL审计特定的一类SQL,其不包含DML,ALTER TABLE等
    ALL STATEMENTS审计用户发出的所有SQL,不包含递归语句,同时,解析失败的语句也不会记录(DDL语句在执行时报错,DML语句在解析时报错)

  • 相关阅读:
    iOS开发---iPhone SDK 包含哪些东西?
    COS-8文件系统
    COS-7设备管理
    COS-6主存管理
    COS-5资源分配与调度
    COS-4进程及进程管理
    饭卡管理系统学生E-R图
    COS-3OS的用户接口
    COS-2OS结构和硬件支持
    计算机操作系统-1绪论
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/13051122.html
Copyright © 2011-2022 走看看