zoukankan      html  css  js  c++  java
  • Table AUD$ 以及oracle 审计策略讨论

     #######sample

     http://blog.itpub.net/26937943/viewspace-1097999/ 

    1.启用数据库审计
    SQL> alter system set audit_trail=db scope=spfile;
    2.审计结果保存在哪里
      1)保存在数据库中(sys.aud$这个基表)
        如果把audit_trail=xml,也会记录在audit_file_dest指定的目录中,xml文件格式保存,查看v$xml_audit_trail视图
      2)保存在操作系统日志文件中
         a.如果是windows系统,保存在事件查看器
         b.如果是linux系统,由参数audit_file_dest指定的目录

    SQL> show parameter audit

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    audit_file_dest                      string      C:ORACLEPRODUCT10.2.0ADMIN
                                                     ORCLADUMP
    audit_sys_operations                 boolean     FALSE
    audit_trail                          string      DB


    3.查看audit_trail这个参数的有效值有哪些
    SQL> select * from v$parameter_valid_values where name like '%audit%';

           NUM NAME                    ORDINAL VALUE           ISDEFAULT
    ---------- -------------------- ---------- --------------- ----------
           907 audit_trail                   1 DB              FALSE
           907 audit_trail                   2 OS              FALSE
           907 audit_trail                   3 NONE            FALSE
           907 audit_trail                   4 TRUE            FALSE
           907 audit_trail                   5 FALSE           FALSE
           907 audit_trail                   6 DB_EXTENDED     FALSE
           907 audit_trail                   7 XML             FALSE
           907 audit_trail                   8 EXTENDED        FALSE
    4.审计类型
     4.1标准审计
      a.权限审计(系统权限)
       查看有哪些权限审计-->dba_priv_audit_opts
       SQL> select * from dba_priv_audit_opts;  --没有记录

        no rows selected
        审计scott用户后再查看
    SQL> audit create session by scott;  --审计scott用户

    Audit succeeded.

    SQL> select * from dba_priv_audit_opts;

    USER_NAME                      PROXY_NAME                     PRIVILEGE                                SUCCESS    FAILURE
    ------------------------------ ------------------------------ ---------------------------------------- ---------- ----------
    SCOTT                                                         CREATE SESSION                           BY ACCESS  BY ACCESS
    默认成功或失败都审计.
    scott用户成功登录
    C:Documents and SettingsAdministrator>sqlplus scott/tiger

    SQL*Plus: Release 10.2.0.1.0 - Production on Sun Mar 2 10:44:38 2014

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.


    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options

    SQL>
    查看审计结果
    SQL> select username,owner,audit_option,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') from dba_audit_trail;

    USERNAME                       OWNER                          AUDIT_OPTION                             TO_CHAR(TIMESTAMP,'
    ------------------------------ ------------------------------ ---------------------------------------- -------------------
    SCOTT                                                                                                  2014-03-02 10:44:39
    scott登录失败也会记录
    C:Documents and SettingsAdministrator>sqlplus scott/tigeer

    SQL*Plus: Release 10.2.0.1.0 - Production on Sun Mar 2 10:47:00 2014

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.

    ERROR:
    ORA-01017: invalid username/password; logon denied
    SQL> select username,owner,audit_option,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') from dba_audit_trail;

    USERNAME                       OWNER                          AUDIT_OPTION                             TO_CHAR(TIMESTAMP,'
    ------------------------------ ------------------------------ ---------------------------------------- -------------------
    SCOTT                          SCOTT                                                                   2014-01-19 18:13:47
    SCOTT                                                                                                  2014-03-02 10:44:39
    SCOTT                                                                                                  2014-03-02 10:47:00
    SQL> noaudit create session by scott;   --取消审计

    Noaudit succeeded.
      2)只审计不成功的情况
      SQL> audit create session by scott whenever not successful;

    Audit succeeded.

    SQL> select * from dba_priv_audit_opts;

    USER_NAME                      PROXY_NAME                     PRIVILEGE                                SUCCESS    FAILURE
    ------------------------------ ------------------------------ ---------------------------------------- ---------- ----------
    SCOTT                                                         CREATE SESSION                           NOT SET    BY ACCESS
      b.对象审计
    SQL> audit select on scott.t_3;

    Audit succeeded.
    SQL> col owner for a5
    SQL> col object_name for a10
    SQL> col object_type for a10
    SQL> select * from dba_obj_audit_opts;

    OWNER OBJECT_NAM OBJECT_TYP ALT   AUD   COM   DEL   GRA   IND   INS   LOC   REN   SEL   UPD   REF EXE   CRE   REA   WRI   FBK
    ----- ---------- ---------- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- --- ----- ----- ----- ----- -----
    SCOTT T_3        TABLE      -/-   -/-   -/-   -/-   -/-   -/-   -/-   -/-   -/-   S/S   -/-   -/- -/-   -/-   -/-   -/-   -/-

    S(session): 同一个会话查询多次只有一条审计记录,默认是by session;
    SQL> noaudit select on scott.t_3;   --取消审计
    Noaudit succeeded.
    SQL> audit select on scott.t_3 by access;

    Audit succeeded.

    SQL> select * from dba_obj_audit_opts;

    OWNER OBJECT_NAM OBJECT_TYP ALT   AUD   COM   DEL   GRA   IND   INS   LOC   REN   SEL   UPD   REF EXE   CRE   REA   WRI   FBK
    ----- ---------- ---------- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- --- ----- ----- ----- ----- -----
    SCOTT T_3        TABLE      -/-   -/-   -/-   -/-   -/-   -/-   -/-   -/-   -/-   A/A   -/-   -/- -/-   -/-   -/-   -/-   -/-

    A(access): 在同一个会话,执行同一个select语句多次会记录多条审计结果,执行两次select就会有两条审计记录.
    c.语句审计
     SQL> select * from dba_stmt_audit_opts;
    4.2强制审计
      不管数据库审计是否启用一些数据库相关的行为总会被写到操作系统日志中,以下操作会被记录:
        a.启动实例
        b.关闭实例
        c.管理员权限连接数据库
     4.3细粒度审计

    附录:查看策略

    select * from dba_priv_audit_opts;

    ###以下审计策略仅仅针对dbmgr 开启 create session 审计,(create session 有一行)。usernaem 为空,就是对所有用户进行审计,username 有值,就是仅仅对该用户进行审计。

    1 ALTER DATABASE BY ACCESS BY ACCESS
    2 CREATE PUBLIC DATABASE LINK BY ACCESS BY ACCESS
    3 DROP ANY TABLE BY ACCESS BY ACCESS
    4 ALTER ANY TABLE BY ACCESS BY ACCESS
    5 CREATE ANY TABLE BY ACCESS BY ACCESS
    6 DROP USER BY ACCESS BY ACCESS
    7 ALTER USER BY ACCESS BY ACCESS
    8 CREATE USER BY ACCESS BY ACCESS
    9 DBMGR CREATE SESSION BY ACCESS BY ACCESS   《=

    ---->

    开启对所有用户成功登陆的create session 审计

    AUDIT CREATE SESSION WHENEVER SUCCESSFUL;
    9 DBMGR CREATE SESSION BY ACCESS BY ACCESS
    10 CREATE SESSION BY ACCESS NOT SET                      《-

    关闭对所有用户成功登陆的create session 审计

    NOAUDIT CREATE SESSION WHENEVER SUCCESSFUL;
    9 DBMGR CREATE SESSION BY ACCESS BY ACCESS

    ---->

    开启对所有用户失败登陆的create session 审计

      audit session whenever not successful;

    9 DBMGR CREATE SESSION BY ACCESS BY ACCESS
    10 CREATE SESSION NOT SET BY ACCESS                             《-

    关闭对所有用户失败登陆的create session 审计

     noaudit session whenever not successful;

    9 DBMGR CREATE SESSION BY ACCESS BY ACCESS

    ###以下审计策略仅仅针对dbmgr /和所有用户开启 create session 审计,(create session 只有二 行)。usernaem 为空,就是对所有用户进行审计,username 有值,就是仅仅对该用户进行审计。

    15 DROP ANY TABLE BY ACCESS BY ACCESS
    16 ALTER ANY TABLE BY ACCESS BY ACCESS
    17 CREATE ANY TABLE BY ACCESS BY ACCESS
    18 DROP USER BY ACCESS BY ACCESS
    19 ALTER USER BY ACCESS BY ACCESS
    20 CREATE USER BY ACCESS BY ACCESS
    21 DBMGR CREATE SESSION BY ACCESS BY ACCESS          《=
    22 CREATE SESSION BY ACCESS BY ACCESS                        《=
    23 AUDIT SYSTEM BY ACCESS BY ACCESS
    24 ALTER SYSTEM BY ACCESS BY ACCESS

    ####

    查看实际数据,也可以验证以上结论
    select distinct(username) from sys.dba_audit_session

    转到底部转到底部

     
     
     
     
     
     
     

     

    PURPOSE

    This document explains how to purge, truncate, or delete rows from the audit trail table SYS.AUD$. 


    Starting with Oracle 11gR2 it is possible to use package DBMS_AUDIT_MGMT for this. More information about this package can be read in Note 731908.1 -New Feature DBMS_AUDIT_MGMT To Manage And Purge Audit Information.

    SCOPE

    This document is intended for DBA's or Oracle Support Analysts.

    DETAILS

    To delete rows from the database audit trail table, an appropriate privilege is required. You must either be the user SYS, or a user with DELETE ANY TABLE system privilege, or a user to whom SYS has granted the object privilege DELETE on SYS.AUD$.

    1) To purge all the audit records from the audit trail run this command:

    SQL> truncate table aud$;



    2)To delete rows from the audit trail related to a particular audited object run this command:

    SQL> DELETE FROM sys.aud$ WHERE obj$name='<object_name>';

    Note: The above operations must be performed as an user who is granted the delete_catalog_role role or by SYS. If OLS is being installed then the delete_catalog_role might lose the delete privilege on table aud$ because of bug 9697811 which is fixed by patchset 11.2.0.2. To remedy this problem one can run the following statement as SYS: 

    grant delete on sys.aud$ to delete_catalog_role;



    3) If the audit trail information must be archived, copy the relevant rows to another table, then truncate the aud$ table and finally you can optionally export the backup table(backup_aud$) to an OS file and then drop the backup table : 


    SQL> CREATE TABLE backup_aud$ AS SELECT * from sys.aud$;



    SQL> truncate table aud$;



     export table backup_aud$:

    [oracle@seclin4 ~]$ exp file=aud_backup.dmp tables=backup_aud$

    Export: Release 11.2.0.3.0 - Production on Tue Jun 25 10:53:06 2013

    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.


    Username: / as sysdba

    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Partitioning, Oracle Label Security, OLAP, Data Mining
    and Real Application Testing options
    Export done in US7ASCII character set and AL16UTF16 NCHAR character set
    server uses AL32UTF8 character set (possible charset conversion)

    About to export specified tables via Conventional Path ...
    . . exporting table                    BACKUP_AUD$       1722 rows exported
    Export terminated successfully without warnings.

     




    SQL> drop table backup_aud$;




    4) If your intention is to reduce the space occupied by the aud$ table you can perform the actions from 3) and at the end reload the data back to aud$: 


    SQL>insert into aud$ select * from backup_aud$;
    SQL>commit;




    CAUTION: SYS.AUD$ is the only SYS object that should ever be directly modified




    Note: The DELETE ANY TABLE privilege only applies to SYS objects if O7_DICTIONARY_ACCESSIBILITY=TRUE






  • 相关阅读:
    Log4Net 生成多个文件、文件名累加解决方法
    HTML name、id、class 的区别
    C# 基础(一) 访问修饰符、ref与out、标志枚举等等
    HTML iframe 和 frameset 的区别
    未在本地计算机上注册"OraOLEDB.Oracle"提供程序
    HTML 页面源代码布局介绍
    HTML 基础控件介绍
    图的BFS与DFS的应用
    迷途指针,从百度百科上摘抄的,语言很幽默
    详解C中volatile关键字
  • 原文地址:https://www.cnblogs.com/feiyun8616/p/8993809.html
Copyright © 2011-2022 走看看