




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一种数据访问安全审计的方案何卫华1薛宝相2(1.电信科学技术第十研究所陕西西安7100612.西安西无二电子信息集团公司陕西西安710015)摘要:通过对oracle10g数据库审计机制的研究,设计一种数据库用户与应用用户的映射机制,实现对用户数据操作的各项信息进行审计。关键词:oracle10g数据库 数据库用户 应用用户 审计oracle是以结构化查询语言(SQL)为基础的大型对象关系型数据库,是市场占有率很高的数据库产品。随着数据库系统的广泛应用,用户对数据库中数据保护和操作监控的意识逐渐增强,从而对数据安全性提出了更高的要求。oracle也一直在加强其数据库产品在审计和日志记录方面的能力,对于oracle以前的版本来说,自带的审计手段只能记录到“谁”执行此操作,而不能捕获执行了“什么”,审计的内容无法显示数据的变化情况,很难满足详细审计的要求。在9i中,只能对select语句进行审计;在oracle10g中实现了对整体数据的详细审计功能,还可以使用DBMS_FGA实现对DML(数据操纵语言如:insert、update、delete)的审计功能。本文基于oracle10g的数据库审计机制设计了一种数据安全访问审计的方案。一、 审计的作用审计是记录数据库中用户活动行为的一种机制,是对选定的用户动作的监控和记录,它不但能记录谁访问了数据库,还能够记录访问者对数据库进行了如何操作⑴。oracle数据库系统提供对其内部所发生的活动进行审计的功能,其主要作用如下。审查可疑的活动当管理员发现数据库有可能被非法操作后(例如数据被非授权用户所删除),就可以决定对该数据库的所有连接进行审计,并对数据库的所有表成功或不成功的删除进行审计。这样就可以发现非法用户的来源、使用的终端和会话的时间等。2.监视和收集关于指定数据库中变化的数据管理员可以收集哪些数据被修改、数据库执行了多少逻辑的I/O等数据统计。二、oracle10g数据库的审计机制oracle10g的审计机制oracle10g的审计机制是用来监视用户对oracle数据库所做的各种操作。在缺省的情况下,该审计功能是关闭的。激活的办法是:在初始化参数文件中,将Audit_trail设置为TRUE。审计功能被激活后,数据库用户对其拥有的表或视图就可以进行如下审计操作:使用SQL语句来挑选审计选择项例如:审计每一次访问中不成功删除任何表的操作:Auditdeleteanytablebyaccesswhenevernotsuccessful;审计对该数据库用户所拥有的表或视图的成功或不成功的存取操作 例如:对EMP表插入进行审计:Auditinsertonscott.EMP;有选择地审计各种类型的SQL操作(SELECT、UPDATE、INSERT、DELETE)例如:只审计查询、增加和删除表,而不审计修改:Auditselecttable,inserttable,deletetable;控制审计的程度(是以SESSION为单位,还是以ACCESS为单位)如果是以SESSION为单位,则表示每次审计一个会话,只插入一条审计记录;以ACCESS为单位,则表示每一次访问都会插入一条审计记录。对于数据库DBA的用户还可以进行如下审计操作:对LOGON、LOGOFF、GRANT和REVOKE等进行审计;为某些数据库表设定缺省选择项。另外,使用dbms_fga包可不必进行设置,即可调用审计功能。oracle10g审计的内容oracle10g数据库系统提供了对其内部所发生的活动进行审计的功能。目前,oracle10g可以对以下3种情况进行审计。登录审计对每一企图登录到oracle的用户进行审计(无论其登录是否成功)。数据活动审计对任何涉及到数据库对象操作的活动(如连接oracle、建表、建立角色和建立表空间等)都被审计,具体包括语句审计和权限审计。语句审计(STATEMENTAUDITING)是对某种类型的SQL语句(查询select、添加insert、修改update和删除delete等)进行审计,不指定结构或对象。比如对SCOTT用户执行的所有SELECT语句进行审计(AUDITSELECTBYSCOTT)。权限审计(PRIVILEGEAUDITING)是对执行相应动作的系统权限(建表权createanytable、建序列权createanysequence等)的审计。比如审计哪些用户使用了CREATETRIGGER系统权限(AUDITCREATETRIGGER)。对象审计(OBJECTAUDITING)任何用户对表的操作(如对表做SELECT、INSERT、UPDATE和DELETE等)都可被审计。例如,对特定方案的对象上的指定语句进行审计,实际上就是对对象权限的审计。审计对HR.EMPLOYEES数据表执行的SELECT操作的审计(AUDITSELECTONHR.EMPLOYEES)。三、审计方案的目标本数据访问安全审计方案的目标,就是能够对需要进行审计的数据进行审计记录。当被审计的数据发生改变时,记录操作者、操作时间、操作对象和操作行为等信息。对数据库系统的数据访问操作可表示为操作者、操作时间、操作对象和操作行为四要素。例如:当数据访问操作发生时,可记录何人、何时、何地对何数据进行了何种操作的信息,以便数据库管理者在事后进行监督检查,分析总结。如表1所示。表1数据访问操作四要素元素内容说明操作者人使用者地点计算机的IP方法应用程序操作时间时间发生时间操作对象对象名对象的描述操作数据操作发生前后记录数据的变化操作行为操作类型修改、删除、插入、查询四、审计方案的设计1.模块结构图审计方案的设计涉及到对审计数据的管理,其中记录数据访问操作信息的模块是设计的核心。在设计中对操作信息记录的模块由数据库审计层和应用审计层组成,如图1所示。(1)应用审计层应用审计层是在应用系统中实现的部分,它的功能是记录应用系统中操作者的信息(用户的ID、姓名、IP和动作等)。当用户使用应用系统操作应用数据库中的数据时,应用系统触发相应的应用审计层;同时触发数据库审计层,并根据数据库中当前的数据库会话,将该用户信息记录在数据库层审计记录中,该记录可在审计视图由于目前应用系统多使用C/S构架和B/S构架,因此,应用审计层要分别在使用这两种类型构架的应用系统上设计实现审计。在C/S构架的应用系统中,用户通过应用系统的客户端连接数据库,由客户端可以得到用户的用户名信息和地址信息;在B/S构架的应用系统中,用户在web会话期间,应用系统收到用户的操作请求后,通过向数据库写入操作者信息即可完成应用审计层对操作者信息的记录,从而得到操作者的信息和用户发出操作请求的时间。(2) 数据库审计层数据库审计层的功能是在数据库发生操作时,捕获并记录与操作相关的时间、对象和行为类型等相关信息,对数据修改操作还需记录操作发生前后的数值。Oracle10g审计功能可以实现对数据库中发生的所有类型的所有操作的审计,审计记录的内容包括数据库用户名、会话标识符、时间、对象和类型等,通过提交审计语句可以对相应的操作进行审计。对于数据修改操作的审计,oracle10g以前的版本审计不提供记录修改前后的数值,这类操作的审计是由编写触发器实现的。oracle10g提供dbms_fga包,在此包定义策略,通过闪回查询,从而得到修改操作前后的数值。因此,通过oracle10g的系统审计与编写策略闪回查询结合,完成对数据库操作的操作类型、操作时间、操作对象和数据修改操作等的记录。当数据库用户直接操作应用数据库中的数据时,将触发数据库审计层,并把数据库用户的各项信息记录在数据库层审计记录中,该记录可在审计视图DBA_AUDIT_TRAIL中查询。(3) 数据库审计层与应用审计层的关联数据库审计层与应用审计层分别记录了审计四要素的值,为了得到四要素完整的审计记录,还必须将数据库审计层记录的数据操作信息与应用审计层记录的操作者的数据关联起来,从而得到执行该操作的操作者的真实信息。因此,必须找到可以标识每次数据操作、同时可被数据库审计层与应用审计层记录的数值,会话标识符就是满足这样要求的数值。会话是oracle数据库服务器对数据库连接进行记录的手段,在会话包含的信息中,会话标识符是数据库为每次数据库连接分配的、可以唯一标识数据库会话的编号⑺。当应用用户发出数据操作请求时,应用审计层在记录用户信息的同时也记录当前的会话标识符;而当数据库操作发生时,数据库审计层也会记录下会话标识符。通过将数据库审计层和应用审计层的会话标识符相匹配,实现将两个审计层记录的审计信息相对应。
应用用户的操作审计基于数据库的应用系统,一般都有自己的用户管理,以实现应用级的用户管理和认证。当应用用户通过应用系统对数据库的数据进行操作时,审计中的操作时间、操作对象和操作行为通过在数据库中编写脚本程序可以获得,而操作者却因应用系统不同而不同。例如:在基于web的应用系统中,应用服务器通常使用固定的数据库用户(如APPUSER)连接到数据库(图2所示),应用用户由应用程序验证。图2中,用户USERA连接到应用程序,经应用程序验证用户后,使用数据库用户APPUSER连接到数据库。如果在此环境中使用审计,审计记录将显示用户为APPUSER而不是USERA;同样,另一个应用程序用户USERB的审计记录也将被记录为APPUSER而不是USERB。由于审计记录的用户名不是实际的应用用户名,因而审计没有发挥作用。此外,在对web应用系统的用户数据操作进行审计时,由于用户通过应用服务器连接数据库,数据库只能得到应用服务器的IP,而无法得到用户计算机的IP。USERAUSEEB数据库连接池-l&sndo.<数据库会话USEEC数据库连接池-l&sndo.<数据库会话图2web应用系统数据库连接图对于用户少的应用系统,可以通过在数据库中创建与应用用户一一对应的数据库用户,从而进行审计。当应用用户很多时,如果所有的用户都在数据库中创建,将导致管理极其困难。会话是oracle数据库服务器对数据库连接进行记录的手段,会话标识符具有唯一性,它不但可被数据库审计,也可被应用系统审计⑺,这就提供了对应用系统用户的数据库操作进行审计的可能性。Oracle10g引进了客户端标识符作为oracle会话的一个属性,任何值都可以放入该属性,可以使用它来保存实际的用户名,如USERA;尽管数据库用户名被记录为APPUSER,但客户端标识符可以存放值USERA。例如:EXECUTEDBMS_SESSION.SET_IDENTIFIER('USERA')语句设置了客户端标识符的值为USERA;设置后,此标识符也将在该会话的V$SESSION视图中显示的值为USERA。该信息还会显示在DBA_FGA_AUDIT_TRAIL视图的CLIENT_ID列中,操作如下:SELECTDB_USER,CLIENT_IDFROMDBA_FGA_AUDIT_TRAIL;其中,DB_USER为数据库用户APPUSER,CLIENT_ID为实际的应用系统用户USERA。应用程序必须在每次操作数据库之前设置客户端标识符,从而在审计记录中看到真正的应用程序用户名。当另一个应用程序线程重用数据库会话时,客户端标识符必须被设置为另一个正确的应用用户名。3.数据库用户的操作审计1)登录审计对每一个与oracle连接(成功或不成功)的活动设置审计:auditsession(wheneversuccessful或whenevernotsuccessful);取消登录审计:noauditsession。
登录审计的结果可以从视图dba_audit_session中进行查询,可以查看OS用户名、oracle用户名、登录成功与否、登录时间和退出时间等一系列信息。如表2所示。表2视图dbaauditsession的内容osusernameusernameterminalreturncodetimestamplogofftimeOS用户名oracle用户名终端根据返回代码判断登录成功与否登录时间退出时间2)权限审计和对象审计对oracle的系统权限,按用户、会话或访问、成功与否等设置审计:auditsystem_privBy<user>BysessionlaccessWhenever[not]successful;取消权限审计:noauditsystem_priv;对oracle的对象,按用户按会话或访问,按成功与否设置审计:Audit<stat>on<object>by<user>bysession|accesswhen[not]successful;取消对象审计:noauditon<object>。对权限审计和对象审计的结果可以在视图dba_audit_trail中进行查询,可以查看oracle用户名、对象的名字、操作代码和不同操作的成功和失败等一系列信息。如表3所示。表3视图dbaaudittrail的内容usernameobjnameactionaction_nameses_actionsoracle用户名对象的名字操作代码操作名称不同操作的成功和失败的信息4.用户对数据库数据修改操作的审计Oracle系统审计功能无法记录数据修改前后的数值,这类操作的审计在oracle10g以前版本由触发器实现,作为对系统审计的补充。触发器是一种特殊类型的存储过程,它在条件满足时,由系统自动调用执行。通过对需要审计的数据表添加行触发器,并在触发器内编写脚本代码,即可实现对数据修改操作的审计[2]。oraclelOg提供了DBMS_FGA包来实现对数据修改操作的审计,它可以审计所有类型的DML语句。例如,在数据库中有一张表名为tableAA的表,表中有anumber、bnumber两个列,在表上定义的FGA策略为:begin=>'SCOTT',=>'tableAA',=>'SCOTT',=>'tableAA',=>'tableAA_DML',=>'a,b',audit_conditionstatement_types=>'b>=400',=>'INSERT,UPDATE,DELETE,SELECT',audit_column_opts=>DBMS_FGA.ALL_COLUMNS,audit_trail=>DB);end;在策略定义后,用户将表中字段b=400的记录中把400改为120,这就使一条记录插入到FGA_LOG$表中。注意这条记录是由一个自动事务插入的,即使回滚update语句,这条记录也会存在。可以从另一个视图dba_common_audit_trail来检查线索是否存在:selectSCN,SQL_TEXTfromdba_common_audit_trail;SCN SQL_TEXT123456updatetableAAsetb=120whereb=400;此处的相关列是SCN,它记录了生成跟踪时的系统更改号。使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 穆斯林共生协议
- 基于连通保持的多智能体分布式协同控制
- 2025-2030中国单晶硅行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国动画电影行业市场深度调研及价值评估与投资前景研究报告
- 2025年链式输送带项目市场调查研究报告
- 某年度光通信计量和监测仪器产业分析报告
- 汽车配件采购及供应协议
- 社区农田节水技术推广合作项目协议
- 网络安全解决方案提供合同
- BSCI消费者权益保护与沟通计划
- 长输管道工序监理作业指导书
- 审计业务约定书
- 石灰破拱计量投加系统技术规范书
- JJG 40-2011X射线探伤机
- GB/T 33217-2016冲压件毛刺高度
- GB/T 31765-2015高密度纤维板
- GB/T 21618-2008危险品易燃固体燃烧速率试验方法
- GB/T 19165-2003日光温室和塑料大棚结构与性能要求
- 品质管理概念培训
- 《思想道德与法治》 课件 第四章 明确价值要求 践行价值准则
- 《拟行路难》课件26张
评论
0/150
提交评论