首页 Oracle审计功能精编版

Oracle审计功能精编版

举报
开通vip

Oracle审计功能精编版……………………………………………………………精品资料推荐……………………&helli...

Oracle审计功能精编版
……………………………………………………………精品资料推荐…………………………………………………Oracle审计功能1、审计分类:Oracle中审计总体上可分为“ 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 审计”和“细粒度审计”后者也称为“基于政策的审计”,在Oracle10G之后功能得到很大增强。其中标准审计可分为用户级审计和系统级审计。用户级审计是任何Oracle用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作。系统级审计只能由DBA设置,用以监测成功或失败的登录要求、监测GRANT和REVOKE操作以及其他数据库级权限下的操作。2、标准审计:2.1分类:在ORACLE中分别支持以下三种标准审计类型:         语句审计,对某种类型的SQL语句审计,不指定结构或对象。         特权审计,对执行相应动作的系统特权的使用审计。         对象审计,对一特殊模式对象上的指定语句的审计。这三种标准审计类型分别对如下3方面进行审计:         审计语句的成功执行、不成功执行,或者其两者。         对每一用户会话审计语句执行一次或者对语句每次执行审计一次。         对全部用户或指定用户的活动的审计。当数据库的审计功能打开后,在语句执行阶段产生审计记录。审计记录包含有审计的操作、用户执行的操作、操作的日期和时间等信息。审计记录可存在数据字典表(称为审计记录)或操作系统审计记录中。数据库审计记录是在SYS模式的AUD$表中。2.2设置ORACLE标准审计:下列步骤可以设置ORACLE的标准审计功能:1.修改初始化参数文件(init<sid>.ora)如果使用服务器参数文件使用altersystemset<parameter>=<value>scope=spfile|both,详情参照1.1节中关于参数文件的介绍),设置AUDIT_TRAIL参数,并且重启数据库。AUDIT_TRAIL的取值如下:        DB/TRUE:启动审计功能,并且把审计结果存放在数据库的SYS.AUD$表中        OS:启动审计功能,并把审计结果存放在操作系统的审计信息中        DB_EXTENDED:具有DB/TRUE的功能,另外填写AUD$的SQLBIND和SQLTEXT字段        NONE/FALSE:关闭审计功能2.设置AUDIT_TRAIL参数:如果设置AUDIT_TRAIL=OS,还需要修改参数AUDIT_FILE_DEST。如果操作系统支持设置AUDIT_TRAIL=OS,文件会自动存放在AUDIT_FILE_DEST所指定的目录下,并且文件名包含进程的PID。比如:AUDIT_FILE_DEST=$ORACLE_HOME/rdbms/audit$ls-l$ORACLE_HOME/rdbms/audit-rw-rw----1ora92dba881Mar1709:57ora_13264.aud$ps-ef|grep13264ora921326413235009:56:43?0:00oracleV92(DESCRIPTION=(LOCAL=Y)SQL>selectspid,program,usernamefromv$process;SPIDPROGRAMUSERNAME---------------------------------------------------------------...13264oracle@frhp11(TNSV1-V3)ora923.确认审计相关的表是否已经安装SQLPLUS>connect/ASSYSDBASQLPLUS>select*fromsys.aud$;--没有记录返回SQLPLUS>select*fromdba_audit_trail;--没有记录返回如果做上述查询的时候发现表不存在,说明审计相关的表还没有安装,需要安装。SQLPLUS>connect/assysdbaSQLPLUS>@$ORACLE_HOME/rdbms/admin/cataudit.sql审计表安装在SYSTEM表空间。所以要确保SYSTEM表空间又足够的空间存放审计信息。4.关闭并重启数据库5.设置所需要的审计信息下面是一个例子SQL>connectsystem/managerSQL>grantauditsystemtoscott;SQL>connectscott/tigerSQL>auditsession;停止审计:SQL>noauditsession;通常设置了标准审计后都是通过Audit语句开启审计,使用noaudit语句收回审计。如下所示:对修改SC表结构或数据的操作进行审计可使用如下语句:AUDIEALTER,UPDATEONSC;取消对SC表的一切审计可使用如下语句:NOAUDITALLONSC;2.3设置审计的实例(对试图尝试口令的访问的审计):以下是一个审计的实例,用于记录尝试通过野蛮尝试法破译ORACLE帐号口令的例子:1.修改审计相关参数(参照上面介绍的方法)2.重启数据库3.设置审计信息SQL>AUDITALLBYACCESSWHENEVERNOTSUCCESSFUL4.查询AUD$SQL>selectreturncode,action#,userid,userhost,terminal,timestampfromaud$RETURNCODEACTION#USERIDUSERHOSTTERMINAL--------------------------------------------------------------------1017100SCOTTWPRATA-BR1017100SCOTTWPRATA-BR1017100SCOTTWPRATA-BRORA-1017的含义为错误的用户名口令。通过查看AUD$表可以清楚地看到WPRATA-BR尝试破译SCOTT的口令。可以通过下面一个存储过程来分析AUD$表,找出可疑的信息:createorreplaceprocedureAuditLogin(SinceVarchar2,TimesPLS_Integer)isUSER_IDVARCHAR2(20);cursorc1isselectuserid,count(*)fromsys.aud$wherereturncode='1017'andtimestamp#>=to_date(Since,'yyyy-mm-dd')groupbyuserid;cursorC2ISSelectuserhost,terminal,TO_CHAR(timestamp#,'YYYY-MM-DD:HH24:MI:SS')fromsys.aud$WHEREreturncode='1017'andtimestamp#>=to_date(Since,'yyyy-mm-dd')ANDUSERID=USER_ID;ctPLS_INTEGER;V_USERHOSTVARCHAR2(40);V_TERMINALVARCHAR(40);V_DATEVARCHAR2(40);BEGINOPENC1;dbms_output.enable(1024000);LOOPFETCHC1INTOUSER_ID,CT;EXITWHENC1%NOTFOUND;IF(CT>=TIMES)THENDBMS_OUTPUT.PUT_LINE('USERBROKENALARM:'||USER_ID);OPENC2;LOOPFETCHC2INTOV_USERhOST,V_TERMINAL,V_DATE;DBMS_OUTPUT.PUT_LINE(CHR(9)||'HOST:'||V_USERHOST||',TERM:'||V_TERMINAL||',TIME:'||V_DATE);EXITWHENC2%NOTFOUND;ENDLOOP;closec2;ENDIF;ENDLOOP;closec1;END;/一下是执行结果:SQL>setserveroutputon;SQL>executeauditlogin('2004-01-01',2);USERBROKENALARM:SYSHOST:,TERM:XUJI,TIME:2004-09-22:11:08:00HOST:,TERM:XUJI,TIME: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.4将审计相关的表移动到其他表空间:由于AUD$表等审计相关的表存放在SYSTEM表空间,因此为了不影响系统的性能,保护SYSTEM表空间,最好把AUD$移动到其他的表空间上。可以使用下面的语句来进行移动:sql>connect/assysdba;sql>altertableaud$movetablespace<newtablespace>;sql>alterindexI_aud1rebuildonlinetablespace<newtablespace>;SQL>altertableaudit$movetablespace<newtablespace>;SQL>alterindexi_auditrebuildonlinetablespace<newtablespace>;SQL>altertableaudit_actionsmovetablespace<newtablespace>;3、SQL>alterindexi_audit_actionsrebuildonlinetablespace<newtablespace>;4、细粒度审计:细粒度审计(FGA)(通过Oracle9i引入)可以理解为“基于政策的审计”。与标准的审计功能相反,FGA可用于指定生成审计记录必需的条件:FGA政策通过使用“dbms_fga”程序包以编程方式绑定到对象(表、视图)。类似于用于通过VPD("dbms_rls")进行访问控制的程序包,它允许您创建任何需要的条件,例如:仅当以下条件为真时审计事件:·在早上九点到下午六点之间或在星期六和星期日对某个表进行了访问。·使用了公司网络外部的某个IP地址。·选定或更新了特定列。·使用了该列的特定值。这将创建更有意义的审计线索,因为无需记录每一个人对表的每一次访问。从Oracle数据库10g开始,FGA支持在一个策略中使用“选择”、“插入”、“更新”和“删除”语句的任意组合。事实上,绑定到表的FGA政策简化了审计政策的管理,因为这将只需在数据库中对其更改一次,不用在每个应用程序中一次次进行。此外。无论用户通过何种方式连接至数据库(通过应用程序、Web接口或通过SQL*Plus),其操作都会记录下来。3.1使用细粒度审计:1、创建测试表:createtableACCOUNT(AACT_NOnumbernotnull,CUST_IDnumbernotnull,BALANCEnumber(15,2));2、添加审计策略:beginDBMS_FGA.DROP_POLICY(object_schema=>'TEST',object_name=>'ACCOUNT',policy_name=>'ACCOUNT_ACCESS');end;这段代码必须由具有执行程序包dbms_fga权限的用户来执行。建议应该建立一个专门的用户来专门负责添加审计策略。该过程有许多参数,具体含义如下: OBJECT_SCHEMA 对其定义了FGA策略的表或视图的所有者 OBJECT_NAME 表或视图的名称 POLICY_NAME 策略的名称,由用户自定义—例如,ACCOUNTS_ACCESS POLICY_TEXT 在添加策略时指定的审计条件—例如,BALANCE>=11000 POLICY_COLUMN 审计列—例如,BALANCE ENABLED 如果启用则为YES,否则为NO PF_SCHEMA 拥有策略处理器模块的模式(如果存在) PF_PACKAGE 处理器模块的程序包名称(如果存在) PF_FUNCTION 处理器模块的过程名称(如果存在)3、在定义了策略以后,当用户以通常的方式对表进行查询时,如下所示:select*frombank.accounts;审计线索记录此操作。可以使用以下语句查看线索:selecttimestamp,db_user,os_user,object_schema,object_name,sql_textfromdba_fga_audit_trail;TIMESTAMPDB_USEROS_USEROBJECT_OBJECT_NSQL_TEXT------------------------------------------------------------26-MAR-10TESTanandaTESTACCOUNTselect*fromaccount注意名为DBA_FGA_AUDIT_TRAIL的新视图,它记录细粒度的访问信息。其中显示了审计事件的时间标记、查询者的数据库用户ID、操作系统用户ID、查询中所使用表的名称和所有者,最后还有确切的查询语句。3.2审计列和审计条件:默认情况下会对被审计对象的所有列开启审计,当任何一列被访问时都会纪录一条审计信息,这在现实情况下不太常见,因为这样会使审计信息表增长过快造成存储空间的压力,因此通常都会设置审计条件,当条件触发时再发起审计。例如我们可以对Account表的Balance列设置审计条件,当访问该列并触发审计条件时才进行审计。如下所示: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语句 审计状态 selectbalancefromaccount; 进行审计。用户选择了在添加策略时所指定的审计列BALANCE。 select*fromaccount; 进行审计。即使用户没有明确指定列BALANCE,*也隐含地选择了它。 selectcust_idfromaccountwherebalance<10000; 进行审计。即使用户没有明确指定列BALANCE,where子句也隐含地选择了它。 selectcust_idfromaccount; 不进行审计。用户没有选择列BALANCE。 selectcount(*)fromaccount; 不进行审计。用户没有明确或隐含地选择列BALANCE。3.3优化器模式:FGA需要基于成本的优化(CBO),以便正确地工作。在基于规则的优化时,只要用户从表中进行选择,无论是否选择了相关的列,都始终生成审计线索,增加了误导项目出现的可能性。为使FGA正确地工作,除了在实例级启用CBO之外,在SQL语句中应该没有规则暗示(hint),并且必须至少使用评估选项对查询中的所有表进行分析。3.4管理FGA策略:要删除策略,您可以使用以下语句:begindbms_fga.drop_policy(object_schema=>'TEST',object_name=>'ACCOUNT',policy_name=>'ACCOUNT_ACCESS');end;对于更改策略而言,没有随取随用的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。要更改策略中的任何参数,必须删除策略,再使用更改后的参数添加策略。但是可以暂时禁用已有策略,如下所示:begindbms_fga.enable_policy(object_schema=>'TEST',object_name=>'ACCOUNT',policy_name=>'ACCOUNT_ACCESS',enable=>FALSE);end;若要重新启用它,可使用同一函数,只需将参数enable设置为TRUE。3.5FGA数据字典视图:FGA策略的定义位于数据字典视图DBA_AUDIT_POLICIES中。该市途中各列含义如下: SESSION_ID 审计会话标识符;与V$SESSION视图中的会话标识符不同 TIMESTAMP 审计记录生成时的时间标记 DB_USER 发出查询的数据库用户 OS_USER 操作系统用户 USERHOST 用户连接的机器的主机名 CLIENT_ID 客户标识符(如果由对打包过程dbms_session.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_ACCOUNT如下:createviewvw_accountasselect*fromaccount;现在,如果用户从视图中而不是从表中进行选择:select*fromvw_account;您将看到以下审计线索:selectobject_name,sql_textfromdba_fga_audit_trail;OBJECT_NAMESQL_TEXT------------------------------------------------------------ACCOUNTselect*fromvw_account注意,是基表名称而不是视图名称出现在OBJECT_NAME列中,因为视图中的选择是从基表中进行选择。但是,SQL_TEXT列记录了用户提交的实际语句。如果只希望审计对视图的查询而不是对表的查询,可以对视图本身建立策略。通过将视图名称而不是表的名称传递给打包的过程dbms_fga.add_policy中的参数object_name,可以完成这项工作。随后DBA_FGA_AUDIT_TRAIL中的OBJECT_NAME列将显示视图的名称,并且不会出现有关表访问的附加记录。3.7其它用途:除了记录对表的选择访问,FGA还可用于某些其它情况:·可以对数据仓库使用FGA,以捕获特定的表、视图或物化视图上发生的所有语句,这有助于 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 索引。不需要到V$SQL视图去获取这些信息。即使SQL语句已经超出了V$SQL的期限,在FGA审计线索中将会始终提供它。·由于FGA捕获绑定变量,它可以帮助了解绑定变量值的模式,这有助于 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 直方图集合等。·可以向审计者或DBA发送警告,这有助于跟踪恶意应用程序。由于FGA可以作为SELECT语句的触发器,可以在需要这种功能的任何时候使用它。3.8FGA在10G中的增强:3.8.1对所有DML的审计:在9i中FGA只能对Select语句进行审计,而不能对其他DML语句(Update、Delete、Insert)进行审计,如果想对其他DML语句进行审计那么只能采取数据库处发起的形式来实现。在10G中实现了对所有DML语句的审计,如下所示:begindbms_fga.add_policy(object_schema=>'TEST',object_name=>'ACCOUNT',policy_name=>'ACCOUNT_ACCESS',audit_column=>'BALANCE',audit_condition=>'BALANCE>=3000',statement_types=>'INSERT,UPDATE,DELETE,SELECT');end;通过statement_types=>'INSERT,UPDATE,DELETE,SELECT'参数制定了新的策略,该策略可以对Select之外的所有DML操作进行审计。因此根据新的审计条件和审计策略会有如下不同情况:第1种情况之前:BALANCE=1000用户发出:updateaccountsetbalance=1200whereACCOUNT_NO=....旧的和新的balance都小于3,000,审计条件不满足;因此这条语句将不会被审计。第2种情况之前:BALANCE=1000用户发出:updateaccountsetbalance=3200whereACCOUNT_NO=....新的balance大于3,000,审计条件满足;因此这条语句将会被审计。第3种情况之前:BALANCE=3200用户发出:updateaccountsetbalance=1200whereACCOUNT_NO=....新的balance小于3,000,但旧的balance大于3,000。因此审计条件满足,这条语句将被审计。第4种情况用户插入一行,其中有BALANCE<3000。insertintoaccountvalues(9999,1200,'X');因为balance1,200不满足审计条件,所以这条语句不被审计。如果balance列大于或等于3,000,它将被审计。第5种情况用户插入一行,其中balance的值为空。insertintoaccount(account_no,status)values(9997,'X');因为balance为空,该列没有任何默认值,所以审计条件不满足(比较NULL>=3000结果为FALSE),这条语句不会被审计。重要注意事项:假设该列有一个大于3,000的默认值时,这条语句仍然不会被审计,即使插入行的balance列值大于3000。注意对于DML语句的审计是由一个自动事务插入的;即使回滚DML语句的操作,审计记录也将存在不会跟着回滚。3.8.2制定相关的列策略:在表ACCOUNT上定义的一个策略,如下:begindbms_fga.add_policy(object_schema=>'TEST',object_name=>'ACCOUNT',policy_name=>'ACCOUNT_SEL',audit_column=>'ACCOUNT_NO,BALANCE',audit_condition=>'BALANCE>=3000',statement_types=>'SELECT');end;在某些情况下,列的组合可能很重要,而不是某个特定的列。以上策略是在ACCOUNT_NO和BALANCE上定义的。那么如果用户发出以下语句:selectbalancefromaccountswhereaccount_no=9995;这条语句将被审计,因为balance列被选中,且余额为3,200,大于3,000,满足审计条件。如果一个用户想查出在银行的总余额,他发出:selectsum(balance)fromaccount;这条查询几乎没什么害处;它不明确指出帐户所有者和帐户余额。因此安全策略可能不会要求审计这条查询。不过,这条查询selectbalancefromaccountwhereaccount_no=9995必须被审计;因为它明确地指定了一个帐户。默认地,所有语句都被审计(无论使用了什么样的列组合)。这将创建大量不需要的审计线索项目,并可能带来一些空间限制问题。为了限制它们,您可以指定仅当在查询中使用了希望的列组合时才开始审计。当定义策略时,您可以使用一个新的参数:audit_column_opts=>DBMS_FGA.ALL_COLUMNS这个参数将使策略仅当列ACCOUNT_NO和BALANCE在查询中都被访问时才创建审计线索项目。例如,以下查询将产生一个审计线索项目。selectaccount_no,balancefromaccount;但这条查询不会产生审计线索项目。selectaccount_nofromaccount;使用这个参数将把审计的数量限制在一个更易管理的大小。如果希望采用默认的行为—即任意列被选中时都进行审计,那么您可以对同一参数的使用不同值。audit_column_opts=>DBMS_FGA.ANY_COLUMNS3.8.3与标准审计的结合:通过制定如下审计策略实现标准审计与细粒度审计的结合begindbms_fga.add_policy(object_schema=>'TEST',object_name=>'ACCOUNT',policy_name=>'ACCOUNT_SEL',audit_column=>'ACCOUNT_NO,BALANCE',audit_condition=>'BALANCE>=3000',statement_types=>'SELECT',audit_column_opts=>DBMS_FGA.ALL_COLUMNS,audit_trail=>DB);end;通过指定audit_trail=>DB参数实现在细粒度审计时开启标准审计。在OracleDatabase10g中,标准审计也得到了巨大的改进。通过AUDIT命令执行标准审计,它现在能够捕获大量其它有用的信息。在内容和功能方面,标准审计类似于细粒度审计。然而,作为一个数据库管理员,有兴趣知道所有的审计项目,而不只是一个审计项目。一个新的视图,DBA_COMMON_AUDIT_TRAIL,结合了标准审计线索和FGA审计线索。用以下查询来检查它们二者如:select*fromdba_common_audit_trail;通过这条查询可以同时查看两种审计收集的信息。四、FGA审计和标准审计的差异:·标准审计必须用参数AUDIT_TRAIL在数据库级启用。这个参数不是动态的;您必须重启数据库来使其生效。相比而言,FGA不需要任何参数修改。·一旦被设置在一个对象上,标准审计将保持在那里。要解除它,必须用NOAUDIT命令删除审计选项。这可能很不方便,因为在一个表上丢弃审计选项也将丢弃元数据信息。然而,FGA可以临时禁用和启用,不丢失任何元数据信息。·FGA只能够处理四种类型的语句:SELECT、INSERT、UPDATE和DELETE。相比而言,常规审计可以处理其它许多语句和权限,甚至会话连接和断开。·标准审计每次会话只创建一条记录(按会话)或每次访问对象创建一条记录(按访问)这种占用资源很少的方式对于控制审计线索表中的空间非常重要。FGA并不是同样节省资源;它每次访问运行一次—使得线索更大。·通过记录线索,标准审计可以用来检测任何中断企图,如果企图没有成功,则将产生错误代码。而FGA不能。·标准审计可以写数据库表或OS文件。后者在审计员(不是数据库管理员)能够访问线索时非常有用。在Windows下,非数据库审计线索记录在事件日志中,并且可以用不同的方式对其进行访问。这个选项保护了审计线索的完整性。然而,FGA日志仅写到数据库表FGA_LOG$中。可以在FGA中创建用户自定义的审计处理程序来写OS文件,但它们的完整性不能保证。·标准审计可以设置用于默认对象。当表是在运行期创建时,这个功能变得极为有用:默认的审计选项允许没有数据库管理员干预的审计。这在FGA中是不可能的,用户必须在一个现有的表上创建策略,上述的情况只能在表已创建之后才可能发生。·在FGA中,审计更加灵活—仅当访问某些列,当某个特定的条件为真时等等。这种多功能性在您需要控制线索的增长时非常方便。·在FGA中,SQL赋值变量默认被捕获。在标准审计中,必须把初始化参数audit_trail设为db_extended,以启用这一功能。·权限差异:标准审计需要审计系统或语句权限;FGA只需要dbms_fga程序包上的运行权限。PAGE1
本文档为【Oracle审计功能精编版】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
Miss杨
暂无简介~
格式:doc
大小:143KB
软件:Word
页数:0
分类:企业经营
上传时间:2020-07-15
浏览量:0