利用Oracle FGA实现审计

在《 初识企业内容管理平台-Documentum 》中提到,由于Documentum的极其保守,所以无法对其系统,尤其是数据库设计部分进行深入了解(不提供对数据库表的说明书)。为了对数据库部分进行了解,需要进行一下反向的工作:通过在Webtop/Da中进行操作,观察数据库表的变化。这就需要实现对Oracle数据库表操作的审计。当然,这样的反向工作,对了解其它未知的应用系统也同样有作用。

Oracle9i Database 推出了一种称为细粒度审计 (FGA) 的新特性。现在下面就利用FGA实现审计对表的审计。其中,EDMS是数据库的一个测试帐户。

1.   建立测试表(用户EDMS下)

Create Table T_AUDIT_DEMO
(
 
CID   INT   NOT NULL,
 CNAME VARCHAR2(20NULL,
 
ENAME VARCHAR2(20NULL,
 
CONSTRAINT PK_T_AUDIT_DEMO PRIMARY KEY (CID)
);

2.   创建审计策略(用户SYS下)

begin
 
 dbms_fga.add_policy
  (
    object_schema=>'EDMS',
   
 object_name=>'T_AUDIT_DEMO',
   
 policy_name=>'T_AUDIT_DEMO_AUDIT'
 
 );
end;

3.   测试审计效果(用户EDMS下)

INSERT INTO T_AUDIT_DEMO VALUES(1,'曾勋','ZENG XUN');
INSERT INTO T_AUDIT_DEMO VALUES(
2,'翁黎明','WENG LI MING');
INSERT INTO T_AUDIT_DEMO VALUES(
3,'刘帝勇','LIU DI YONG');

4.   使用Select查询测试表(用户EDMS下)

SQL> SELECT * FROM T_AUDIT_DEMO;   
CID CNAME                  ENAME
----- -------------------- -------
曾勋                                 ZENG XUN  
翁黎明                             WENG LI MING  
刘帝勇                             LIU DI YONG

5.   再次查看审计效果用户SYS下)

SQL> select statement_type,SQL_TEXT from dba_fga_audit_trail;
STATEMENT_TYPE SQL_TEXT
-------------- -----------
SELECT           SELECT * FROM T_AUDIT_DEMO

注意:之前的Insert语句并不在审计中。默认的只对Select进行审计。在Oracle 9i中它只捕获 SELECT 语句。而在Oracle 10i中进行了扩展,支持对所有类型的DML进行审计。

6.   修改审计粒度用户SYS下)

begin
 
 dbms_fga.add_policy
  (
    object_schema=>'EDMS',
   
 object_name=>'T_AUDIT_DEMO',
   
 policy_name=>'T_AUDIT_DEMO_AUDIT',
   
 statement_types=>'INSERT, UPDATE, DELETE, SELECT'
 
 );
end;

注意:不能实现对Truncat Table的审计。

7.   测试审计用户EDMS、SYS下)

INSERT INTO T_AUDIT_DEMO VALUES(4,'黄智洪','HUANG ZHI HONG');
DELETE FROM T_AUDIT_DEMO WHERE CID < 4;
SQL> select statement_type,SQL_TEXT from dba_fga_audit_trail;
STATEMENT_TYPE SQL_TEXT
-------------- --------------------
SELECT         SELECT * FROM T_AUDIT_DEMO
INSERT             INSERT INTO T_AUDIT_DEMO VALUES(4,'黄智洪','HUANG ZHI HONG')
DELETE         DELETE FROM T_AUDIT_DEMO WHERE CID < 4
SELECT         SELECT * FROM T_AUDIT_DEMO


至此,我们已经实现了对表T_AUDIT_DEMO 的审计。与FGA相关的表或者视图:

select   * from fga$
select   * from fga_log$
select   * from fgacol$
select * from dba_fga_audit_trail
select * from dba_common_audit_trail

select * from dba_audit_policies
select * from dba_fga_audit_trail

与FGA相关的包或者过程:

dbms_fga.add_policy
dbms_fga.drop_policy

至于这些表、视图、包的列或者参数的使用方法,可以Describe或者查看相关文档。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值