DBA_Oracle 奥迪(Audi)t基本概念(概念)

2014-08-15 Created By
BaoXinjian

ACCESS 11、什么是审计


(1).
简单的讲,就是把对数据库的操作记录下来。不管您是还是不是打开数据库的审计功效,以下那些操作系统会强制记录。

  • 用管理员权限连接Instance
  • 初始数据库
  • 关门数据库

(2).记录对数码对象的有所操作。哪天,什么用户对指标做出了哪些项目的操作。默许意况下审计是关门的。

  • 可以记录对数据库对象的具有操作。哪一天,什么用户对哪些目的进行了哪些项目标操作。
  • 只是无法得知操作的细节,比如到底多少更新成了1依然2。
  • 而是现在新面世的精工细作审计(Fine grained
    奥迪ting),好像也足以记录DML语句了。

(3). 审计的有些明了

  1. 对此权力审计和一大半说话,by
    session无效,无论指定by session/by access如故不指定,审计都活动为by
    access。

2.
审计的语句级可以指定ALL,但是ALL只包括一大半说话,它不包蕴上边那几个言辞。

ALTER SEQUENCE,ALTER TABLE, COMMENT
TABLE, DELETE TABLE, EXECUTE PROCEDURE, GRANT DIRECTORY, GRANT
PROCEDURE, GRANT SEQUENCE, GRANT TABLE, GRANT TYPE, INSERT TABLE, LOCK
TABLE, SELECT SEQUENCE, SELECT TABLE, UPDATE TABLE

3.
对此讲话和权限审计,生效从履行语句后下一个登陆用户开端,当前的有着session不受影响。而目的的审计,则从审计语句开首后对现阶段所有的用户生效。

  1. 可以使用NOAUDIT ALL、NOAUDIT ALL
    PRIVILEGE撤废所有的言语、权限的审计,可是一旦在审计的时候指定了用户,则NOAUDIT
    ALL或NOAUDIT ALL
    PRIVILEGE的时候,不会撤消这几个明显用户的审计,必须在NOAUDIT的时候也举世瞩目标提议相应的用户。

 

ACCESS 22、和审计有关的三个首要参数


(1). Audit_sys_operations

默许为false,当设置为true时,所有(注意是具备!)sys用户(包含以sysdba,sysoper身份登录的用户)的操作都会被记录

audit
trail不会写在aud$表中,这些很好精晓,如若数据库还未启动aud$不可用,那么像conn
/as sysdba这样的接连新闻,只好记录在别的地点。

设假设windows平台,audti
trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文书中

(2). Audit_trail

有四个取值

  • None :默许值,不做审计
  • DB :将audit trail
    记录在数据库的审计有关表中,如aud$
  • OS :将audit trail
    记录在操作系统文件中,文件名由audit_file_dest参数指定

注:那么些参数是static参数,必要重新起动数据库才能奏效。

(3). Audit_file_dest

存放审计日志的目录

 

ACCESS 33、审计级别


当打开审计成效后(audit_trail=DB/OS),可在三个级别对数据库进行审计:Statement(语句)   
、Privilege(权限)、object(对象)

(1). Statement

按语句来审计,

比如audit table
会审计数据库中具备的create table,drop table,truncate table语句,alter
session by cmy会审计cmy用户拥有的数据库连接。

(2). Privilege

按权限来审计,当用户选拔了该权限则被审计,

如进行grant select any table to a; audit
select any table;语句后,当用户a 访问了用户b的表时(如select * from
b.t;)会用到select any
table权限,故会被审计。注意用户是投机表的所有者,所以用户访问自己的表不会被审计。

(3). Object

按对象审计,只审计on关键字指定对象的连锁操作,

如aduit alter,delete,drop,insert on cmy.t
by scott;
那里会对cmy用户的t表举行审计,但同时利用了by子句,所以只会对scott用户发起的操作举办审计.

在意Oracle没有提供对schema中负有目标的审计功效,只可以一个一个对象审计,对于背后创立的靶子,Oracle则提供on
default子句来兑现活动审计,比如执行audit drop on default by access;后,
对于随后创办的目的的drop操作都会审计。

但以此default会对将来创建的拥有数据库对象有效,如同无法指定只对某个用户创设的靶子有效,想比trigger可以对schema的DDL进行“审计”,这几个效用稍显不足。

 

ACCESS 44、审计的有的别样选取


by access / by session

:by access
每一个被审计的操作都会生成一条audit trail。 by
session,一个会话里面同连串的操作只会生成一条audit trail。 默许为by
session

whenever [ not ] successful

:whenever successful
操作成功(dba_audit_trail中returncode字段为0) 才审计,whenever not
successful反之。 省略该子句的话,不管操作成功与否都会审计。

 

Syntax Auditing SQL:  

    AUDIT ALL|ALL
PRIVILEGES|sql_statement|system_priv [options]  

    Options:    

        BY user    

        BY proxy [ON BEHALF OF
ANY|user]    

        BY ACCESS|SESSION [WHENEVER
[NOT] SUCCESSFUL]

Syntax for Auditing Objects:  

   AUDIT action on schema.object BY
ACCESS|SESSION [WHENEVER [NOT] SUCCESSFUL]  

   AUDIT action on DEFAULT BY
ACCESS|SESSION [WHENEVER [NOT] SUCCESSFUL]  

   AUDIT action on DIRECTORY dir_name BY
ACCESS|SESSION [WHENEVER [NOT] SUCCESSFUL]    

      Where actions is any of     

         ALTER, AUDIT, COMMENT, DELETE,
EXECUTE, GRANT, INDEX, INSERT, LOCK, RENAME, SELECT, UPDATE

 

ACCESS 55、和审计有关的视图


(1). dba_audit_trail

保留所有的audit
trail,实际上它只是一个基于aud$的视图。其它的视图dba_audit_session,dba_audit_object,dba_audit_statement都只是dba_audit_trail的一个子集。

(2). dba_stmt_audit_opts

可以用来查阅statement审计级其余audit
options,即数据库设置过如何statement级其他审计。dba_obj_audit_opts,dba_priv_audit_opts视图功效与之类似

(3). all_def_audit_opts

用来查看数据库用on
default子句设置了如何默许对象审计。

(4). 其余视图表

DBA_OBJ_AUDIT_OPTS:
视图,表以及其余数据库对象的审计新闻;

DBA_PRIV_AUDIT_OPTS:所有特权的审计音讯

DBA_STMI_AUDIT_OPTS:所有语句的审计音讯;

DBA_DEP_AUDIT_OPTS:缺省的审计列表;

 

SYS.AUD$             
是绝无仅有保留审计结果的表。此外的都是视图。

 

STMT_AUDIT_OPTION_MAP
包括关于审计选项类型代码的音讯由SQL.BSQ 脚本在CREATEDATABASE
的时候创造

AUDIT_ACTIONS        
包罗对审计跟踪动作类型代码的证实

ALL_DEF_AUDIT_OPTS   
包罗默许对象审计选项。当成立对象时将选用这几个选拔

 

DBA_STMT_AUDIT_OPTS  
描述由用户安装的跨系统的此时此刻系统审计选项

DBA_PRIV_AUDIT_OPTS  
描述由用户正在审计的跨系统的当前系统权限

DBA_OBJ_AUDIT_OPTS   
描述在富有目的上的审计选项

USER_OBJ_AUDIT_OPTS   USER
视图描述当前用户所有的持有目标上的审计选项

 

以下是审计记录

DBA_AUDIT_TRAIL      
列出装有审计跟踪条目

USER_AUDIT_TRAIL     
USER视图突显与当前用户有关的审计跟踪条目

ACCESS, 

DBA_AUDIT_OBJECT     
包涵系统中持有目的的审计跟踪记录

USER_AUDIT_ OBJECT    USER
视图列出部分审计跟踪记录而那些记录涉及当前用户可以访问的对象的语句

 

DBA_AUDIT_SESSION     列出涉及CONNECT
和DISCONNECT 的拥有审计跟踪记录

USER_AUDIT_ SESSION  
USER视图列出涉嫌当前用户的CONNECT 和DISCONNECT 的享有审计跟踪记录

 

DBA_AUDIT_STATEMENT    
列出涉及数据库全体的GRANT REVOKE AUDIT NOAUDIT 和ALTER SYSTEM
语句的审计跟踪记录

USER_ AUDIT_ STATEMENT  对于USER
视图来说这一个语句应是用户公布的

 

DBA_AUDIT_EXISTS      列出BY AUDIT NOT
EXISTS 爆发的审计跟踪条目

 

上面的视图用于细粒度审计

DBA_AUDIT_POLICIES
显示系统上的富有审计策略

DBA_FGA_AUDIT_TRAIL
列出基于值的审计的审计跟踪记录

 

ACCESS 66、撤除审计


将对应审计语句的audit改为noaudit即可,如audit
session whenever successful;打消审计noaudit session whenever
successful;

 

ACCESS 77.
启动Audit


SQLPLUS> connect / AS SYSDBA

SQLPLUS> select * from sys.aud$;    
–没有记录再次来到 

SQLPLUS> select * from
dba_audit_trail;   – 没有记录重返

只要做上述查询的时候发现表不设有,表明审计有关的表还不曾安装,要求安装。

 

SQLPLUS> connect / as sysdba

SQLPLUS>
@$ORACLE_HOME/rdbms/admin/cataudit.sql

审计表安装在SYSTEM表空间。所以要确保SYSTEM表空间又足够的空中存放审计音信。

设置后要重启数据库

 

ACCESS 87.
奥迪(Audi)t国策完结


案例:创立测试表,通过Insert, Update,
Delete插足奥迪t策略,监控表的增删改情况

Step1. 创建测试表

CREATE TABLE bxj_test_audit
(
   invoice_id     NUMBER,
   invoice_num    VARCHAR (50),
   invoice_desc   VARCHAR (200)
)

 

Step2. 参与细粒度监控奥迪t Polocy

BEGIN
   DBMS_FGA.ADD_POLICY (object_schema     => 'APPS',
                        object_name       => 'BXJ_TEST_AUDIT',
                        policy_name       => 'TEST_AUD_INSERT',
                        audit_column      => 'invoice_id, invoice_num,invoice_desc',
                        enable            => FALSE,
                        statement_types   => 'INSERT');
END;

BEGIN
   DBMS_FGA.ADD_POLICY (object_schema     => 'APPS',
                        object_name       => 'BXJ_TEST_AUDIT',
                        policy_name       => 'TEST_AUD_UPDATE',
                        audit_column      => 'invoice_id, invoice_num,invoice_desc',
                        enable            => FALSE,
                        statement_types   => 'UPDATE');
END;

BEGIN
   DBMS_FGA.ADD_POLICY (object_schema     => 'APPS',
                        object_name       => 'BXJ_TEST_AUDIT',
                        policy_name       => 'TEST_AUD_DELETE',
                        audit_column      => 'invoice_id, invoice_num,invoice_desc',
                        enable            => FALSE,
                        statement_types   => 'DELETE');
END;

 

Step3. 启用细粒度监控奥迪t Polocy 

BEGIN
   DBMS_FGA.ENABLE_POLICY (object_schema   => 'APPS',
                           object_name     => 'BXJ_TEST_AUDIT',
                           policy_name     => 'TEST_AUD_INSERT');
END;

BEGIN
   DBMS_FGA.ENABLE_POLICY (object_schema   => 'APPS',
                           object_name     => 'BXJ_TEST_AUDIT',
                           policy_name     => 'TEST_AUD_UPDATE');
END;

BEGIN
   DBMS_FGA.ENABLE_POLICY (object_schema   => 'APPS',
                           object_name     => 'BXJ_TEST_AUDIT',
                           policy_name     => 'TEST_AUD_DELETE');
END;

 

Step4. 对表举办增删改

insert into bxj_test_audit values (2,'2014-08-22 001', 'PAY THE TAXI FOR 2014-0822');

update bxj_test_audit set invoice_id = 1 where invoice_id = 2;

delete from bxj_test_audit where invoice_id = 1;

 

Step5. 查看监控表

ACCESS 9

 

Step6. 关闭细粒度监控策略

SQL> exec
DBMS_FGA.DISABLE_POLICY(object_schema=>’LPPMTEST’  
,object_name=>’TEST’   ,policy_name=>’TEST_AUD’);

SQL> EXEC
DBMS_FGA.DROP_POLICY(object_schema=>’LPPMTEST’  
,object_name=>’TEST’   ,policy_name=>’TEST_AUD’);

 

Thanks and Regards

ACCESS 10

相关文章