如何建立基于虚拟数据库的Oracle数据安全防护体系

2016-10-24 10:36:45 爱德腕带 阅读

随着医院信息化建设的逐渐深入,医院核心数据可能泄密的隐患也越来越突出。当前大部分医疗机构在信息安全方面建设较为薄弱,尚未形成系统性的技术层面的解决方案,对非法获取数据或者篡改数据的行为没有做到智能、有效的防范和控制,信息中心在管理上也缺乏技术手段来阻止此类行为的发生。


由于部分特定人员拥有访问信息系统核心生产数据库的权限,比如系统开发人员、 系统维护人员或者HIS系统操作用户,因此如何区分正常访问和非法访问行为就成为难题,因为黑客极有可能伪装成正常业务用户身份登陆数据库,获取敏感数据。


虚拟专用数据库 (VPD) 也称为细粒度访问控制,它提供强大的行级安全功能。该功能在 Oracle8i 中推出,到10G、11G版本已经得到极大增强。


VPD 的工作方法是,通过透明地更改对数据的请求,基于一系列定义的标准向用户提供表的局部视图。在运行时,所有查询都附加了谓词,以便筛选出准许用户看到的行。例如,如果希望只允许用户查看accout_tab表上username等于KASIM的记录,则需要DBA 在表 account_tab 上设置一项安全策略,该策略具有一个相关函数policy function,它返回一个用作谓词的字符串“where username = 'KASIM'”。则 VPD 设置自动地将查询“select  * from account_tab; ”重写成“Select * from account_tab where username='KASIM'; ”


传统的VPD一般在用户登录验证的时候提供权限验证,同时需要用户权限信息与业务数据绑定才能起到数据行级控制的作用。如果业务表中无法体现登陆用户信息,那么就无法使用到VPD功能。因此,这种做法需要应用系统专门针对VPD需求进行开发,这对已建成在用的HIS系统来说涉及到大量的系统改造工作,难以实现。


不过由于数据库中每一个已登陆的会话中包含了登陆用户的信息,只要截取登陆用户信息并同VPD模块进行挂接,那么即使业务表中无法体现用户信息,也能实现行级数据保护。


如果在VPD模块中创建VPD策略函数,当登录用户为指定用户时,所有查询返回结果;当登录用户为其他非指定用户的时候,所有查询不返回结果,则数据访问可以得到保护。VPD策略函数可以设置为针对SELECT、DELETE、UPDATE操作生效,同时还具备如下功能:选择性列,在设置了该策略后,只有在选择了特定列时才会应用 VPD 策略;列屏蔽,在设置了该策略后,用户能够选择到该列上的数据,但策略会屏蔽掉许可范围以外的值。如:策略设置屏蔽条件为“>SYSDATE-1”的数据,那么查询被屏蔽范围中的数据时,在该列会返回NULL。


Oracle数据库提供多种可用的审计机制,包括如下几种方式:基于语句的审计,基于权限的审计,基于对象的审计,细粒度审计。


细粒度审计(Fine-grained Auditing, FGA)功能能够让管理员通过针对表设置特定的审计策略进行基于目标表的数据访问操作审计。当操作返回一行数据的时候,DML语句模块如果与审计策略定义相匹配,则DML操作将被FGA捕获并记录下来。因此FGA能够提供更加灵活和细化的审计策略控制,通过DBMS_FGA包设置相应的权限能够实现业务数据审计全方位覆盖。


访问特征:应用程序通过数据库驱动连接到数据库的过程被称为是创建数据库连接,这一个过程包含了应用程序客户端的大量信息,这些信息被称为客户端访问特征。主要包含如下信息:IP地址,数据库用户名,客户端操作系统用户名,客户端应用程序名,客户端终端名,客户端主机名。数据库连接所包含的这些特征在客户端创建连接的时候产生,利用这些信息能够有效识别客户端连接数据库操作的特征,并可根据这些特征进行访问动作的识别。


行为识别:通过对应用程序访问数据库的行为进行归类,识别其合法性,是行为识别的核心目标。行为识别建立在访问特征的基础上,由两部分构成:具有某一类特征的应用连接(如IP段、登陆用户名、主机名称等);允许在特定表特定字段进行的特定操作(比如允许对CUSTOM表的所有字段进行查询操作)。原理如图1所示。

行为识别原理

图 1 行为识别原理


其中操作行为由下列元素组成:被操作表名,被操作字段名,DML操作语句类别,DML操作语句。

 

构建数据库防护体系:通过利用VPD实现数据操作的控制,利用FGA实现数据操作的审计,以及利用行为识别来区分数据操作的合规性,可构建一套完善的Oracle数据库安全防护体系。


对数据操作的行为进行归类和分析,利用客户端访问特征信息,梳理出合法操作和非法操作的差异性。创建行为识别策略,通过行为识别和访问特征共同筛选应用操作的类别。再将结果传递给虚拟专用数据库或细粒度审计的接口。需要对数据操作进行限制的,通过VPD来实现;需要对数据操作进行审计的通过FGA来实现。


客户端访问特征六要素(IP地址、数据库用户名、客户端操作系统用户名、客户端应用程序名、客户端终端名、客户端主机名)构成客户端访问特征;客户端操作所访问的数据(业务表)构成客户端操作行为。行为识别通过在Oracle数据库安全防护体系中定义合规准入规则实现,应该包含上述两个元素,即如果同时满足符合某一类客户端访问特征(客户端六要素)和这类客户端特征的数据操作符合操作行为的定义(表和DML操作)这两个条件,则该行为被认为是合法的。概括起来就是:怎样的客户端特征允许在哪些表上执行什么操作。


根据上述理论基础建立的数据库安全防护体系的简要示意图如图2所示。

数据库安全防护系统架构

图 2 数据库安全防护系统架构

在此数据库安全防护体系中,将数据库防火墙分为三层结构,应用访问层、特征引擎层和数据操作层。


其中,应用访问层:在登陆阶段提取Oracle数据库客户端六要素,并和特征引擎进行登录行为匹配。特征引擎层:利用客户端六要素,配置VPD和FGA策略。在HIS系统实际环境中,可以结合黑名单和白名单两种方式灵活配置策略模型。数据操作层:针对合法及非法操作的处理流程,在这个层面控制,通过自定义存储过程实现。


基于Oracle高级安全组件的深度开发,实现了“数据库安全防护体系”,通过配置管理,能够有效阻止对机密数据的非法窃取和恶意操作,在一定程度上解决IT运维中面临的核心数据库安全问题。同时,本系统在部分功能实现上,如行为识别依赖于管理员定义的应用准入策略、数据操作层有一定的性能开销等,依然存在较大的改进空间。

 

来源:节选自《中国数字医学》杂志第9期,作者:许杰、鲁慧哲(单位:浙江大学医学院附属第二医院)、左翼 (单位:浙江鸿程计算机系统有限公司)


点击这里给我发消息
点击这里给我发消息