文档库 最新最全的文档下载
当前位置:文档库 › Oracle数据库安全解决方案探讨

Oracle数据库安全解决方案探讨

国圆圆圆圃

52

Oracle数据

[黄健泉]

对Oracle数据库中的各种安全特性进行了较为详细的分析.并概要

的给出了实施这些安全特性的主要流程和步骤,通过组合使用本文中列举

的数据库高级安全特性,可以大大提高Oracle数据库的安全性。

》关键词VPDI__abelSecurityDatabaseEncrypti。nFGARADIUS

黄健泉

男.1999年7月硕士毕业于武汉理工大学计算机科学系后加盟广发证

券股份有限公司信息技术部,目前在该部门担任ERP/CRM系统管理员,在

AIX/Solaris/Veritas和OracleApplication11i和OracleRAC数据库管理方

面积累了较为丰富的经验。

1前言

随着计算机网络应用的普及和提高,Oracle数据库在

各个IT领域得到了广泛应用。它性能优异,操作灵活方便,

是目前应用得最为广泛的数据库系统。随着数据库应用的

深入和时间的增加,数据库保存的重要数据信息也不断增

加,数据库的安全性问题已经成为了数据库管理员需要特

别重点关注的一个问题。

除授权H巨绝用户访问数据库对象这种最基本的安全

控制外,Oracle数据库还另外提供了一些高级的安全性特

性,如下就是Oralce提供的几个主要的高级安全特性:虚

拟专用数据库(VirtualPrivateDatabase),标签安全(Label

Security),数据库加密(DatabaseEncryption),精细粒度审

计(FineGrainAuditing,FGA),N—tier用户验证支持(RA—

DIUS协议支持)。

这些高级安全性特性分别用于加强数据库安全的不同

部分,其中虚拟专用数据库和标签安全用于控制用户仅仅

存取数据库中数据的某一个子集,数据库加密特性使用密

钥在使用过程中加密/解密数据库中数据,此外,精细粒度

审计(FGA)特性用于监控/追踪用户的各种数据库操作。

N—tier用户验证支持则使数据库可以通过诸如Kerberos

或令牌卡等外部机制来取得第三方认证授权。

2Oracle数据库的基本安全特性

Oracle数据库本身使用了多种手段来加强数据库的

安全性,经常用到的就是使用用户密码,给用户分配角色以

及各种权限的方法来控制用户的数据库存取权限,保障数

据库的安全。

任何一个Oracle数据库版本都提供授权(或拒绝)用

户访问数据库对象的能力,这些访问权限是在对象级别上

定义的,也就是说,权限是针对于表、视图、包或者存储过程

等对象进行定义的。对于绝大多数应用程序来说,Oracle

的这种针对对象级别定义权限已经能够满足应用的权限管

理要求。

Oracle数据库用户是连接数据库时使用的有效的使

用者标识符,每个数据库用户都有一个相关密码,以防止未 万方数据

经授权的存取,这是保护数据库系统安全最重要的基本手段。数据库角色则可理解为一个命名的权限集合。

权限允许用户访问属于其它用户的对象或执行程序代码,ORACLE系统提供3种权限:

(1)Object对象级权限

(2)System系统级权限

(3)Role角色级权限

对于那些用户很多,应用程序和数据对象很丰富的数据库,应充分利用角色对权限进行有效管理。对于复杂的系统环境,角色能大大地简化权限的管理。要特别提及的是,用户通过角色获取的权限,在过程和包中是无法使用的,也就是说,在过程/包中涉及的所有权限都需要直接授予用户,不能通过角色间接授予。

在实际的应用中,管理Oracle数据库的权限的合理方法如下:

(1)定义相应的应用系统角色;

(2)根据实际情况,分配相应的权限给上述的应用系统角色;

(3)根据实际情况,定义相应的用户角色,分配合适的应用系统角色给用户角色;

(4)分配合适的用户角色给数据库用户。

3Oracle数据库的高级安全特性3.1虚拟专用数据库VPD

从Oracle8i开始,Oracle引入了一个新的数据库安全特性VPD(虚拟专用数据库),VPD的另外一个名称是Oracle细粒度存取控制FGAC(finegraindaccesscon—tr01)。它提供了服务器端增强的、精细的数据访问控制,和应用上下文组合在一起使用,它能够使多个数据库用户能够利用同一个数据库安全地存取同一个数据表中关键数据。

OracLe的这种数据行级安全(Row—LevelSecurity,RLS)特性提供的数据细粒度的访问控制意味着访问权限是在行一级上进行控制。数据的行级安全性不是向对表有访问权限的用户打开整张表,而是将访问限定到表中特定的行。其结果就是每个用户看到完全不同的数据集,只能看

到那些该用户被授权可以查看的数据。

实现细粒度存取控制FGAC的核心是通过动态修改

SQL查询,增加一个相应的Where条件来限制数据库用户

可存取的行纪录。这个后台的数据库操作对最终数据库用

户完全透明。使用Oracle的VPD功能不仅确保了企业能

够构建安全的数据库来执行隐私策略,而且提供了应用程

序开发的一个更加可管理的方法,因为虽然基于VPD的策

略限制了对数据库表的访问,但在需要的时候可以很容易

地对此做出修改,而无需修改应用程序代码。

举例来说,假设某个公司的人力资源(HR)专员使用定

制的人力资源管理应用系统来处理公司的人事信息。开始

的时候。该公司从信息共享的角度考虑,允许所有的HR专

员可以访问公司全部员工的信息,但最近,公司从信息安全

的角度考虑,对该策略做了改变。现在,分支机构的HR专

员仅仅允许处理该HR专员所在部门的员工的信息。策略

的变化必须反映在应用程序中,该应用程序现在向每个

HR专员显示所有员工的信息,而不仅仅只是分配给该HR

专员管理的那些员工的信息。

为了使应用程序符合新的隐私策略,该公司有3种选

择:

(1)修改应用程序代码,使所有SQL语句都包含一个

判定词(WHERE子句)。然而这种选择不仅代码修改量大,

而且不能保证在应用程序之外执行该隐私策略,在其他系

统中运行相应的SQL还是可以访问全部的数据。此外如

果将来该策略又有变化,则必须再一次修改代码,所以从长

远考虑这不是~个好方法。

(2)保持应用程序不动,用一些必要的判定词创建表的

一些视图,并用与表名一样的名字为这些视图创建同义词。

从应用程序不变更和安全性的角度来看这种方法比较好,

但可能难于管理,特别是涉及很多用户的情况下,可能产生

很多潜在的视图需要DBA去跟踪和管理。

(3)创建可动态生成判定条件的策略函数来为每个HR

用户创建一个VPD,通过利用数据库内置的行级安全性

(DBMS—RLS)来设置策略,这些函数随后可以用于所有对

象,而不必考虑它们如何被访问。

从上面的分析结构可以看到,最后一种选择提供了最

佳安全性,而且它不会增加管理负担,并能确保信息的安全

200508?广东通信技术

 万方数据

国圊固国圃

'-_

题与应用

性。此外,安全性只需在数据服务器中构建一次,不必在访

问数据的每个应用程序中进行构建,因此,使用VPD还可

间接地降低系统的开发维护成本。

对于如上这种类似案例,VPD的实施主要步骤如下:

(1)定义并分配不同的数据库登录用户,不用应用系统

用户使用不同的数据库用户登录,对新建的用户进行相应

的权限调整。增加createanycontext等权限;

(2)调整相应的应用系统权限控制相关数据表结构,一

般需要新增一个字段用于保存一些附加信息,用于对应数

据库登录用户和应用系统权限用户。因为数据库登录用户

名可以通过SYS—CONTEXT(。USERENV’,‘SESSION—US—

ER‘)直接取得,所以如果数据表权限控制字段中保存的已

经是数据库登录用户名,则下面的第3步可忽略;

(3)为数据库用户创建相应的应用上下文和相应的包,

这中间的主要处理是对能够直接取得的当前会话的数据库

用户信息、主机/IP地址信息,经过相应的对应关系转换为

应用系统的权限控制信息,设置一些相应的上下文变量;

(4)设置一个AFTERLOGONONDATABASE的Trigger,

在这个Trigger中调用上面步骤创建的应用上下文关联

包,也就是让数据库用户登录完毕就设置相应的一些应用

上下文信息;

(5)创建相应的安全策略和对应的函数,用于定义在该

对象上进行某种操作时,系统自动附加上去的Where子

句,从而达到透明的限制用户可存取的数据范围,这里涉及

的安全策略函数适合于用一个包来进行封装,以使代码更

为清晰;

(6)最后,调用dbms—rls.add—policy在相应的对象

(表或者视图)上应用相应的安全策略,可用如下SQL检查

系统目前是否安装了DBMS—RLS包:

select+fromall—objectswhereobjecLname=up-

per(。DBMS—RLS’):

若没有则通过执行脚本dbmsrlsa.sqlh和prvtrlsa.plb

在sys用户下创建DBMS—RLS包;

(7)通过查看all—policies中保存的信息可查看复核系

统中安全策略的应用情况。

3.2Oracle标签安全(OracleLabelSecurity)

Oracle标签安全(OracleLabelSecurity)建立在Ora—

cle虚拟专用数据库(VPD)技术的基础之上。同虚拟专用数

据库类似,Oracle标签安全也是一个精细粒度访问控制产

品。VPD对数据的控制是在行级进行的,而Oracle标签安

全则在列级对数据的存取进行控制。

Oracle标签安全起源于政府和防御机构用来保护机

密信息和提供数据分隔的标签概念,这些机构或部门对数

据的安全要求特别高。事实上,现在的各种对数据安全性要

求高的IT系统都可考虑应用数据标签来满足因特网时代

的数据安全要求。在数据库中强制执行Oracle标签安全,

即使绕过应用程序也会提供安全,标签安全提供了一种使

用现有的应用程序不易达到的数据安全访问控制范围。

Oracle标签安全提供了一个基于数据表列级的安全

解决方案,可根据数据的敏感性控制数据的存取访问,避免

了在应用程序中手工编写这种策略的需要。利用图形用户

界面工具Oracle策略管理器(OraclePolicyManager),系

统管理员能够快速创建/管理Oracle标签安全策略,并将

它们应用到数据表上。在Oracle数据库的最新版本109

中。Oracle标签安全与’OlD已完全集成,已实现了在动态

变化的网格设置中集中管理这些安全策略。

实施Oracle标签安全的主要步骤如下:

(1)确认Oracle数据库标签安全选项已经安装,若没

有则通过OracleUniversalInstaller安装该选项;

SQL>select‘fromV¥optionwhereparameter=。O—

racleLabelSecurity。:

(2)若数据库没有配置OracleLabelSecurity选项,则

使用数据库配置助手给已经存在的数据库增加标签安全选

项;

SQL>select+fromdbaobjectswhereowner=

。LBACSYS。;

(3)创建相应数据库用户并授给用户数据表上的相应

权限;

(4)在LBACSYS用户下,利用SA_SYSDBA.CRE—

ATE—POUCY,SA_COMPONENTS.CREATE_LEVEL,

SACOMPONENTS.CREATE—GROUP,SA_LABEL—_AD—

MINCREATE—LABEL等过程定义相应的策略,安全级别,

安全组,标签;

(5)调用SA_USER—ADMIN.SET—USER—LABELS, 万方数据

鬻滋

SA_USER—ADMIN.SET_USER—PRIVS设置用户标签授权;

(6)调用SA—POLICYADMIN.APPLY--TABLEPOLI—CY在数据表上应用上面定义的安全策略;

(7)在数据表上增加相应安全标签,这个步骤主要是通过update语句根据相应的策略定义更新数据库表的标签列;

(8)测试整个标签安全策略的实施是否成功。

3.3Oracle数据库加密(DatabaseEncryption)

Internet的发展给信息安全提出了新的挑战,特别是对于那些运用电子商务的公司企业。在多数情况下,数据安全可以通过合适的用户验证,授权和存取控制来予以保证。对于一些特殊的特别敏感的数据信息,例如用户密码、信用卡号码等,用户一般都会有更进一步的安全要求。对于这些敏感数据的离线备份(如各种数据备份),如何又才能保证信息的安全,将数据加密后再进行存储是应付这类新的数据安全威胁的一种重要工具。

Oracle数据库加密指的是当数据表的字段被加密后,在该字段上的所有插入数据都会加密后予以保存,加密算法支持DES(DataEncryptionStandard)和3DES(TripleDES)。Oracle对存储数据加密功能的增强主要是将一个安全随机数产生器(RNG)合并到了DBMS—OBFUSCA—TION_TOOLKIT包中。在Oracle9i中,由于能够将所产生的随机数作为安全密钥使用,这极大地增加了加密数据的安全性,促进了存储数据加密的应用。

实施Oracle数据库存储数据加密的主要步骤为:

(1)创建一个数据表用于存放DES加密算法使用的加密密钥,数据加密密钥将由dbms—obfuscationtoolkit.DESGetKey或者dbms—obfuscation—toolkit.DES3GetKey在数据插入时动态产生;

(2)创建一个加密包,定义相应的加密/解密函数,在该加密包中调用dbms_obfuscation_toolkit.DES3Decrypt和dbms—obfuscation_toolkit.DES3Decrypt使用上述动态产生的加密密钥对相应的数据加密和解密;

(3)创建一个AfterInsert的触发器,调用上述加密包对新插入的数据进行加密后保存;

(4)使用sqlplus测试数据库加密的效果,确认数据是

以加密格式存放;

(5)调用上述解密函数,联合相应的加密密钥。对上述

加密格式存放的数据进行解密。

3.4Oracle精细粒度审计(OracleFineGrainAuditing,

FGA)

传统的Oracle数据库审计选件允许您在宏观级别上

跟踪用户在对象上所执行的操作。Audit审计可以记录使

用的语句(如SELECT或INSERT)以及谁发出它、从哪~

个终端、什么时候等。然而,信息最重要的部分,哪条特定记

录被修改了,以及数据本身的变化却无法捕获到。例如,如

果您审计对某个表的SELECT语句,则可以跟踪是谁从表

中选择了数据。但是,您不知道他们选择了什么。利用数据

操纵语句,如INSERT、UPDATE或DELETE,您可以通过

使用触发器或使用OracleLogMiner实用程序来分析归档

日志,从而捕获任何的更改。但触发器只可能在DML语句

(如insert、update和delete)上使用,所以访问的一个主要

的方面,SELECT语句并不能通过这种途径来审计。因为

SELECT语句不操纵任何数据,它们既不启动触发器,也不

写入到那些以后可以进行分析的归档日志中,所以这两种

技术在涉及到SELECT语句的地方无法满足要求。

Oracle9i推出了一种称为精细粒度审计(FGA)的新

特性,它改变了这种局面,该特性允许针对SELECT语句

进行审计操作。除了简单地跟踪语句之外,FGA还通过在

每次用户选择特定的数据集时执行一段代码,提供了一种

方法来模拟用于SELECT语句的触发器。与触发器和Log

Miner工具一起,FGA提供了一种机制来审计各种类型的

值修改和不涉及到值修改的SELECT数据访问。

FGA不仅填补了审计SELECT语句的空白,而且还提

供了其它的一些引人注目的额外好处,这些好处使得数据

库管理员的工作变得更加轻松。例如,FGA允许一个用户

自定义的过程在指定的审计条件出现的时候执行,这种

SELECT语句上定义触发器是一个在其它方式下无法提供

的功能。这个技巧可能非常有用,一方便,可以利用这个功

能在用户自定义的表中生成审计记录。这些表中数据可以

不受限制地进行处理,这与SYS.FGALOGS有明显不同;

200508?广东通信技术

 万方数据

舞黝缎彰钐㈣缀绷缴织缀缀缓绷嬲纺彩彩彩膨织缀纺缆彩磁搿缀织织黝缓嬲纺绷缴彩缆蝴鳜嬲黜鳓{}}j嬲绒彩黝∥}}}}努搿嘲绷{{{{绷纡糍缀

此外。还可以利用这些审计线索分析表上的数据访问类型,可提供单点登录(singlesign—on)的额外优势。Kerberos、

用以找出最可能的索引机制,合理设置数据表上的索引等。CyberSafe和DistributedComputingEnvironment(DCE)由于上述原因,FGA已成为数据库管理员工具箱中最支持使Oracle数据服务器能够从第三方服务器进行用户重要的工具之一。不过,在Oracle9i中,它仍缺少一个重要验证,第三方服务器的唯一用途就是验证,从而提供了集中

的特性:无法在SELECT语句之外的语句上使用,9i中的的验证方案,不再需要在每个数据库上进行密码管理。随着

FGA仅仅能够处理SELECT语句。在Oracle109中,Oracle数据库RADIUS协议支持的推出,外部验证扩展

FGA已变得很完善,它可以审计所有类型的DML语句,而已成为一个基于标准的灵活解决方案。Oracle将RADIUS

不只是SELECT。支持集成进了Oracle高级安全之中,用以满足Oracle用要注意的是,尽管使用FGA可以详细地监控SELECT户集成到复杂环境和扩展安全性特性的需求。

语句的执行,但这个也必须符合一定的条件才能正常工RADIUS(RemoteAuthenticationDial—InUserSer-

作。Oracle9i中的FGA仅仅支持CBO优化规则,‘如果vice)协议是远程验证和网络控制访问的标准。RADIUS是

圊数据库的优化规则不是CBO或者对象没有经过任何分析用于网络客户机和验证服务器之间用户认证、授权和记帐

固操作,则FGA可能返回不可预知的结果。的小型协议,是一种灵活、开放和可伸缩的开放式安全性标

I剧实施FGA的主要步骤可描述如下:准。

(1)预先创建一个FGA处理过程;在一个典型案例的实施过程中,支持Oracle高级安全

(2)使用DBMS—FGA.add—policy定义一个策略,在某的多个Oracle数据库服务器被配置为RADIUS客户机,个select语句符合策略定义条件时,执行上述定义的FGA当Oracle用户请求访问Oracle数据库服务器时,如果该

处理过程;用户依赖于RADIUS取得认证,则Oracle数据库服务器(3)从dba_fga_audit_trail中获取用户select的跟踪将认证请求转发至RADIUS服务器,RADIUS服务器将验纪录。证请求传送至验证服务器,RADIUS服务器和验证服务器

可位于同一主机上,也可分别位于不同的系统上,一_B验ii3.5N-tier用户验证支持(RADIUS协议支持)

通过。用户就可以访问Oracle数据库服务器了。

在当今分布式企业和Internet环境中。数以千计的用

Oracle数据库实施RADIUS用户验证的主要步骤为:户需要从不同位置对数据进行访问,因此用户的认证也变

(1)在OracleClient端安装配置RADIUS支持,安装得越来越复杂了。Oracle数据库提供了4类用户验证方

OracleAdvancedSecurity选项。修改客户端的sqlnet.ora式:

文件,设置系统使用RADIUS验证用户;

(1)内部,通过存储在数据服务器中的密码来识别用

(2)在数据库服务器端安装配置RADIUS支持,系统需户:

要创建相应RADIUS密钥文件,配置sqlnet.ora,设置系统

(2)OS认证,数据库依赖于操作系统提供的身份可靠

‘’

使用位于某个位置的RADIUS服务器进行验证服务,可通性:

过netasst网络配置助手来配置系统的高级安全设置选(3)全局,在数据库之外的中央数据库存储和检索用户

。‘

项,设置RADIUA的相应参数;

和方案:

(3)在RADIUS验证服务器增加相应的RADIUS客户(4)外部-RDBMs通过诸如Kerbe‘。s或令牌卡等外

并授于相应权限,这里的RADlus客户指的是Oracle数据部机制,按照Oracle高级安全(OracleAdvancedSecuri一

库服务器主机;

ty)来取得第三方认证。

(4)根据需要,可能需要配置一个RADIUSAccountOracle高级安全支持许多第三方认证解决方案。这些

ing服务器用于纪录日志信息,一个RADIUSAuthentica解决方案能够提供已知用户身份的保证,在某些情况下,还

tion验证服务器来专门进行用户验证;(下转第61页)

56

 万方数据

缓缓荔蒸豢蒙荔戮j囊戮麓缓豢戮鬟

态调整的过程。在网络运行初期,由于用户数较少,需要通过路测进行优化,这种过程一般需要重复多次。随着用户数的增加,可以通过话务统计的结果和运行维护数据对网络进行优化口1。而且优化技术也将不断发展和变化,运营商需在优化中不断引入自动测试系统和数据综合分析技术,以期业务发展与网络服务质量匹配,提升网络服务质量。234

参考资料51刁兆坤.3G无线网络的科学规划.通信世界网.2005年4月张平,王卫东,陶小峰,王莹等.WCDMA移动通信系统(第2版).人民邮电出版社

文志成.方胜.WCDMA无线系统优化.电信网技术.2004年12月

王丽英.胡敖.谈无线网络规划与优化及二者间的关系.GSM&CDMA无线网络规划与优化概念与案例.中华通信系统有限公司

张传福.CDMA网络中切换失败原因分析及其优化.CDMA与第三代移动通信技术理论与应用

(上接第7页)传统固网运营商通过现有网络的转型和未来3G网络的建设,网络将会有全新的变化,首先将来的网络是软交换、3G、宽带视频网络的融合,并统一到IP承载网上来承载,建设统一的综合的业务平台。其次,由统一的综合的业务平台,给用户提供的移动化、宽带化、个性化、多样化、丰富多彩的融合业务,而3G网将为我们创造一个更加灿烂的个人宽带移动新世界。第三,统一的综合的业务平台,为我们提供了无限想象的新业务创造空间,为企业注入源源不断的原动力。如图8所示。

(上接第56页)(5)创建Oracle数据库用户并授予相

应权限,这里的数据库用户配置为通过外部验证;

(6)测试用户的RADIUS验证是否能正常工作。

4结束语

本文列举的是Oracle数据库提供的各项主要高级安全特性,它们分别在不同方面加强数据库的安全性。根据实际情况,通过组合使用上述的高级安全特性,可以大大提高Oracle数据库的安全性,并且,合理地使用这些高级安全特性,系统管理员可以更好地管理Oracle数据库,将系统管理工作做得更为到位。1

图8融合的业务:其基础是多业务一线接入、智能化

终端及综合业务平台

参考文献

http://www.oracle.com/technology/obe/obe9ir2/obe—

sec/vpd/vpd.htm

http://www.oracle.com/technology/obe/obe9ir2/obe—

sec/label/label.htm

http://www.oracle.com/technology/obe/obe9ir2/obe—

sec/encrypt/encrypt.htm

OracleCorporation.9i/9.2:FineGrainedAuditing

SAMPLECODE,Meta/inkNote:174556.1

OracleCorporation,EnablingRADIUSAuthentication

andAccounting,Meta/inkNote:132820.1

200508?广东通信技术

61

 万方数据

Oracle数据库安全解决方案探讨

作者:黄健泉

作者单位:广发证券股份有限公司

刊名:

广东通信技术

英文刊名:GUANGDONG COMMUNICATION TECHNOLOGY

年,卷(期):2005,25(8)

被引用次数:1次

参考文献(5条)

1.查看详情

2.查看详情

3.查看详情

4.Oracle Corporation9i/9.2: Fine Grained Auditing SAMPLE CODE

5.Oracle Corporation Enabling RADIUS Authentication and Accounting

引证文献(1条)

1.宋兴彬.杨从法基于BCV和VPD技术实现数据分发的应用研究[期刊论文]-计算机工程与设计 2007(13)

本文链接:https://www.wendangku.net/doc/9512309189.html,/Periodical_gdtxjs200508011.aspx

授权使用:万方会员卡用户(WFTWH68469),授权号:8a742575-8e12-4e5b-8ba0-9e2d014bc085

下载时间:2010年11月13日

相关文档
相关文档 最新文档