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

下载本文档

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

文档简介

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

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

3、。数据库库审计记录是是在SYS模式的的AUD$表中中。2.2设置ORRACLE标标准审计:下列步骤可以设设置ORACCLE的标准准审计功能: 修改初始化参数数文件(innit.orra)如果使用服务器器参数文件使使用alteer sysstem sset = scopee=spfiile|booth,详情情参照1.11节中关于参参数文件的介介绍),设置置 AUDIIT_TRAAIL参数,并并且重启数据据库。AUDDIT_TRRAIL的取取值如下: DB/TRUE:启动审计功功能,并且把把审计结果存存放在数据库库的 SYSS.AUD$ 表中 OS:启动审审计功能,并并把审计结果果存放在操作作系统

4、的审计计信息中 DB_EXTENNDED:具具有DB/TTRUE的功功能,另外填填写AUD$的SQLBIIND和SQLTEEXT字段 NONNE/FALLSE:关闭闭审计功能 2.设置AUDDIT_TRRAIL参数数:如果设置 AUUDIT_TTRAIL = OS, 还需要修修改参数AUUDIT_FFILE_DDEST。 如果操操作系统支持持设置AUDDIT_TRRAIL=OOS,文件会会自动存放在在AUDITT_FILEE_DEST所指指定的目录下下,并且文件件名包含进程程的PID。 比如: AUDDIT_FIILE_DEEST = $ORACCLE_HOOME/rddbms/aaudit

5、$ lls -l $ORACCLE_HOOME/rddbms/aaudit -rw-rw- 1 ora922 ddba 881 MMar 177 09:557 oraa_132664.audd $ pps -eff|grepp 132664 oraa92 133264 113235 0 09:56:433 ? 0:00 orracleVV92 (DDESCRIIPTIONN=(LOCCAL=Y) SQLL sellect sspid, progrram, uusernaame frrom v$proceess; SPIID PROOGRAM USEERNAMEE - - - . 132664

6、ooracleefrhpp11 (TTNS V11-V3) oora92 3. 确认审计计相关的表是是否已经安装装 SQLPPLUS conneect / AS SYYSDBA SQLPPLUS selecct * ffrom ssys.auud$; - 没有有记录返回 SQLPPLUS selecct * ffrom ddba_auudit_ttrail; - 没有记记录返回 如果做上述述查询的时候候发现表不存存在,说明审审计相关的表表还没有安装装,需要安装装。 SQLPPLUS conneect / as syysdba SQLPPLUS $ORAACLE_HHOME/rrdbms/adm

7、inn/cataaudit.sql 审计表安装装在SYSTTEM表空间间。所以要确确保SYSTTEM表空间间又足够的空空间存放审计计信息。4. 关闭并重重启数据库 5. 设置所需需要的审计信信息 下面是一个例例子 SQL connnect ssystemm/manaager SQL grannt auddit syystem to sccott; SQL connnect sscott/tigerr SQL audiit sesssion; 停止审计: SQL noauudit ssessioon; 通常设置了标准准审计后都是是通过Auddit语句开开启审计,使使用noauudit语句句收回审

8、计。如如下所示:对修改SC表结结构或数据的的操作进行审审计可使用如如下语句:AUDIE AALTER,UUPDATEE ON SSC;取消对SC表的的一切审计可可使用如下语语句:NOAUDITT ALL ON SCC;2.3设置审计计的实例(对对试图尝试口口令的访问的的审计):以下是一个审计计的实例,用用于记录尝试试通过野蛮尝尝试法破译OORACLEE帐号口令的的例子:1. 修改审计计相关参数(参参照上面介绍绍的方法) 2. 重启数据据库 3. 设置审计计信息 SQLAUDITT ALL BY ACCCESS WHENEEVER NNOT SUUCCESSSFUL 4. 查询AUUD$ SQL

9、 seleect reeturnccode, actioon#, uuseridd, useerhostt, terrminall,timeestampp from auud$ RETUURNCODDE ACTIOON# USSERID USEERHOSTT TERRMINALL - - - - - 10117 1100 SCCOTT WPRRATA-BBR 10117 1100 SCCOTT WPRRATA-BBR 10117 1100 SCCOTT WPRRATA-BBR ORA-10017的含义义为错误的用用户名口令。通通过查看AUUD$表可以以清楚地看到到WPRATTA-BR尝尝试破译

10、SCCOTT的口口令。可以通通过下面一个个存储过程来来分析AUDD$表,找出出可疑的信息息:create or reeplacee procceduree AudiitLogiin(Sinnce Vaarcharr2,Timmes PLLS_Intteger)isUSER_IDD VARCCHAR2(20);cursor c1 iss seleect usserid,countt(*) ffrom ssys.auud$ whhere rreturnncode=10177 andd timeestampp#=too_datee(Sincce,yyyyy-mmm-dd) groupp by uus

11、eridd;cursor C2 ISS Seleect usserhosst, teerminaal,TO_CHAR(timesstamp#,YYYYY-MM-DD:HHH24:MII:SS) from sys.aaud$ WWHERE returrncodee=10117 annd timmestammp#=tto_datte(Sinnce,yyyyy-mmm-dd) ANDD USERRID=USSER_IDD;ct PLS_INTEGGER;V_USERHHOST VVARCHAAR2(400);V_TERMIINAL VVARCHAAR(40);V_DATE VARCHHAR2(440

12、);BEGIN OPEEN C1; dbmms_outtput.eenablee(10244000); LOOOP FFETCH C1 INNTO USSER_IDD,CT; EEXIT WWHEN CC1%NOTTFOUNDD; IIF(CT=TIMEES) THHEN DBMSS_OUTPPUT.PUUT_LINNE(USSER BRROKEN ALARMM:|UUSER_IID); OPENN C2; LOOPP FEETCH CC2 INTTO V_UUSERhOOST,V_TERMIINAL,VV_DATEE; DBBMS_OUUTPUT.PUT_LLINE(CCHR(9)|HOOS

13、T:|V_USSERHOSST|,TERM:|V_TERMIINAL|,TIMME:|V_DATTE); EXXIT WHHEN C22%NOTFFOUND; END LOOP; closse c2; EEND IFF; ENDD LOOPP; cloose c11;END;/一下是执行结果果:SQLsett servverouttput oon;SQL exxecutee audiitlogiin(20004-011-01,2);USER BRROKEN ALARMM:SYS HOSTT:,TERRM:XUJJI,TIMME:20004-09-22:111:08:000 HOSTT:,TER

14、RM:XUJJI,TIMME:20004-09-22:111:08:001 HOSTT:,TERRM:XUJJI,TIMME:20004-09-22:111:09:229 HOSTT:,TERRM:XUJJI,TIMME:20004-09-22:111:09:229PL/SQL 过程已成功功完成。2.4将审计相相关的表移动动到其他表空空间:由于AUD$表表等审计相关关的表存放在在SYSTEEM表空间,因因此为了不影影响系统的性性能,保护SSYSTEMM表空间,最最好把AUDD$移动到其其他的表空间间上。可以使使用下面的语语句来进行移移动:sqlconnnect / as sysdbba;sql

15、altter taable aaud$ mmove ttablesspace ;sqlaltter inndex II_aud11 rebuuild oonlinee tabllespacce ;SQL allter ttable auditt$ movve tabblespaace ;SQL allter iindex i_auddit reebuildd onliine taablesppace ;SQL allter ttable auditt_actiions mmove ttablesspace ;SQL allter iindex i_auddit_acctionss rebuui

16、ld oonlinee tabllespacce ;细粒度审计: 细粒度度审计 (FFGA)(通通过 Oraacle9ii 引入)可可以理解为“基基于政策的审审计”。与标标准的审计功功能相反,FFGA 可用用于指定生成成审计记录必必需的条件:FGA 政策通通过使用“ddbms_ffga”程序序包以编程方方式绑定到对对象(表、视视图)。类似似于用于通过过 VPD (dbmms_rlss) 进行行访问控制的的程序包,它它允许您创建建任何需要的的条件,例如如:仅当以下下条件为真时时审计事件: 在早上九点到下下午六点之间间或在星期六六和星期日对对某个表进行行了访问。 使用了公司网络络外部的某个个 IP

17、 地地址。 选定或更新了特特定列。 使用了该列的特特定值。 这将创建更有意意义的审计线线索,因为无无需记录每一一个人对表的的每一次访问问。从 Orracle 数据库 110g 开始始,FGA 支持在一个个策略中使用用“选择”、“插插入”、“更更新”和“删删除”语句的的任意组合。事事实上,绑定定到表的 FFGA 政策策简化了审计计政策的管理理,因为这将将只需在数据据库中对其更更改一次,不不用在每个应应用程序中一一次次进行。此此外。无论用用户通过何种种方式连接至至数据库(通通过应用程序序、Web 接口或通过过 SQL*Plus),其其操作都会记记录下来。3.1 使用细细粒度审计: 1、创建建测试表

18、: creaate tablee ACCOUUNT(AACT_NNO nummber not null, CUUST_IDD numbber not null, BAALANCEE numbber(15,2); 2、添加加审计策略: begiin DBMMS_FGAA.DROPP_POLIICY(obbject_schemma = TESTT, objeect_naame = AACCOUNNT, poliicy_naame = AACCOUNNT_ACCCESS);end;这段代码必须由由具有执行程程序包 dbbms_fgga 权限的的用户来执行行。建议应该该建立一个专专门的用户来来专门负责

19、添添加审计策略略。该过程有有许多参数,具具体含义如下下:OBJECT_SCHEMMA对其定义了 FFGA 策略略的表或视图图的所有者OBJECT_NAME表或视图的名称称POLICY_NAME策略的名称,由由用户自定义义 例如如,ACCOOUNTS_ACCESSSPOLICY_TEXT在添加策略时指指定的审计条条件 例例如,BALLANCE = 111000POLICY_COLUMMN审计列 例例如,BALLANCEENABLEDD如果启用则为 YES,否否则为 NOO PF_SCHEEMA拥有策略处理器器模块的模式式(如果存在在)PF_PACKKAGE处理器模块的程程序包名称(如如果存在)P

20、F_FUNCCTION处理器模块的过过程名称(如如果存在)3、在定义了策策略以后,当当用户以通常常的方式对表表进行查询时时,如下所示示: select * froom bannk.acccountss; 审计线索记录此此操作。可以以使用以下语语句查看线索索: select timesstamp, db_userr,os_userr,object_schemma,object_name,sql_texxtfrom dbba_fgaa_audiit_traail;TIMESTAAMP DBB_USERR OS_UUSER OOBJECTT_ OBJJECT_NN SQL_TEXT- - - - -

21、 -26-MAR-10 TEST anaanda TEST ACCCOUNT selecct * ffrom aaccounnt注意名为 DBBA_FGAA_AUDIIT_TRAAIL 的新新视图,它记记录细粒度的的访问信息。其其中显示了审审计事件的时时间标记、查查询者的数据据库用户 IID、操作系系统用户 IID、查询中中所使用表的的名称和所有有者,最后还还有确切的查查询语句。3.2 审计列列和审计条件件:默认情况下会对对被审计对象象的所有列开开启审计,当当任何一列被被访问时都会会纪录一条审审计信息,这这在现实情况况下不太常见见,因为这样样会使审计信信息表增长过过快造成存储储空间的压力力,因

22、此通常常都会设置审审计条件,当当条件触发时时再发起审计计。例如我们们可以对Acccountt表的Ballance列列设置审计条条件,当访问问该列并触发发审计条件时时才进行审计计。如下所示示:begindbms_fgga.addd_poliicy (object_schemma=TTEST,object_name=ACCCOUNT,policy_name=ACCCOUNT_ACCESSS,audit_ccolumnn = BALANNCE,audit_ccondittion = BAALANCEE = 111000 );end;该策略将在访问问BALANNCE列并且且只有访问列列值大于等于于11

23、0000时才发起审审计。因此根根据该条件户户有如下不同同审计状态:SQL 语句审计状态select balannce frrom acccountt;进行审计。用户户选择了在添添加策略时所所指定的审计计列 BALLANCE。select * froom acccount;进行审计。即使使用户没有明明确指定列 BALANNCE,* 也隐含地选选择了它。select cust_id frrom acccountt wherre ballance TESTT,object_name = AACCOUNNT,policy_name = AACCOUNNT_ACCCESS );end;对于更改策略而而言

24、,没有随随取随用的解解决方案。要要更改策略中中的任何参数数,必须删除除策略,再使使用更改后的的参数添加策策略。但是可可以暂时禁用用已有策略,如如下所示:begindbms_fgga.enaable_ppolicyy (object_schemma = TESTT,object_name = AACCOUNNT,policy_name = AACCOUNNT_ACCCESS,enable = FAALSE );end;若要重新启用它它,可使用同同一函数,只只需将参数 enablle 设置为为 TRUEE。3.5 FGAA 数据字典典视图:FGA 策略的的定义位于数数据字典视图图 DBA_AUDI

25、TT_POLIICIES 中。该市途途中各列含义义如下:SESSIONN_ID审计会话标识符符;与 V$SESSIION 视图图中的会话标标识符不同TIMESTAAMP审计记录生成时时的时间标记记DB_USERR发出查询的数据据库用户OS_USERR操作系统用户USERHOSST用户连接的机器器的主机名CLIENT_ID客户标识符(如如果由对打包包过程 dbbms_seessionn.set_identtifierr 的调用所所设置)EXT_NAMME外部认证的客户户名称,如 LDAP 用户OBJECT_SCHEMMA对该表的访问触触发了审计的的表所有者OBJECT_NAME对该表的 SEEL

26、ECT 操作触发了了审计的表名名称POLICY_NAME触发审计的策略略名称(如果果对表定义了了多个策略,则则每个策略将将插入一条记记录。在此情情况下,该列列显示哪些行行是由哪个策策略插入的。)SCN记录了审计的 Oraclle 系统更更改号SQL_TEXXT由用户提交的 SQL 语语句 SQL_BINND由 SQL 语语句使用的绑绑定变量(如如果存在)3.6视图和 FGA:假定在 ACCCOUNTSS 表上定义义视图 VWW_ACCOOUNT 如如下: create view vw_acccountt as sselectt * frrom acccountt;现在,如果用户户从视图中而而不

27、是从表中中进行选择: select * froom vw_accouunt;您将看到以下审审计线索: select objecct_namme, sqql_texxt froom dbaa_fga_auditt_traiil;OBJECT_NAME SQL_TTEXT- -ACCOUNTT sselectt * frrom vww_accoount注意,是基表名名称而不是视视图名称出现现在 OBJJECT_NNAME 列列中,因为视视图中的选择择是从基表中中进行选择。但但是,SQLL_TEXTT 列记录了了用户提交的的实际语句。如果只希望审计计对视图的查查询而不是对对表的查询,可可以对视图本本

28、身建立策略略。通过将视视图名称而不不是表的名称称传递给打包包的过程 ddbms_ffga.addd_pollicy 中中的参数 oobjectt_namee,可以完成成这项工作。随随后 DBAA_FGA_AUDITT_TRAIIL 中的 OBJECCT_NAMME 列将显显示视图的名名称,并且不不会出现有关关表访问的附附加记录。3.7 其它用用途: 除了记录对表的的选择访问,FFGA 还可可用于某些其其它情况: 可以对数据仓库库使用 FGGA,以捕获获特定的表、视视图或物化视视图上发生的的所有语句,这这有助于计划划索引。不需需要到 V$SQL 视视图去获取这这些信息。即即使 SQLL 语句已经

29、经超出了 VV$SQL 的期限,在在 FGA 审计线索中中将会始终提提供它。 由于 FGA 捕获绑定变变量,它可以以帮助了解绑绑定变量值的的模式,这有有助于设计直直方图集合等等。 可以向审计者或或 DBA 发送警告,这这有助于跟踪踪恶意应用程程序。 由于 FGA 可以作为 SELECCT 语句的的触发器,可可以在需要这这种功能的任任何时候使用用它。FGA在10GG中的增强:3.8.1 对对所有DMLL的审计: 在9i中中FGA只能能对Seleect语句进进行审计,而而不能对其他他DML语句句(Updaate、Deelete、IInsertt)进行审计计,如果想对对其他DMLL语句进行审审计那么

30、只能能采取数据库库处发起的形形式来实现。在在10G中实实现了对所有有DML语句句的审计,如如下所示:begin dbmss_fga.add_ppolicyy ( oobjectt_scheema = TTEST, oobjectt_namee = AACCOUNNT, ppolicyy_namee = AACCOUNNT_ACCCESS, aaudit_colummn = BBALANCCE, aaudit_condiition = BBALANCCE = 3000, sstatemment_ttypes = IINSERTT, UPDDATE, DELETTE, SEELECT );end;

31、通过stateement_typess = INSERRT, UPPDATE, DELEETE, SSELECTT参数制定定了新的策略略,该策略可可以对Sellect之外外的所有DMML操作进行行审计。因此此根据新的审审计条件和审审计策略会有有如下不同情情况:第 1 种情况况 之前:BALAANCE = 10000 用户发出: update accouunt seet ballance = 12000 wheere ACCCOUNTT_NO = .旧的和新的 bbalancce 都小于于 3,0000,审计条条件不满足;因此这条语语句将不会被被审计。第 2 种情况况 之前:BALAANCE =

32、 10000 用户发出: update accouunt seet ballance = 32000 wheere ACCCOUNTT_NO = .新的 balaance 大大于 3,0000,审计计条件满足;因此这条语语句将 会被被审计。 第 3 种情况况 之前:BALAANCE = 32000 用户发出: update accouunt seet ballance = 12000 wheere ACCCOUNTT_NO = .新的 balaance 小小于 3,0000,但旧旧的 ballance 大于 3,000。因因此审计条件件满足,这条条语句将被审审计。 第 4 种情况况 用户插入一

33、行,其其中有 BAALANCEE = 30000 结果果为 FALLSE),这这条语句不会会被审计。重重要注意事项项:假设该列列有一个大于于 3,0000 的默认认值时,这条条语句仍然不不会被审计,即即使插入行的的 balaance 列列值大于 33000。 注意对于DDML语句的的审计是由一一个自动事务务插入的;即即使回滚 DDML语句的操作,审计记录也将将存在不会跟跟着回滚。3.8.2制定定相关的列策略略:在表 ACCOOUNT 上上定义的一个个策略,如下下: begin dbmss_fga.add_ppolicyy ( oobjectt_scheema = TTEST, oobjectt

34、_namee = AACCOUNNT, ppolicyy_namee = AACCOUNNT_SELL, aaudit_colummn = AACCOUNNT_NO, BALAANCE, aaudit_condiition = BBALANCCE = 3000, sstatemment_ttypes = SSELECTT );end;在某些情况下,列列的组合可能能很重要,而而不是某个特特定的列。以以上策略是在在 ACCOOUNT_NNO 和 BBALANCCE 上定义义的。那么如果用户户发出以下语语句: select balannce frrom acccountts wheere accco

35、untt_no = 99955;这条语句将被审审计,因为 balannce 列被被选中,且余余额为 3,200,大大于 3,0000,满足足审计条件。如果一个用户想想查出在银行行的总余额,他发出: select sum(bbalancce) frrom acccountt;这条查询几乎没没什么害处;它不明确指指出帐户所有有者和帐户余余额。因此安全策略略可能不会要要求审计这条条查询。不过,这条条查询 select balannce frrom acccountt wherre acccount_no = 9995必须被审计;因因为它明确地地指定了一个个帐户。默认认地,所有语语句都被审计计(无论使

36、用用了什么样的的列组合)。这这将创建大量量不需要的审审计线索项目目,并可能带带来一些空间间限制问题。为为了限制它们们,您可以指指定仅当在查查询中使用了了希望的列组组合时才开始始审计。当定定义策略时,您您可以使用一一个新的参数数: audit_ccolumnn_optss = DDBMS_FFGA.ALLL_COLLUMNS这个参数将使策策略仅当列 ACCOUUNT_NOO 和 BAALANCEE 在查询中中都被访问时时才创建审计计线索项目。例例如,以下查查询将产生一一个审计线索索项目。 select accouunt_noo, ballance from accouunt;但这条查询不会会产生

37、审计线线索项目。 select accouunt_noo fromm accoount;使用这个参数将将把审计的数数量限制在一一个更易管理理的大小。如如果希望采用用默认的行为为 即任任意列被选中中时都进行审审计,那么您您可以对同一一参数的使用用不同值。 audit_ccolumnn_optss = DDBMS_FFGA.ANNY_COLLUMNS3.8.3 与与标准审计的的结合: 通过制定定如下审计策策略实现标准准审计与细粒粒度审计的结结合begin dbmss_fga.add_ppolicyy ( oobjectt_scheema = TESTT, oobjectt_namee = ACCO

38、OUNT, ppolicyy_namee = ACCOOUNT_SSEL, aaudit_colummn = ACCOOUNT_NNO, BAALANCEE, aaudit_condiition = BALAANCE = 30000, sstatemment_ttypes = SELEECT, aaudit_colummn_optts = DBMS_FGA.AALL_COOLUMNSS, aaudit_traill = DB );end;通过指定auddit_trrail = DB参参数实现在细细粒度审计时时开启标准审审计。在 OOraclee Dataabase 10g 中,标准审计也得得到了巨大的的改进。通过过 AUDIIT 命令执执行标准审计,它它现在能够捕捕获大量

温馨提示

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

评论

0/150

提交评论