Oracle审计功能详解_第1页
Oracle审计功能详解_第2页
Oracle审计功能详解_第3页
Oracle审计功能详解_第4页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Oracle 审计功能详解一、审计分类:Oracle 中审计总体上可分为“标准审计”和“细粒度审计”后者也称为“基于政策的审计”,在 Oracle10G 之后功能得到很大增强。其中标准审计可分为用户级审计和系统级审计。用户级审计是任何 Oracle 用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计, 记录所有用户对这些表或视图的一切成功和 (或 )不成功的访问要求以及各种类型的 SQL 操作。系统级审计只能由 DBA 设置,用以监测成功或失败的登录要求、 监测 GRANT 和 REVOKE 操作以及其他数据库级权限下的操作。二、标准审计:2.1 分类:在 ORACLE 中分别支

2、持以下三种标准审计类型:语句审计,对某种类型的SQL语句审计,不指定结构或对象。特权审计,对执行相应动作的系统特权的使用审计。对象审计,对一特殊模式对象上的指定语句的审计。这三种标准审计类型分别对如下3 方面进行审计:审计语句的成功执行、不成功执行,或者其两者。对每一用户会话审计语句执行一次或者对语句每次执行审计一次。对全部用户或指定用户的活动的审计。当数据库的审计功能打开后,在语句执行阶段产生审计记录。审计记录包含有审计的操作、用户执行的操作、操作的日期和时间等信息。审计记录可存在数据字典表(称为审计记录)或操作系统审计记录中。数据库审计记录是在SYS 模式的 AUD$ 表中。2.2 和审计

3、相关的两个主要参数Audit_sys_operations:默认为 false ,当设置为 true 时,所有 sys 用户(包括以 sysdba,sysoper 身份登录的用户)的操作都会被记录, audit trail 不会写在 aud$ 表中,这个很好理解,假如数据库还未启动 aud$ 不可用,那么像conn/as sysdba 这样的连接信息,只能记录在其它地方。假如是 windows平台, audtitrail 会记录在windows的事件管理中,假如是linux/unix平台则会记录在audit_file_dest参数指定的文件中。Audit_trail :None :是默认值,不

4、做审计;DB :将 audittrail 记录在数据库的审计相关表中,如aud$ ,审计的结果只有连接信息;DB,Extended :与 DB 一样,但是审计结果里面除了连接信息还包含了当时执行的SQL_TEXT 和 SQL_BIND ;OS :将 audittrail 记录在操作系统文件中,文件名由audit_file_destXML : 10g 里新增,将audittrail 以 XML 格式记录在操作系统文件中;参数指定;精选文库XML,Extended:与 XML 一样,但是审计结果里面除了连接信息还包含了当时执行的SQL_TEXT 和 SQL_BIND注:这两个参数是static 参

5、数,需要重新启动数据库才能生效。2.3 审计级别当开启审计功能后,可在三个级别对数据库进行审计:Statement( 语句 )、Privilege (权限)、 object (对象)。Statement:按语句来审计, 比如 audit table 会审计数据库中所有的 create table,drop table,truncat e table 语句, alter session by cmy 会审计 cmy 用户所有的数据库连接。用法: AUDITsql_statement_clauseBY SESSION| ACCESSWHENEVERNOTSUCCESSFUL;表 1 列出了可以审计

6、的语句类型,并且在每个类别中包含了相关语句的简要描述。如果指定 all ,则审计该列表中的任何语句。然而,表2 中的语句类型在启用审计时不属于all类别;必须在 audit命令中显式地指定它们。表 1 包括在 ALL 类别中的可审计语句语句选项SQL 操作ALTER SYSTEM所有 ALTER SYSTEM选项,例如,动态改变实例参数,切换到下一个日志文件组,以及终止用户会话CLUSTERCREATE 、 ALTER 、DROP 或 TRUNCATE 集群CONTEXTCREATE CONTEXT或 DROP CONTEXTDATABASE LINKCREATE 或 DROP 数据库链接DI

7、MENSIONCREATE 、 ALTER 或 DROP 维数DIRECTORYCREATE 或 DROP 目录INDEXCREATE 、 ALTER 或 DROP 索引MATERIALIZEDCREATE 、 ALTER 或 DROP 物化视图VIEWNOT EXISTS由于不存在的引用对象而造成的SQL 语句的失败PROCEDURECREATE 或 DROP FUNCTION、LIBRARY 、PACKAGE 、PACKAGEBODY 或 PROCEDUREPROFILECREATE 、 ALTER 或 DROP 配置文件PUBLIC DATABASECREATE 或 DROP 公有数据库

8、链接LINKPUBLIC SYNONYMCREATE 或 DROP 公有同义词-2精选文库ROLECREATE 、 ALTER 、DROP 或 SET 角色ROLLBACKCREATE 、 ALTER 或 DROP 回滚段SEGMENTSEQUENCECREATE 或 DROP 序列SESSION登录和退出SYNONYMCREATE 或 DROP 同义词SYSTEM AUDIT系统权限的 AUDIT或 NOAUDITSYSTEM GRANTGRANT 或 REVOKE 系统权限和角色TABLECREATE 、 DROP 或 TRUNCATE 表TABLESPACECREATE 、 ALTER

9、或 DROP 表空间TRIGGERCREATE 、ALTER( 启用 / 禁用 ) 、DROP触发器; 具有 ENABLE ALLTRIGGERS或 DISABLE ALL TRIGGERS的 ALTER TABLETYPECREATE 、 ALTER 和 DROP 类型以及类型主体USERCREATE 、 ALTER 或 DROP 用户VIEWCREATE 或 DROP 视图表 2显式指定的语句类型语句选项SQL操作ALTER SEQUENCE任何 ALTER SEQUENCE 命令ALTER TABLE任何 ALTER TABLE命令COMMENT TABLE添加注释到表、视图、物化视图或

10、它们中的任何列DELETE TABLE删除表或视图中的行EXECUTE PROCEDURE执行程序包中的过程、函数或任何变量或游标GRANT DIRECTORYGRANT或 REVOKE DIRECTORY对象上的权限GRANT PROCEDUREGRANT 或 REVOKE过程、函数或程序包上的权限GRANT SEQUENCEGRANT 或 REVOKE序列上的权限GRANT TABLEGRANT或 REVOKE表、视图或物化视图上的权限GRANT TYPEGRANT或 REVOKE TYPE上的权限INSERT TABLEINSERT INTO表或视图LOCK TABLE表或视图上的 LO

11、CK TABLE命令SELECT SEQUENCE引用序列的 CURRVAL 或 NEXTVAL的任何命令SELECT TABLESELECT FROM表、视图或物化视图UPDATE TABLE在表或视图上执行 UPDATE-3精选文库Privilege:按权限来审计, 当用户使用了该权限则被审计, 如执行 grant select any table to a,当执行了 audit select any table 语句后,当用户 a 访问了用户 b 的表时(如 select * fro m b.t)会用到 select any table 权限,故会被审计。注重用户是自己表的所有者,所以用

12、户访问自己的表不会被审计。用法:审计系统权限具有与语句审计相同的基本语法, 但审计系统权限是在 sql_stateme nt_clause 中,而不是在语句中,指定系统权限Object :按对象审计,只审计on 要害字指定对象的相关操作,如aduit alter,delete,drop,inserton cmy.t byscott;这里会对 cmy 用户的 t 表进行审计,但同时使用了by 子句,所以只会对 scott 用户发起的操作进行审计。注重Oracle 没有提供对 schema 中所有对象的审计功能,只能一个一个对象审计,对于后面创建的对象,Oracle 则提供 on default子

13、句来实现自动审计,比如执行audit dropon default by access; 后, 对于随后创建的对象的 drop 操作都会审计。但这个default 会对之后创建的所有数据库对象有效,似乎没办法指定只对某个用户创建的对象有效,想比 trigger 可以对 schema的 DDL 进行 “审计 ”,这个功能稍显不足。用法:AUDITschema_object_clauseBY SESSION| ACCESSWHENEVERNOTSUCCESSFUL;schema_object_clause 指定对象访问的类型以及访问的对象。可以审计特定对象上14种不同的操作类型,下表中列出了这些操

14、作。对象选项说明ALTER改变表、序列或物化视图AUDIT审计任何对象上的命令COMMENT添加注释到表、视图或物化视图DELETE从表、视图或物化视图中删除行EXECUTE执行过程、函数或程序包FLASHBACK执行表或视图上的闪回操作GRANT授予任何类型对象上的权限INDEX创建表或物化视图上的索引INSERT将行插入表、视图或物化视图中LOCK锁定表、视图或物化视图READ对 DIRECTORY对象的内容执行读操作RENAME重命名表、视图或过程SELECT从表、视图、序列或物化视图中选择行UPDATE更新表、视图或物化视图-4精选文库2.4 审计的一些其他选项by access/ b

15、y session :by access每一个被审计的操作都会生成一条audittrail 。by session一个会话里面同类型的操作只会生成一条audittrail ,默认为by session 。whenevernotsuccessful :whenever successful 操作成功 (dba_audit_trail 中 returncode 字段为 0) 才审计 , whenever not successful 反之。省略该子句的话,不管操作成功与否都会审计。2.5 和审计相关的视图dba_audit_trail:保存所有的audittrail ,实际上它只是一个基于aud$

16、 的视图。其它的视图 dba_audit_session,dba_audit_object,dba_audit_statement都只是 dba_audit_trail的一个子集。dba_stmt_audit_opts:可以用来查看statement审计级别的auditoptions ,即数据库设置过哪些statement级别的审计。 dba_obj_audit_opts,dba_priv_audit_opts视图功能与之类似all_def_audit_opts:用来查看数据库用on default 子句设置了哪些默认对象审计。1.SYS.AUD$审计功能的底层视图,如果需要对数据进行删除,只

17、需要对 aud$ 视图进行删除既可,其他视图里的数据都是由aud$ 所得 .2.DBA_AUDIT_EXISTS列出 auditnot exists 和 auditexists 产生的审计跟踪,我们默认的都是auditexists.3. DBA_AUDIT_TRAIL可以在里面查处所有审计所跟踪的信息,保存所有的audittrail ,实际上它只是一个基于 aud$ 的视图。 其它的视图 dba_audit_session,dba_audit_object,dba_audit_sta tement 都只是 dba_audit_trail 的一个子集。4. DBA_AUDIT_OBJECT可以查

18、询所有对象跟踪信息 .(例如 ,对 grant,revoke 等不记录 ), 信息完全包含于 dba_a udit_trail5. DBA_AUDIT_SESSION所得到的数据都是有关logon 或者 logoff 的信息 .6. DBA_AUDIT_STATEMENT列出 grant,revoke,audit,noaudit,altersystem 语句的审计跟踪信息.7. DBA_PRIV_AUDIT_OPTS通过系统和由用户审计的当前系统特权8. DBA_OBJ_AUDIT_OPTS可以查询到所有用户所有对象的审计选项9. DB_STMT_AUDIT_OPTS可以用来查看stateme

19、nt审计级别的auditoptions ,即数据库设置过哪些statement 级别的审计。 dba_obj_audit_opts,dba_priv_audit_opts视图功能与之类似-5精选文库10. ALL_DEF_AUDIT_OPTS用来查看数据库用on default 子句设置了哪些默认对象审计11. AUDIT_ACTIONS可以查询出在aud$ 等视图中actions 列的含义12. SYSTEM_PRIVILEGE_MAP可以查询出aud$ 等视图中priv$used列的含义 (注意前面加 '-')13. STMT_AUDIT_OPTION_MAP审计选项类型代

20、码14. DBA_AUDIT_POLICIES 审计 POLICIES15. DBA_COMMON_AUDIT_TRAIL标准审计 +细粒度审计合并视图16. DBA_FGA_AUDIT_TRAIL细粒度审计策略的审计跟踪条目2.6 取消审计将对应审计语句的 audit 改为 noaudit 即可,如 audit session whenever successful 对应的取消审计语句为 noaudit session whenever successful;2.7 设置 ORACLE 标准审计:下列步骤可以设置ORACLE的标准审计功能:1. 修改初始化参数文件( init<sid&

21、gt;.ora )如果使用服务器参数文件使用altersystemset <parameter>=<value>scope=spfile|both ,详情参照 1.1 节中关于参数文件的介绍),设置 AUDIT_TRAIL 参数,并且重启数据库。 AUDIT_TRAIL 的取值如下:DB/TRUE:启动审计功能,并且把审计结果存放在数据库的SYS.AUD$ 表中DB_EXTENDED:具有 DB/TRUE的功能,另外记录AUD$ 的 SQLBIND和 SQLTEXT 字段OS:启动审计功能,并把审计结果存放在操作系统的审计信息中XML:启动审计功能,并且把审计结果以XM

22、L 格式存放在操作系统的审计信息中XML_EXTENDED:具有 XML的功能,另外会记录SQLBIND和 SQLTEXT 信息NONE/FALSE:关闭审计功能2.设置 AUDIT_TRAIL参数:如果设置AUDIT_TRAIL= OS, 还需要修改参数AUDIT_FILE_DEST。如果操作系统支持设置AUDIT_TRAIL=OS,文件会自动存放在AUDIT_FILE_DEST所指定的目录下,并且文件名包含进程的PID 。-6精选文库3. 确认审计相关的表是否已经安装SQLPLUS> connect / AS SYSDBASQLPLUS> select * from sys.a

23、ud$; - 没有记录返回SQLPLUS>select* fromdba_audit_trail;- 没有记录返回如果做上述查询的时候发现表不存在,说明审计相关的表还没有安装,需要安装。SQLPLUS>connect/ as sysdbaSQLPLUS>$ORACLE_HOME/rdbms/admin/cataudit.sql审计表安装在 SYSTEM 表空间。所以要确保 SYSTEM 表空间又足够的空间存放审计信息。4. 关闭并重启数据库5. 设置所需要的审计信息下面是一个例子SQL> connect system/managerSQL>grantauditsy

24、stemto scott;SQL>connectscott/tigerSQL>auditsession;停止审计:SQL>noauditsession;通常设置了标准审计后都是通过 Audit 语句开启审计,使用 noaudit 语句收回审计。如下所示:对修改 SC 表结构或数据的操作进行审计可使用如下语句:AUDIEALTER ,UPDATE ON SC;取消对 SC 表的一切审计可使用如下语句:NOAUDITALLON SC;2.8 设置审计的实例(对试图尝试口令的访问的审计):以下是一个审计的实例,用于记录尝试通过野蛮尝试法破译 ORACLE帐号口令的例子:1. 修改审

25、计相关参数(参照上面介绍的方法)2. 重启数据库3. 设置审计信息SQL>AUDIT ALL BY ACCESS WHENEVER NOT SUCCESSFUL4. 查询 AUD$SQL> select returncode, action#, userid, userhost, terminal,timestamp from aud$RETURNCODEACTION# USERIDUSERHOSTTERMINAL- - - - -1017100SCOTTWPRATA-BR1017100SCOTTWPRATA-BR1017100SCOTTWPRATA-BR-7精选文库ORA-101

26、7的含义为错误的用户名口令。通过查看AUD$ 表可以清楚地看到WPRATA-BR尝试破译SCOTT 的口令。可以通过下面一个存储过程来分析AUD$ 表,找出可疑的信息:create or replace procedure AuditLogin(Since Varchar2,Times PLS_Integer)isUSER_ID VARCHAR2(20);cursor c1 is select userid,count(*) from sys.aud$ where returncode='1017' and timestamp#>=to_date(Since,'y

27、yyy-mm-dd')group by userid;cursor C2 IS Select userhost,terminal,TO_CHAR(timestamp#,'YYYY-MM-DD:HH24:MI:SS')from sys.aud$ WHERE returncode='1017' and timestamp#>=to_date(Since,'yyyy-mm-dd') AND USERID=USER_ID;ct PLS_INTEGER;V_USERHOST VARCHAR2(40);V_TERMINAL VARCHAR(40

28、);V_DATE VARCHAR2(40);BEGINOPEN C1;dbms_output.enable(1024000);LOOPFETCH C1 INTO USER_ID,CT;EXIT WHEN C1%NOTFOUND;IF(CT>=TIMES) THENDBMS_OUTPUT.PUT_LINE('USER BROKEN ALARM:'|USER_ID); OPEN C2;LOOPFETCH C2 INTO V_USERhOST,V_TERMINAL,V_DATE;DBMS_OUTPUT.PUT_LINE(CHR(9)|'HOST:'|V_USER

29、HOST|',TERM:'|V_TERMINAL|' ,TIME:'|V_DATE);EXIT WHEN C2%NOTFOUND;END LOOP;close c2;END IF;END LOOP;close c1;END;/一下是执行结果:SQL>set serveroutput on;SQL> execute auditlogin('2004-01-01',2);USER BROKEN ALARM:SYSHOST:,TERM:XUJI,TIME:2004-09-22:11:08:00-8精选文库HOST:,TERM:XUJI,TI

30、ME:2004-09-22:11:08:01HOST:,TERM:XUJI,TIME:2004-09-22:11:09:29HOST:,TERM:XUJI,TIME:2004-09-22:11:09:29PL/SQL过程已成功完成。2.9 将审计相关的表移动到其他表空间:由于 AUD$ 表等审计相关的表存放在SYSTEM 表空间,因此为了不影响系统的性能,保护 SYSTEM表空间,最好把 AUD$ 移动到其他的表空间上。可以使用下面的语句来进行移动:SQL>connect /as sysdba;SQL>altertableaud$ move tablespace<newtab

31、lespace>SQL>alterindexI_aud1 rebuild onlinetablespace <new tablespace>SQL>altertableaudit$ movetablespace<newtablespace>SQL>alterindexi_audit rebuild onlinetablespace <new tablespace>SQL>altertableaudit_actionsmovetablespace<new tablespace>SQL>alterindexi_au

32、dit_actionsrebuildonlinetablespace <new tablespace>2.10 审计语句样例多层环境下的审计: appserve- 应用服务器, jackson-client AUDIT SELECT TABLE BY appserve ON BEHALF OF jackson;审计连接或断开连接:AUDIT SESSION;AUDIT SESSION BY jeff, lori;-指定用户审计权限 ( 使用该权限才能执行的操作) :AUDIT DELETE ANY TABLE BY ACCESS WHENEVER NOT SUCCESSFUL; A

33、UDIT DELETE ANY TABLE;AUDIT SELECTTABLE, INSERTTABLE, DELETETABLE, EXECUTEPROCEDUREBY ACCESS WHENEVER NOT SUCCESSFUL;对象审计:AUDIT DELETE ON jeff.emp;AUDIT SELECT, INSERT, DELETE ON jward.dept BY ACCESS WHENEVER SUCCESSFUL;取消审计:NOAUDIT session;NOAUDIT session BY jeff, lori;NOAUDIT DELETE ANY TABLE;NOAU

34、DIT SELECT TABLE, INSERT TABLE, DELETE TABLE,EXECUTE PROCEDURE;-9精选文库NOAUDIT ALL;-取消所有 statement 审计NOAUDIT ALL PRIVILEGES;-取消所有权限审计NOAUDIT ALL ON DEFAULT;-取消所有对象审计2.11 清除审计信息DELETE FROM SYS.AUD$;TRUNCATE TABLE SYS.AUD$;DELETE FROM SYS.AUD$ WHERE obj$name='EMP'三、细粒度审计:细粒度审计 (FGA)(通过 Oracle9 i

35、引入)可以理解为“基于政策的审计”。与标准的审计功能相反,FGA 可用于指定生成审计记录必需的条件:FGA 政策通过使用“ dbms_fga”程序包以编程方式绑定到对象(表、视图)。类似于用于通过 VPD ("dbms_rls") 进行访问控制的程序包, 它允许您创建任何需要的条件,例如:仅当以下条件为真时审计事件:? 在早上九点到下午六点之间或在星期六和星期日对某个表进行了访问。? 使用了公司网络外部的某个 IP 地址。? 选定或更新了特定列。? 使用了该列的特定值。这将创建更有意义的审计线索,因为无需记录每一个人对表的每一次访问。从 Oracle 数据库 10g 开始,

36、FGA 支持在一个策略中使用“选择”、 “插入”、“更新”和“删除”语句的任意组合。事实上,绑定到表的 FGA 政策简化了审计政策的管理,因为这将只需在数据库中对其更改一次, 不用在每个应用程序中一次次进行。此外。无论用户通过何种方式连接至数据库(通过应用程序、 Web 接口或通过 SQL*Plus ),其操作都会记录下来。细粒度审计的程序包DBMS_FGA具有 4 个过程:ADD_POLICY-添加使用谓词和审计列的审计策略DROP_POLICY- 删除审计策略DISABLE_POLICY - 禁用审计策略,但保留与表或视图关联的策略 ENABLE_POLICY - 启用策略3.1 使用细粒

37、度审计:1、创建测试表 :create table ACCOUNT(AACT_NO number not null,CUST_ID number not null,BALANCE number(15,2)-10精选文库);2、添加审计策略:beginDBMS_FGA.ADD_POLICY(object_schema => 'TEST',object_name=> 'ACCOUNT',policy_name=> 'ACCOUNT_ACCESS');end;这段代码必须由具有执行程序包 dbms_fga 权限的用户来执行。建议应该建

38、立一个专门的用户来专门负责添加审计策略。 该过程有许多参数,具体含义如下:OBJECT_SCHEMA对其定义了 FGA 策略的表或视图的所有者OBJECT_NAME表或视图的名称POLICY_NAME 策略的名称,由用户自定义 例如, ACCOUNTS_ACCESS POLICY_TEXT 在添加策略时指定的审计条件 例如, BALANCE >= 11000 POLICY_COLUMN审计列 例如, BALANCEENABLED如果启用则为 YES,否则为 NOPF_SCHEMA拥有策略处理器模块的模式(如果存在)PF_PACKAGE处理器模块的程序包名称(如果存在)PF_FUNCTIO

39、N处理器模块的过程名称(如果存在)3、在定义了策略以后,当用户以通常的方式对表进行查询时,如下所示:select * from bank.accounts;审计线索记录此操作。可以使用以下语句查看线索:select timestamp,db_user,os_user,object_schema,object_name,sql_textfrom dba_fga_audit_trail;TIMESTAMP DB_USER OS_USER OBJECT_ OBJECT_N SQL_TEXT- - - - - -26-MAR-10 TESTananda TESTACCOUNT select * fro

40、m account注意名为 DBA_FGA_AUDIT_TRAIL的新视图,它记录细粒度的访问信息。其中显示了审计事件的时间标记、 查询者的数据库用户 ID 、操作系统用户 ID 、查-11精选文库询中所使用表的名称和所有者,最后还有确切的查询语句。3.2审计列和审计条件:默认情况下会对被审计对象的所有列开启审计, 当任何一列被访问时都会纪录一条审计信息, 这在现实情况下不太常见, 因为这样会使审计信息表增长过快造成存储空间的压力,因此通常都会设置审计条件,当条件触发时再发起审计。例如我们可以对 Account 表的 Balance列设置审计条件,当访问该列并触发审计条件时才进行审计。如下所示

41、:begindbms_fga.add_policy (object_schema=>'TEST',object_name=>'ACCOUNT',policy_name=>'ACCOUNT_ACCESS',audit_column => 'BALANCE',audit_condition => 'BALANCE >= 11000');end;该策略将在访问 BALANCE列并且只有访问列值大于等于 11000 时才发起审计。因此根据该条件户有如下不同审计状态:SQL 语句审计状态s

42、elect balance from account;进行审计。用户选择了在添加策略时所指定的审计列 BALANCE。select * from account;进行审计。即使用户没有明确指定列BALANCE,* 也隐含地选择了它。select cust_id from account进行审计。即使用户没有明确指定列where balance < 10000;BALANCE,where 子句也隐含地选择了它。select cust_id from account;不进行审计。用户没有选择列 BALANCE。select count(*) from account;不进行审计。用户没有明确

43、或隐含地选择列BALANCE。更详细的设置策略如下:DBMS_FGA.ADD_POLICY (object_schema VARCHAR2,-schema 的名字 , 表或视图的拥有者object_name VARCHAR2, - 对象名 , 表或视图的名字policy_name VARCHAR2,- 审计策略名字 , 它和数据库中其他对象一样, 需要有一个不重复 , 唯一的名字audit_condition VARCHAR2,- 筛选条件比如可以选择哪些符合条件的操作被记录audit_column VARCHAR2,- 表中的某一列 , 可以只记录对表中某一列的操作 . 如果不指定表示审计所

44、有的列handler_schema VARCHAR2, - 是下面的 handler_module 的拥有者 , 其实也-12精选文库只能是创建 policy的用户 , 而上面的 object_schema 可以是任意用户handler_module VARCHAR2,- 可以是一个一个存储过程或函数, 但监测到任何一条符合条件的操作时执行它.enable BOOLEAN, -true或 false表示 policy是开启或关闭状态 , 如果是false表示不进行审计statement_typesVARCHAR2,- 表 示 哪 些 操 作 将 被 审 计 , 可 以 填 上select,in

45、sert,update,delete中的一个或几个audit_trailBINARY_INTEGER DEFAULT,-有参数 db,xml 表示审计到的信息保存到数据库中或是以xml 文件形式保存到磁盘上audit_column_opts BINARY_INTEGER IN DEFAULT); -这个选项其实只有在audt_column 中指定了某列时才起作用. 它有 any_columns,all_columns两个选项假如表中有eno,ename 两列 , 并在audit_column中指定了这两列, 那么选any_columns 表 示 只 要 操作 其 中 的 任意 一 列 都 将被

46、 记 录 , 而 这 里 指 定 all_columns 的话是说只有一个 sql 语句同时操作了这两列才被记录3.3 优化器模式:FGA 需要基于成本的优化 (CBO) ,以便正确地工作。在基于规则的优化时,只要用户从表中进行选择, 无论是否选择了相关的列, 都始终生成审计线索, 增加了误导项目出现的可能性。 为使 FGA 正确地工作,除了在实例级启用 CBO 之外,在 SQL 语句中应该没有规则暗示( hint ),并且必须至少使用评估选项对查询中的所有表进行分析。3.4 管理 FGA 策略 :要删除策略,您可以使用以下语句:begindbms_fga.drop_policy (objec

47、t_schema => 'TEST',object_name => 'ACCOUNT',policy_name => 'ACCOUNT_ACCESS');end;对于更改策略而言,没有随取随用的解决方案。要更改策略中的任何参数,必须删除策略,再使用更改后的参数添加策略。但是可以暂时禁用已有策略,如下所示:begindbms_fga.enable_policy (object_schema => 'TEST',object_name => 'ACCOUNT',policy_name =&

48、gt; 'ACCOUNT_ACCESS',enable => FALSE);end;-13精选文库若要重新启用它,可使用同一函数,只需将参数enable设置为 TRUE。3.5 FGA 数据字典视图:FGA 策略的定义位于数据字典视图 DBA_AUDIT_POLICIES中。该市途中各列含义如下:SESSION_ID审计会话标识符;与V$SESSION视图中的会话标识符不同TIMESTAMP审计记录生成时的时间标记DB_USER发出查询的数据库用户OS_USER操作系统用户USERHOST用户连接的机器的主机名CLIENT_ID客户标识符(如果由对打包过程dbms_ses

49、sion.set_identifier的调用所设置)EXT_NAME外部认证的客户名称,如LDAP 用户OBJECT_SCHEMA对该表的访问触发了审计的表所有者OBJECT_NAME 对该表的 SELECT 操作触发了审计的表名称触发审计的策略名称(如果对表定义了多个策略,则每个策略 POLICY_NAME 将插入一条记录。在此情况下,该列显示哪些行是由哪个策略插入的。 )SCN记录了审计的 Oracle系统更改号SQL_TEXT由用户提交的 SQL 语句SQL_BIND由 SQL 语句使用的绑定变量(如果存在)3.6 视图和 FGA:假定在 ACCOUNTS表上定义视图 VW_ACCOUN

50、T如下:create view vw_account as select * from account;现在,如果用户从视图中而不是从表中进行选择:select * from vw_account;您将看到以下审计线索:select object_name, sql_text from dba_fga_audit_trail;-14精选文库OBJECT_NAME SQL_TEXT- -ACCOUNTselect * from vw_account注意,是基表名称而不是视图名称出现在OBJECT_NAME列中,因为视图中的选择是从基表中进行选择。但是, SQL_TEXT列记录了用户提交的实际语句。如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论