【Security】传统审计(Traditional Auditing)

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 【Security】传统审计(Traditional Auditing),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

概述

传统的审计功能从大类别上又可以分为以下4类:

・操作系统审计(OS Auditing)即强制审计:

针对默SYSDBA/SYSOPER的数据连接,数据库实例启动和关闭等操作,无论审计是否有效,都会把记录保存在OS文件中

・标准审计(Standard Auditing):

包括有关权限、模式、对象和语句等操作的审计。

・DBA审计:

对SYS用户或持有SYSDBA/SYSOPER权限的用户的操作进行审计。

・细粒度审计(Fine Grained Auditing以后简称FGA):

(通过 Oracle9i 引入)可以理解为“基于政策的审计”,通过创建需要的条件来定制审计内容。

操作系统审计(OS Auditing)

OS审计是一种强制审计,即无论审计是否有效以及如何设定,都会进行审计。

OS审计内容

审计的内容主要包括对默SYSDBA/SYSOPER的数据连接,数据库实例启动和关闭操作。

OS审计结果

DBA审计结果不保存在数据库中,而记录在OS文件中。

UNIX:输出的审计结果一般保存在audit_file_dest定义的路径下的OS文件( *.aud ) 中,如:

    $ORACLE_BASE/admin/ORACLE_SID/adump/ora_*.aud 或
    $ORACLE_HOME/rdbms/ora_*.aud

Windows:事件查看器(event view)的日志中。

OS审计的输出例如下(UNIX):

$ more ora11204_ora_19506_20160506115449755867143795.aud
Audit file /u01/app/oracle/admin/ora11204/adump/ora11204_ora_19506_20160506115449755867143795.aud
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1
System name:    Linux
Node name:      db11204
Release:        2.6.18-308.el5
Version:        #1 SMP Fri Jan 27 17:17:51 EST 2012
Machine:        x86_64
Instance name: ora11204
Redo thread mounted by this instance: 1
Oracle process number: 37
Unix process pid: 19506, image: oracle@db11204 (TNS V1-V3)

Fri May  6 11:54:49 2016 +09:00
LENGTH : '160'
ACTION :[7] 'CONNECT'★
DATABASE USER:[1] '/'
PRIVILEGE :[6] 'SYSDBA'
CLIENT USER:[6] 'oracle'
CLIENT TERMINAL:[5] 'pts/1'
STATUS:[1] '0'
DBID:[10] '1382856929'

Fri May  6 12:01:08 2016 +09:00
LENGTH : '161'
ACTION :[8] 'SHUTDOWN'★
DATABASE USER:[1] '/'
PRIVILEGE :[6] 'SYSDBA'
CLIENT USER:[6] 'oracle'
CLIENT TERMINAL:[5] 'pts/1'
STATUS:[1] '0'
DBID:[10] '1382856929'

标准审计

Oracle 数据库在其标准版和企业版数据库中均提供了强健的审计支持。审计记录包括有关已审计的操作、执行操作的用户以及操作的时间和日期的信息。审计记录可以存储在数据库审计线索中或操作系统上的文件中。标准审计包括有关权限、模式、对象和语句的操作。

标准审计内容

标准审计内容会根据标准审计级别设置不同而审计相应的内容。
标准审计级别如下图主要可以分为SQL语句、权限、对象以及网络4种级别。

标准审计的级别和作用

标准审计的级别和作用.png)

语句审计(Statement)   :审计针对某种类型的数据库对象的操作语句,如审计某种DDL、DML文等。

权限审计(Privilege)   :审计使用某种系统权限的语句,如审计Create table权限等

对象审计(Object)      :审计针对某个数据库对象的操作语句,如审计SELECT ON emp等

网络审计(Network)     :审计某些网络协议错误的发生。可审计的错误包括TNS-02507、TNS-12648、TNS-12649、TNS-12650

标准审计的设置方法

你可以通过AUDIT /NOAUDIT语法来配置标准审计,其主要语法如下:

AUDIT语法(11.2)

AUDIT
  { audit_operation_clause [ auditing_by_clause | IN SESSION CURRENT ]
  | audit_schema_object_clause
  | NETWORK
  } [ BY { SESSION | ACCESS } ]
    [ WHENEVER [ NOT ] SUCCESSFUL ]
;

audit_operation_clause:
    { { sql_statement_shortcut
      | ALL
      | ALL STATEMENTS
      } [, { sql_statement_shortcut
           | ALL
           }
        ]
    | { system_privilege
      | ALL PRIVILEGES
      } [, { system_privilege
           | ALL PRIVILEGES
           }
        ]
    }

auditing_by_clause :
    BY user [, user ]...

audit_schema_object_clause:
    { sql_operation [, object_option]
    | ALL
    } auditing_on_clause

auditing_on_clause:
    ON { [ schema. ] object
       | DIRECTORY directory_name
       | MINING MODEL [ schema. ] model
       | DEFAULT
       }

NOAUDIT语法(11.2)

NOAUDIT 
   { audit_operation_clause [ auditing_by_clause ]
   | audit_schema_object_clause
   | NETWORK
   }
   [ WHENEVER [ NOT ] SUCCESSFUL ] ;

audit_operation_clause :
    { { sql_statement_shortcut
      | ALL
      | ALL STATEMENTS
      } [, { sql_statement_shortcut
           | ALL
           }
        ]
    | { system_privilege
      | ALL PRIVILEGES
      } [, { system_privilege
           | ALL PRIVILEGES
           }
        ]
    }

auditing_by_clause:
    BY user [, user ]...

audit_schema_object_clause :
    { sql_operation [, object_option]
    | ALL
    } auditing_on_clause

auditing_on_clause :
    ON { [ schema. ] object
       | DIRECTORY directory_name
       | MINING MODEL [ schema. ] model
       | DEFAULT
       }

审计相关的初期化参数

数据库中和审计相关的初期化参数主要包括以下内容:

SQL> show parameter audit

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/ora11204/adump
audit_sys_operations                 boolean     FALSE
audit_syslog_level                   string
audit_trail                          string      none

各参数主要意义:

AUDIT_TRAIL

AUDIT_TRAIL = { none | os | db [, extended] | xml [, extended] }

用于启用和无效审计功能,同时可以指定审计的保存。
可指定的值和意义如下:

NONE                  : 审计无效 (默认)

OS                    : 启用数据库审计并将所有审计记录保存在操作系统文件。

DB                    : 启用数据库审计并将所有审计记录保存在数据库审计表 (SYS.AUD$) 中(始终写入到操作系统审计文件的记录除外)。

DB, EXTENDED          : 完成 AUDIT_TRAIL=DB 的全部操作并记录SQL 绑定变量和 SQL 文本,保存在数据库审计表 (SYS.AUD$) 中。

XML                   : 启用数据库审计并将所有审计记录以 XML 格式保存在操作系统文件。

XML, EXTENDED:完成 AUDIT_TRAIL=XML 的全部操作,并记录SQL 绑定变量和 SQL 文本。

AUDIT_FILE_DEST

AUDIT_FILE_DEST用于当AUDIT_TRAIL指定为OS、XML、或者XML, EXTENDED时即需要向OS路径保存审计记录时的路径。AUDIT_FILE_DEST指定的路径也用于强制审计的输出路径。
其默认值为:

    $ORACLE_BASE/admin/ORACLE_SID/adump 或者$ORACLE_HOME/rdbms/audit.

AUDIT_SYS_OPERATIONS

AUDIT_SYS_OPERATIONS用于控制是否针对SYSDBA或SYSOPER权限登录的用户操作进行审计,其审计记录被保存在OS审计记录中。
其默认值为:False (不进行SYSDBA或SYSOPER权限登录的用户操作进行审计)

AUDIT_SYSLOG_LEVEL

AUDIT_SYSLOG_LEVEL用于调用操作系统SYSLOG工具,把审计日志写入OS的监视日志中。以防止拥有SYS或DBA权限的用户删除审计日志。

标准审计的设定例

下面我们将通过一些例子,介绍各种审计在实际中的使用方法。

使标准审计有效。

要使标准审计有效,需要设置audit_trail;并且审计相关的设定变更,都需要重启数据库。
本例中设置audit_trail为DB,即将审计记录保存在数据库审计表 中。

SQL> conn / as sysdba
Connected.

SQL> alter system set audit_trail=DB scope=spfile;

System altered.

SQL> alter system set audit_sys_operations =false scope=spfile;

System altered.

SQL> shutdown abort
ORACLE instance shut down.
SQL> 
SQL> startup
ORACLE instance started.

Total System Global Area  838860800 bytes
Fixed Size                  2929936 bytes
Variable Size             729811696 bytes
Database Buffers          100663296 bytes
Redo Buffers                5455872 bytes
Database mounted.
Database opened.
SQL> show parameter audit

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/ora12102/adump
audit_sys_operations                 boolean     FALSE
audit_syslog_level                   string
audit_trail                          string      DB
unified_audit_sga_queue_size         integer     1048576

会话审计(Session Audit)

--有效
SQL> audit session;
Audit succeeded.

--无效
SQL> noaudit session;
Noaudit succeeded.

对象审计(Object Audit )

--审计所有对scott.emp表的Select操作
SQL> audit select on scott.emp ;
Audit succeeded.
--无效审计
SQL> noaudit select on scott.emp;
Noaudit succeeded.

权限审计(Privilege Audit )

--审计用户scott使用 alter table权限的操作
SQL> audit alter table by scott;
Audit succeeded.
--无效审计
SQL> noaudit alter table by scott;
Noaudit succeeded.

语句审计(Statement Audit )

--审计所有更新表的SQL文
SQL> audit update table ;
Audit succeeded.
--无效审计
SQL> noaudit update table ;
Noaudit succeeded.

网络审计(network Audit )

--有效网络审计
SQL> audit network by access;
Audit succeeded.
--无效审计
SQL> noaudit network;
Noaudit succeeded.

标准审计的确认

可以通过以下监视视图,进行查看数据库中都设定了的审计:

DBA_STMT_AUDIT_OPTS:查看语句审计的结果
DBA_PRIV_AUDIT_OPTS:查看权限审计的结果
DBA_OBJ_AUDIT_OPTS :查看对象审计的结果

例如:查看某个对象设定的审计。

--设定对象scott.emp上的审计
SQL> audit select on scott.emp;
Audit succeeded.

--查看对象审计
SQL> select * from DBA_OBJ_AUDIT_OPTS;
OWNER      OBJECT_NAME   OBJECT_TYPE   ALT   AUD   COM    DEL   GRA   IND  INS  LOC   REN   SEL   UPD   REF EXE   CRE   REA   WRI  FBK
---------- ------------- ------------- ----- ----- ------ ----- ----- ---- ---- ----- ----- ----- ----- --- ----- ----- ----- ---- -----
SCOTT      EMP           TABLE         -/-   -/-   -/-    -/-   -/-   -/-  -/-  -/-   -/-   S/S   -/-   -/- -/-   -/-   -/-   -/-   -/-

--无效对象scott.emp上的审计
SQL> noaudit select on scott.emp;
Noaudit succeeded.

SQL> select * from DBA_OBJ_AUDIT_OPTS;
no rows selected

※ DBA_OBJ_AUDIT_OPTS内容的意义:

    -/-: no default auditing
    S/-: auditing whenever successful
    -/S: auditing whenever not successful

另外,还有一些有用的视图:

STMT_AUDIT_OPTION_MAP  :用于判断都可以针对语句审计可以设定哪些类型的权限。

SYSTEM_PRIVILEGE_MAP   :用于判断都可以针对权限审计可以设定哪些类型的权限。

ALL_DEF_AUDIT_OPTS      :用于显示当对象被创建时,默认的审计内容。
                        (也可用来判断都可以针对对象设定哪些类型的审计)

TABLE_PRIVILEGE_MAP     :用于判断都可以针对表可以设定哪些类型的权限。

执行例如下:(11.2.0.4)

SQL> select * from STMT_AUDIT_OPTION_MAP; 

   OPTION# NAME                                       PROPERTY
---------- ---------------------------------------- ----------
         3 ALTER SYSTEM                                      0
         4 SYSTEM AUDIT                                      0
...
       350 FLASHBACK ARCHIVE ADMINISTER                      0
       351 EXEMPT REDACTION POLICY                           0

271 rows selected.

版权声明:本文为博主原创文章,转载必须注明出处,本人保留一切相关权力!http://blog.csdn.net/lukeunique

DBA审计

Oracle提供的对SYS用户或持有SYSDBA/SYSOPER权限的用户的操作内容进行审计的功能。

DBA审计内容

DBA审计主要可以审计SYS用户或持有SYSDBA/SYSOPER权限的连接用户的所有操作。
但是对于持有DBA角色的用户的操作不会被审计。

DBA审计设置方法

DBA审计可以通过以下2个参数来控制:

・AUDIT_SYS_OPERATIONS
当AUDIT_SYS_OPERATIONS设为True时,DBA审计有效。默认:FALSE

・AUDIT_FILE_DEST
用于控制DBA审计结果的输出位置。

DBA审计结果

DBA审计结果不保存在数据库中,而记录在OS文件中。

UNIX:输出的审计结果一般保存在audit_file_dest定义的路径下的OS文件( *.aud ) 中,如:

    $ORACLE_BASE/admin/ORACLE_SID/adump/ora_*.aud 或
    $ORACLE_HOME/rdbms/ora_*.aud

Windows:事件查看器(event view)的日志中。

细粒度审计(FGA)

FGA的审计内容

细粒度审计(FGA)功能定制的审计策略,除了可以指定对象(Object)外,还可以追加以下的条件:

1.表或者视图的列
通过指定表或者视图的某个/某些列,来限定审计内容(audit_column)

2.SQL谓语条件
通过指定SQL文的谓语条件(Where句),来限定审计内容(audit_condition)

当某查询或操作语句满足审计策略条件时,FGA功能就根据审计策略的设定内容把相应的审计结果保存到相应地方去:

・SYS.FGA_LOG$表
FGA的审计结果会保存在SYS.FGA_LOG$表中。
可以通过SYS.DBA_FGA_AUDIT_TRAIL视图查看。

・自定义的Event Handler
通过自定义一个Event Handler的Function(自定义处理内容),并作为参数值传递给参数handler_module,来自定义一些输出内容。
(之后的例子中会做简单的介绍)

※当DBMS_FGA.ADD_POLICY的参数audit_trail指定为DBMS_FGA.XML或DBMS_FGA.XML + DBMS_FGA.EXTENDED时,会把FGA的审计结果以XML格式保存在操作系统中。

FGA版本的演变

FGA随着版本的演变也得到了一些功能强化。

9i版本:

・仅能针对Select语句进行FGA审计

10g版本以后:

・可以针对DML语句(INSERT、UPDATE、DELETE、MERGE)进行FGA审计。
・可以支持audit_column定义多个列,并追加了audit_column_opts => DBMS_FGA.ALL_COLUMNS / DBMS_FGA.ANY_COLUMNS 用于控制审计条件在访问任何一个列(Any)、 或者是访问所有列(Any)(All)时被触发。
・支持把SQL Text和SQL 绑定变量写入LOBs中

FGA小提示

细粒度审计(FGA)功能仅在 Enterprise Edition版本上有效。

FGA设置方法

FGA主要通过DBMS_FGA程序包进行设置和相应的维护操作,主要程序方法包括以下内容:

・ADD_POLICY                 --- 设定审计策略
・DROP_POLICY                --- 删除审计策略
・ENABLE_POLICY              --- 使审计策略有效
・DISABLE_POLICY             --- 使审计策略无效

关于设定审计策略方法ADD_POLICY 的详细如下:

Database PL/SQL Packages and Types Reference 11,.2
>ADD_POLICY Procedure

DBMS_FGA.ADD_POLICY(
   object_schema      VARCHAR2, --审计的Schema名
   object_name        VARCHAR2, --审计的对象名
   policy_name        VARCHAR2, --审计策略名
   audit_condition    VARCHAR2, --审计的条件(SQL文的WHERE句)
   audit_column       VARCHAR2, --访问监视的列
   handler_schema     VARCHAR2, --包含Event Handler的Schema,默认为当前Schema
   handler_module     VARCHAR2, --Event Handler的Function、Package名(当符合条件的审计发生时,会执行这个Function)
   enable             BOOLEAN, --TRUE:审计策略有效 
   statement_types    VARCHAR2,--SQL文类型(INSERT、UPDATE、DELETE或SELECT)默认:select
   audit_trail        BINARY_INTEGER IN DEFAULT,--审计输出场所(DB、xml、extended)
   audit_column_opts  BINARY_INTEGER IN DEFAULT);--控制audit_column的条件为Any或all

FGA使用例

1.建立测试用户teacherwhat,并赋予相关的权限。

SQL> CREATE USER teacherwhat IDENTIFIED BY teacherwhat;
User created.

SQL> GRANT CONNECT, RESOURCE TO teacherwhat;
Grant succeeded.

SQL> GRANT EXECUTE ON sys.dbms_fga TO teacherwhat;
Grant succeeded.

SQL> GRANT SELECT ON sys.dba_audit_policies TO teacherwhat;
Grant succeeded.

SQL> GRANT SELECT ON sys.dba_audit_policy_columns TO teacherwhat;
Grant succeeded.

SQL> GRANT SELECT, DELETE ON sys.dba_fga_audit_trail TO teacherwhat;
Grant succeeded.

2.连接测试用户teacherwhat,并建立和指定用于存储自定义的Event Handler审计内容的表
以及Event Handler的Function。

需要注意的是,当定义Event Handler的Function时,必须包含3个参数,
其含义依次为审计对象的Schema名、审计对象名、审计策略名;其他内容可以自定义。

SQL> CONNECT teacherwhat/teacherwhat
Connected.
SQL> CREATE TABLE teacherwhat.event_handler_result(
dbuser     VARCHAR2(20) DEFAULT SYS_CONTEXT('USERENV', 'SESSION_USER'),
osuser     VARCHAR2(20) DEFAULT SYS_CONTEXT('USERENV', 'OS_USER'),
table_name VARCHAR2(20),
timestamp  DATE         DEFAULT SYSDATE,
policy     VARCHAR2(25));
  2    3    4    5    6  
Table created.

SQL> CREATE OR REPLACE PROCEDURE teacherwhat.event_handler_function(
 schema_name VARCHAR2,
 table_name VARCHAR2,
 policy_name VARCHAR2)
 IS
 BEGIN
   INSERT INTO teacherwhat.event_handler_result (table_name, policy)
   VALUES(table_name, policy_name);
 END;
 /  2    3    4    5    6    7    8    9   10  

Procedure created.

在自定义的Event Handler审计内容的表中使用了SYS_CONTEXT,主要用于取得会话中的相关信息。
SYS_CONTEXT详细可参考如下文档:

Database SQL Language Reference 11.2
>SYS_CONTEXT

3.定义FGA策略,指定相关参数。

SQL> BEGIN
DBMS_FGA.ADD_POLICY(
        object_schema => 'scott',
        object_name => 'dept',
        policy_name => 'scott_dept_policy',
        audit_condition => 'deptno = 30',
        audit_column => 'dname',
        handler_schema => 'teacherwhat',
        handler_module => 'event_handler_function',
        enable => TRUE);
END;
/  2    3    4    5    6    7    8    9   10   11   12  

PL/SQL procedure successfully completed.

4.查看定义好的FGA策略,
针对SCOTT.DEPT的DNAME列并且Where条件为deptno = 30的SQL文进行审计:

SQL> select * from DBA_AUDIT_POLICY_COLUMNS ;
OBJECT_SCHEMA    OBJECT_NAME     POLICY_NAME           POLICY_COLUMN
---------------- --------------- --------------------- ---------------
SCOTT            DEPT            SCOTT_DEPT_POLICY     DNAME

SQL> col POLICY_TEXT format a20
SQL> select * from DBA_AUDIT_POLICIES;
OBJECT_SCHEMA    OBJECT_NAME   POLICY_OWNER    POLICY_NAME         POLICY_TEXT   POLICY_COLUMN   PF_SCHEMA     PF_PACKAGE            PF_FUNCTION    ENA SEL INS UPD DEL AUDIT_TRAIL  POLICY_COLU
---------------- ------------- --------------- ------------------- ------------- --------------- ------------- ------------------- -------------- --- --- --- --- --- ------------ -----------
SCOTT            DEPT          TEACHERWHAT     SCOTT_DEPT_POLICY   deptno = 30   DNAME           TEACHERWHAT             EVENT_HANDLER_FUNCTION   YES YES NO  NO  NO  DB+EXTENDED  ANY_COLUMNS

5.测试开始前,查看相关的审计结果为空:

SQL> SELECT * FROM sys.dba_fga_audit_trail;
no rows selected

SQL> SELECT * FROM teacherwhat.event_handler_result;
no rows selected

6.1 用scott用户连接,查询只满足Where条件的SQL文(不访问列audit_column列)

SQL>  conn scott/tiger
SQL>  SELECT deptno FROM scott.dept WHERE deptno = 30;

    DEPTNO
----------
        30

6.2 查看相关的审计结果记录

SQL> col SQL_TEXT format a40
SQL> col OS_USER format a20
SQL> col OBJECT_NAME format a20
SQL> col CLIENT_ID format a20
SQL> SELECT SESSION_ID,TIMESTAMP,DB_USER,OS_USER,OBJECT_SCHEMA,CLIENT_ID,POLICY_NAME,SQL_TEXT FROM sys.dba_fga_audit_trail;

no rows selected

SQL> SELECT * FROM teacherwhat.event_handler_result;
no rows selected

无相关审计结果记录

7.1 用scott用户连接,满足Where条件的SQL文并且访问列audit_column列DNAME。

SQL> SELECT deptno,DNAME FROM scott.dept WHERE deptno = 30;

    DEPTNO DNAME
---------- --------------
        30 SALES

7.2 查看相关的审计结果记录

SQL> SELECT SESSION_ID,TIMESTAMP,DB_USER,OS_USER,OBJECT_SCHEMA,CLIENT_ID,POLICY_NAME,SQL_TEXT FROM sys.dba_fga_audit_trail;
SESSION_ID TIMESTAMP DB_USER                        OS_USER              OBJECT_SCHEMA                  CLIENT_ID            POLICY_NAME                    SQL_TEXT
---------- --------- ------------------------------ -------------------- ------------------------------ -------------------- ------------------------------ ----------------------------------------
    820166 09-JUL-16 SCOTT                          oracle               SCOTT                                               SCOTT_DEPT_POLICY              SELECT deptno,DNAME FROM scott.dept WHER
                                                                                                                                                            E deptno = 30

SQL> SELECT * FROM teacherwhat.event_handler_result;
DBUSER               OSUSER               TABLE_NAME           TIMESTAMP POLICY
-------------------- -------------------- -------------------- --------- -------------------------
SCOTT                oracle               DEPT                 09-JUL-16 SCOTT_DEPT_POLICY

dba_fga_audit_trail中生成相关的审计记录,并且event_handler_result表存储了自定义的Event Handler审计内容。

8.1 用scott用户连接,满足Where条件的SQL文并且访问列audit_column列DNAME。

SQL> SELECT deptno,DNAME FROM scott.dept WHERE deptno BETWEEN 20 AND 40;

DEPTNO DNAME

    20 RESEARCH
    30 SALES
    40 OPERATIONS

7.2 查看相关的审计结果记录

SQL> SELECT SESSION_ID,TIMESTAMP,DB_USER,OS_USER,OBJECT_SCHEMA,CLIENT_ID,POLICY_NAME,SQL_TEXT FROM sys.dba_fga_audit_trail;
SESSION_ID TIMESTAMP DB_USER                        OS_USER              OBJECT_SCHEMA                  CLIENT_ID            POLICY_NAME                    SQL_TEXT
---------- --------- ------------------------------ -------------------- ------------------------------ -------------------- ------------------------------ ----------------------------------------
    820166 09-JUL-16 SCOTT                          oracle               SCOTT                                               SCOTT_DEPT_POLICY              SELECT deptno,DNAME FROM scott.dept WHER
                                                                                                                                                            E deptno = 30
    820166 09-JUL-16 SCOTT                          oracle               SCOTT                                               SCOTT_DEPT_POLICY              SELECT deptno,DNAME FROM scott.dept WHER
                                                                                                                                                            E deptno BETWEEN 20 AND 40


SQL>  SELECT * FROM teacherwhat.event_handler_result;
DBUSER               OSUSER               TABLE_NAME           TIMESTAMP POLICY
-------------------- -------------------- -------------------- --------- -------------------------
SCOTT                oracle               DEPT                 09-JUL-16 SCOTT_DEPT_POLICY
SCOTT                oracle               DEPT                 09-JUL-16 SCOTT_DEPT_POLICY

由于deptno BETWEEN 20 AND 40这个条件时,也会访问DEPTNO=30的行,所以也会被审计到。

FGA的的确认

通过上面的例子,我们至今知道可以查看以下监视视图,确认FGA相关的信息:

DBA_FGA_AUDIT_TRAIL:查看FGA审计的结果
DBA_AUDIT_POLICIES :查看FGA的策略信息
DBA_AUDIT_POLICY_COLUMNS :查看FGA的策略的列信息

审计结果的存储

下面对传统审计的审计结果的存储进行一下汇总:

1.标准审计

・当AUDIT_TRAIL设置为db或者 db , extended时,标准审计的结果会存储在SYS.AUD$表中,并可以通过视图DBA_AUDIT_TRAIL来查看所有的审计数据。

视图DBA_AUDIT_TRAIL详细可参考在线文档:
[DBA_AUDIT_TRAIL](https://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_3081.htm#REFRN23023)

・当AUDIT_TRAIL设置为其他非NONE值(xml、OS等)时,标准审计的结果会存储在OS数据文件中。

2.DBA 审计
    ・当AUDIT_SYS_OPERATIONS设置为Ture时,针对SYSDBA或SYSOPER权限登录的用户操作进行审计,其审计记录被保存在OS文件中。

3.OS 审计
    ・对于一些强制的审计如:SYSDBA和SYSOPER的连接,数据库启动和关闭等操作,无论审计是否有效,都会把记录保存在OS文件中。

4.FGA 审计

・默认情况下FGA的审计结果通常会保存在SYS.FGA_LOG$表中。
可以通过SYS.DBA_FGA_AUDIT_TRAIL视图查看。

・当DBMS_FGA.ADD_POLICY的参数audit_trail指定为DBMS_FGA.XML或DBMS_FGA.XML + DBMS_FGA.EXTENDED时,会把FGA的审计结果以XML格式保存在操作系统中。

・如果通过自定义一个Event Handler的Function(自定义处理内容),并作为参数值传递给参数handler_module,来自定义一些输出内容,还会保存一些数据在自定义的表中。

在MOS文档Doc ID 1299033.1中,总结了关于各个参数的设定对审计结果保存路径的影响。
可参考下图:

参数的设定对审计结果保存路径的影响

传统审计的小结

通过以上的介绍我们了解了传统审计的基本概要,以及标准审计和细粒度审计(FGA)的一些知识。

关于传统审计(Traditional Auditing)的更加详细的内容,还可以参考11g、12c的在线文档。

Database Security Guide 11.2
>9 Verifying Security Access with Auditing

我们将在其他的章节中讲解讲解统一审计(12c)。

版权声明:本文为博主原创文章,转载必须注明出处,本人保留一切相关权力!http://blog.csdn.net/lukeunique

参考

Database Security Guide 11.2
>9 Verifying Security Access with Auditing

Database PL/SQL Packages and Types Reference 11,.2
>ADD_POLICY Procedure

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/141628.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!