数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

利用OracleFGA实现审计


发布日期:2021年11月01日
 
利用OracleFGA实现审计

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

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

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

Create Table T_AUDIT_DEMO

(

CID INT NOT NULL CNAME VARCHAR() NULL ENAME VARCHAR() NULL

CONSTRAINT PK_T_AUDIT_DEMO PRIMARY KEY (CID)

);

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

begin

dbms_fgaadd_policy

(

object_schema=>EDMS object_name=>T_AUDIT_DEMO

policy_name=>T_AUDIT_DEMO_AUDIT

);

end;

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

INSERT INTO T_AUDIT_DEMO VALUES(曾勋ZENG XUN);

INSERT INTO T_AUDIT_DEMO VALUES(翁黎明WENG LI MING);

INSERT INTO T_AUDIT_DEMO VALUES(刘帝勇LIU DI YONG);

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

SQL> SELECT * FROM T_AUDIT_DEMO;

CID CNAME ENAME

曾勋ZENG XUN

翁黎明WENG LI MING

刘帝勇LIU DI YONG

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

SQL> select statement_typeSQL_TEXT from dba_fga_audit_trail;

STATEMENT_TYPE SQL_TEXT

SELECT SELECT * FROM T_AUDIT_DEMO

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

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

begin

dbms_fgaadd_policy

(

object_schema=>EDMS object_name=>T_AUDIT_DEMO policy_name=>T_AUDIT_DEMO_AUDIT statement_types=>INSERT UPDATE DELETE SELECT

);

end;

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

.测试审计(用户EDMSSYS下)

INSERT INTO T_AUDIT_DEMO VALUES(黄智洪HUANG ZHI HONG);

DELETE FROM T_AUDIT_DEMO WHERE CID < ;

SQL> select statement_typeSQL_TEXT from dba_fga_audit_trail;

STATEMENT_TYPE SQL_TEXT

SELECT SELECT * FROM T_AUDIT_DEMO

INSERT INSERT INTO T_AUDIT_DEMO VALUES(黄智洪HUANG ZHI HONG)

DELETE DELETE FROM T_AUDIT_DEMO WHERE CID <

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_fgaadd_policy dbms_fgadrop_policy

至于这些表视图包的列或者参数的使用方法可以Describe或者查看相关文档

上一篇:oracleem中按钮乱码解决办法

下一篇:用.NET新提供的managed provider来访问Oracle数据