Oracle Maximum Security Architecture

Oracle 最大安全性架构

很多人应该知道在基于Oracle数据库的系统实施过程中,有一种高可用性的解决方案,称为MAA(Maximum Availability Architecture),通过RAC和Dataguard等一系列技术和选件搭建一个可以获得最大高可用性的IT环境。

MAA保证了IT系统能够被持续使用,而与此同时,另外一个需求就诞生了,系统不但需要能够持续使用,而且还需要能够安全使用。安全,同样也是IT系统能够符合行业标准的前提条件。面对安全需求,Oracle提出了MSA架构,也就是Maximum Security Architecture,最大安全性架构。

IT系统在哪些方面具有安全性需求呢?
1. 用户管理
应用系统需要有正常的用户登陆以及用户验证,具有权限的用户在自身管理方面是需要注意安全的,以防止被其它人员非法获取登陆或者查看数据的权限。

2. 存取控制
在应用系统中不同的用户应该具有不同的权限,不同权限的用户可以登陆的范围或者查看数据的多少也是不同的。这是上面一步的延展,不同的用户通过安全的机制登陆进系统了,同样需要有另外一种安全机制来控制不同的用户存取不同的数据。

3. 数据加密以及数据遮盖
进一步延展,不同的用户安全登陆系统,并且已经各自安全的查看自己的数据了,那么数据本身是否安全呢?这就需要数据加密或者数据遮盖技术来完成。

4. 监控
这个体系并不仅仅是监控报表,因为那只是事后的工作,也许一个违规的操作出现几天以后,安全报表中才出现记录,哪怕仅仅是几个小时,实际上违规的操作已然发生,产生的危害也许已经是无法挽回的了。因此对于整个应用系统的安全流程,必须要有一个完善的监控体系来实时地给予监控,在违规操作发生的当时就立即予以报警。

那么Oracle提出的MSA架构是如何在各个方面提供相应的技术以及产品呢?同样以上述的四个方面分别阐述。

1. 用户控制
1.1 单一登录
管理多个账户以完成相关的工作任务将导致安全性的薄弱环节和高额的所有权成本。一般地,为完成每天的日常工作,一个员工要管理十四个密码或账户。为了应付“密码过多”的问题,员工可能会把密码抄写下来,或选择一个容易猜中的密码。人们经常忘记密码,并频繁地向帮助部门查询。系统管理员甚至面临者一个更大的问题。系统管理员需要花费大量的时间去管理分布于各种数据库,web服务器和网络上的这些账户。如果一个雇员离开了公司,而系统管理员没有注意删除所有的账户,一些老的账号可能就仍然处于激活状态,这无疑埋下了很大的安全隐患。


单一登录原理图

这个问题的解决方案就是单一登录。单一登录可以使用户通过一个单一的登录过程就能访问所用被授权的应用。如果只管理一个密码或证明书,用户一般就不会把它记录下来,或选择一个不容易被猜中的密码。每个企业都应该有使雇员强制性选择安全密码的安全性策略。认证证书可以集中存储于一个LDAP目录,因此系统管理员可以在一个单独的地方管理这些账户。账户的集中化可以使系统管理员能更迅速地完成追加,删除和修正账户的工作。Oracle通过单点登陆服务套件(Enterprise Single Sign-On suite)集成Oracle互联网目录LDAP提供了单一认证。Oracle也可以与其他第三方单一登录服务器的集成,如Kerberos 和 Netegrity。

1.2 超强认证
通过互联网你可能看不到正在与谁做生意,所以在数字世界中存在着一种可以让系统识别身份的机制。用户名和密码的组合是一个系统认证和识别用户的最普遍或最基本的方式。一些企业认为,这种基础的,单向的认证方式并不十分安全,特别是当用户需要管理几个密码时更是如此。另一种方式,或者是认证的更安全的方式是所谓的超强认证。我们可以给出几个超强认证的例子,如X.509数字证书,证明卡和生物认证设备。Oracle 通过身份管理(COREid)结合第三方全面支持基本认证和多种超强认证。比如支持以下具有工业标准的高级认证方式:
Kerberos
RADIUS (Remote Authentication Dial-In User Service)
Secure Sockets Layer
PKI

2. 存取控制
2.1 精细的访问控制
互联网和在线服务目前已要求服务器能够实现精细的访问控制。如果您考虑数据库服务器将管理互联网上多团体用户的数据,数据库必须保证用户只能访问与它相关的数据,而不涉及其他的数据。例如,在线银行业务服务需要保证客户所访问的账户信息只能是他们自己的,而不能看到其他客户的信息。
能够控制对敏感信息的访问对需要满足隐私性需求的应用也由帮助。例如,医疗应用软件必须保证医生只能看到他们自己病人的记录。
因为数据库在传统上是在表的级别上分配权限,而不会控制在单独的记录或更低的级别,附加的应用代码可能被要求取得更精细的访问控制。传统方法的问题是如果用户利用应用之外的方式,如特别的查询工具等访问数据库,就可以绕过安全性设置。而且,维护复杂的访问控制代码会导致高额的开发和管理成本。


Oracle10g数据库的标签安全保护最敏感数据

Oracle10g数据库的标签安全性组件(Label Security)是一个精细访问控制或行级别安全性的无限的解决方案。建立在Oracle虚拟个人数据库的工具包基础上的Oracle标签安全性向数据行中追加了一个特别的标记(标签),可以达到行级别的安全性。例如,在线服务可以使用一个订阅标签,它可以将存储于相同数据库服务器中的各企业的数据更安全有效的分离开。
简单的Label Security设置方法参看我的这篇文章 – 利用OLS实现行级安全性 Step By Step

2.2内部控制
企业IT系统的内部安全管理的需求来源于传统的管理用户的模糊定义,尤其是某些特权用户的定义(比如DBA等),原先只是希望他们管理数据库表结构或本部门的数据,但由于其传统的定义使这类用户可以访问所有的应用数据,甚至敏感数据(如企业HR部门的员工工资和个人信息,Finance部门的重要业务数据等);同时,随着企业系统的发展,信息整合带来不可避免的数据库合并,大量的子系统的特权用户的访问权限被简单地扩展到了所有系统。

Oracle Database Vault正是为解决上面这些敏感的安全问题而诞生的, Oracle Databse 10g R2 企业版的新增安全选件,Database Vault安全选件可以控制什么人,在什么时间,在什么地点或是什么样的应用程序来访问,保护我们的业务避免来自于内部的用户恶意的攻击。对职责进行严格分离,甚至在我们的系统管理员中,Oracle Database Vault选件额外增加强大的可预见性的控制功能帮助企业或公司满足今天严格法规和敏感的需求。Vault是目前业内最早的相关安全的产品,引入了几个新的强大的安全特性(Realms领域、Factor代理、Rule规则等)来限制对数据库的访问,即便是一些超级用户或特权也是如此。这些特点可应用于一个灵活的,易于定制的样式去增强我们的授权需要,而不需对客户已存在的应用做任何修改。

3. 数据加密以及数据遮盖
3.1 加密系统
通过互联网从事商务活动需要通过网络传输信息。任何人,不论是黑客,解密高手还是不诚实的雇员,都可以下载一个信息包的嗅探器,当信用卡等这类敏感信息在网络中传输时,利用嗅探器可以捕获它们。不怀好意的用户也可以利用一些途径获得对存储于服务器中的数据的非法访问。为了防止对数据的非法访问,可以采用加密系统,利用信息的不规则性保护数据。它涉及数学的计算方法和密钥。公共密钥的基础结构是最普遍采用的方法。它为加密,数据整合,数字认证和数字签名提供了技术。


Oracle10g数据库的高级安全性组件保证网络传输数据安全

当数据在网络中的所有层,包括用户层,中间层和数据库层传输时,Oracle提供了网络中端到端的加密。Oracle应用服务器提供了网络中用户层和中间层的加密。Oracle数据库的高级安全性组件(Advanced Security)提供了网络中中间层和数据库层的加密。为了强化性能,Oracle通过Oracle与RSA的BSAFE库的集成,支持BHAPI的接口。Oracle也对存储于数据库内部的数据提供加密。对于非常敏感信息如信用卡号的加密,如果有对数据非法访问的企图或摆脱数据库控制的企图,如通过操作系统,可在数据库中追加一个额外的保护层。

3.2 备份安全
为了信息的延续性,信息保存的时间要求越来越长,因此备份数据的安全也受到了很大的挑战,一方面,企业使用大量的备份介质来备份数据;一方面,企业不断地从备份数据中恢复以便使用;同时,企业会对大量的备份筛选,淘汰过时的备份,这些复杂的数据备份管理过程中,信息的安全问题也日益突出。

如果企业选择将备份数据保存在磁盘中,那么TDE(Transparent Data Encryption)是应该首选考虑的,TDE可以在包含敏感数据的列,表,表空间上进行加密,加密之后的数据备份到磁盘上,备份文件中的信息也同样是加密的,这样即使备份文件意外丢失,也几乎没有可能通过恢复或者直接扫描裸文件的方法从备份文件中获得敏感数据。

在云计算十分受到追捧的今天,将自己的备份数据存储在第三方提供的云计算存储(比如Amazon S3)中,如何才能放心,如何才能保证其中的敏感数据不被剽窃,TDE无疑是理想的选择。

如果企业选择直接将数据备份到磁带中,那么Oracle Secure Backup提供方便、安全可靠的磁带备份解决方案。

为了更好地管理备份数据的安全,Oracle通过10g 之后版本中诞生的最新选件Secure Backup来很好地管理与控制备份介质尤其是磁带备份的安全问题。Secure Backup为数据库备份提供了中央磁带备份管理平台,简化了Oracle数据库与文件系统的备份管理。数据就是企业的生命力,必须被妥善保管并保护,保持在服务器激活的状态过程中不被恶意访问。数据中心的安全策略是保护物理接入服务器、数据、公司网络的关键。当数据保存至磁带,Oracle Secure Backup 将与安全策略平行工作,它提供了安全的Inter-Domain数据交换与控制消息机制,限制授权用户对备份数据的管理并通过RMAN将数据加密写入至备份磁带。

借助于成熟的Secure Socket Layer (SSL) 技术,集成Oracle Advanced Security 选件,Oracle Secure Backup可以实现双向服务器授权、加密备份恢复控制消息、网络传输过程数据加密,从而保证数据备份传输过程中的安全。

数据库备份可以通过RMAN进行加密,然后由Oracle Secure Backup完成对磁带的加密格式写入。这种集成式的加密方案保证了数据在离开数据库之后的安全。RMAN加密备份的解密是在恢复操作或重载时自动完成的,任何需要的时候密钥都是可用的,用户可以任意选用密码或Oracle Encryption Wallet。

Oracle Secure Backup提供了基于密码和关联用户权限的用户层访问控制以避免备份数据被未授权用户所访问。每个配置用户必须被注册拥有指定的系列权限,可以在域内设置执行任何数据保护操作。通过组合内部预置的18种特殊的备份及恢复权力,备份者可以高度精确的控制用户对域内的访问行为。通过选择预定义的5类对用户接入域时对各角度“读”或“写”的安全控制类,同时用户也可以定义自己的安全控制类来满足用户环境内的安全需求。一个客户只能被赋予一种安全类但是一个安全类可以拥有多个用户。

4. 监控
4.1 精细审核
审核是普遍使用的最有效的安全性机制,它可以保证系统的合法用户能完成他们应该从事的工作,同时又可以限制他们对权限的滥用。通过审核,企业可以跟踪用户的活动,从而发现安全性的漏洞。而且,用户如果知道他们正受到跟踪,他们也不愿意滥用他们的权限。因为传统的审核将产生极大量的数据,因此也很难发现有用的信息,Oracle10g强化了精细审核(FGA)。利用精细的扩展审核,安全性漏洞将会非常容易被发现。例如,如果建立了一个审核策略用于重复性筛选信用卡号,就会自动生成一个警告,警告系统管理员可能的入侵。系统管理员可根据这些警告做出响应,如终止非法数据库的对话。

4.2 Audit Vault
如果说Oracle Database Vault是完善了对于数据库SYSDBA的权限控制,那么Oracle Audit Vault则是对于企业内部违规者的进一步预防和监控。

目前最新版本的OAV 10.2.3.1不但支持Oracle的数据库产品(Oracle Database 9i到10gR2的所有数据库版本),同时也提供了对于Microsoft SQL Server 2000/2005. IBM DB2 UDB 8.2/9.5, 以及 Sybase ASE 12.5/15.0等主流关系型数据库的支持,自动获捕获,存储,分析审计数据,用户已经能够通过单一的审计解决方案来完成对企业内各种数据库活动的审计工作。

对于Oracle数据库而言,OAV的元数据可以是数据库redo日志,数据库Audit日志以及操作系统Audit日志(其它类型的数据库会有所不同),这些元数据被Audit Agent通过预先制定的捕获规则抓取到Audit Server中,而Audit Server端则提供了多样的报表查询,并且根据预先定义的企业策略提供违规操作告警功能。

Oracle Audit Vault帮助机构实施“信任但是验证”原则。Oracle Audit Vault帮助企业简化合规报告,及早检测到威胁,同时以透明的方式收集并将审计数据整合到企业级的审计整合管理解决方案中;整合并保护从Oracle数据库采集的审计数据;通过简化IT安全官员和内部审计员的工作,大幅度降低企业合规性的成本;使用户拥有最大灵活性的同时,有效监控他们的活动以确保这些行为符合企业的制度。

结论
MSA架构体现了Oracle的深度防御理念(Defense-in-Depth),在网络层,存储层,人员层都提供了完善的防护,同时在监控方面又体现了Proactive的2.0理念,实时并且全方位的给予安全监控。

世上没有安全性的魔术子弹,但Oracle始终站在产品安全性以及客户的系统安全性背后。

Oracle提出:

因为我们自己的企业也是运行在Oracle之上,我们也是提供坚不可摧软件的既得利益者。坚不可摧建立在我们具有20年为世界上最具安全性意识的客户建立系统的实力和经验的基础上,这些客户中包括情报部门和国防部,也建立在由十九个独立的安全性评估所提供的保障基础上。(我们最强劲的竞争对手只分别具有零个或一个评估。他们为什么不在安全产品的生命周期和可证明的安全软件上进行投资呢?)

坚不可摧的软件是一个长期的承诺,它已经在实施过程中,它将被扩展到对每个Oracle产品的相同的开发方法和保障评定中。今天,所有强烈关注安全性的客户都会考虑把他们的数据库运行在Oracle上。

获取更多MSA架构信息,请参看官方网站

让我们的数据更安全

很早之前,在做税务行业数据库架构整体方案的时候,曾经建议过将多个数据库实例整合到一个RAC数据库中时,客户提出过一个疑问,数据都放在一个数据库里面,安全性怎么保证?物理隔离才安全。

那时候,我的回答是,物理隔离就安全了?数据库的安全绝对不仅仅是是否能够从这台机器登陆到数据库服务器上,那只是一个前端的考虑点而已,在数据传输的每个阶段,都需要考虑安全性,都需要制定跟企业特点相符合的安全策略,而Oracle数据库在即使是非物理隔离的多个数据库实例上,也同样具备多种安全保护措施。

这里,并不过多地探讨到底Oracle数据库提供了多少Security的解决方案,只是想说,现在的企业在考虑安全性上,更多地是在想如何从外部防范入侵,大多数都忽略了内部的问题,中国有句古话 – 千里之堤毁于蚁穴,其实,内部的毁坏可能才是最致命的。

曾经被朋友请去给某个公安机关的数据库做恢复工作,数据的备份是每天的export文件,且不说这样的备份是否合理,单单就安全性考虑,至少在我帮助恢复和最后检查数据完整性的时候,我可以看到居民们的姓名、身份证号码,甚至,如果当时我愿意copy一份dmp文件拿走的话,也恐怕没有人知道。

再看看我曾经服务过的单位,都或多或少存在这样的安全隐患。

仍然回到我比较熟悉的税务行业,诚然,税务行业的数据保密级别跟银行相比,要低不少,但是以其中的“防伪税控”系统为例,其中存放着企业增值税的信息,并且系统的复杂程度跟税务行业的其它应用相比要简单不少,表的数量不过百张,表结构也相对简单,直接通过查看表中的数据基本上可以获得需要的信息。而“稽核协查”系统的数据又基本上全部由“防伪税控”系统中复制而来,这其中包含着可能会存在的企业违规操作信息。

国税有着企业的纳税情况;地税有着个人的纳税额;银行有着个人的贷款情况、信用卡消费情况;移动,网通,医院,网监,只要有数据库的地方,就有着安全的需求,以上任何一个企事业单位,如果数据泄漏了,恐怕都是一件天大的事情。

数据库的安全建设,现在在国内还仅仅处于一个起步的阶段,在我见过的大多数数据库中,都或多或少存在着安全问题,无论是安装了多少防火墙,无论是安装了多厚的铁门,铁门前面站了多少警卫,进门之前需要签多少字,中控室里安装了多少摄像头,只要有合适的理由登陆进数据库中,一切防范措施似乎都形同虚设了。让跟业务无关的技术人员能够直接面对最终的数据,仅仅这一点就足够让人后脊梁冒冷汗的。

实际上,对于企业数据安全性的要求,现在已经不仅仅是企业内部的需求了,随着美国萨班斯法案(Sarbanes-Oxley)、美国HIPAA法案(Health Insurance Portability and Accountability Act)、日本个人信息保护法案、欧盟隐私和电子通信指令等法规和隐私保护指令的不断出台,中国也开始制定了《企业内部控制基本规范》,该法规被称为中国版的萨班斯法案,在2008年6月28日发布,在规范内最后一条明确指出“本规范自2009年7月1日起实施”,实施范围限定为上市公司,同时也鼓励在非上市的其它大中型企业内实行。

看一下上面提到的几个问题,再看一下Oracle数据库中是否有相应的解决方法。

1. 如何让数据库管理员看不到业务数据?

Oracle Database Vault,Oracle数据库企业版的一个增值选件。它主要是用于管理单个数据库的安全性方面的,当然它也适用于Oracle的RAC环境。在Oracle Database Vault 引入了两个新概念,第一就是领域的概念,也就是说我们可以把数据库的对象组成一个领域,例如说多个表,整个应用或者多个应用,而Database Vault 管理员可以把要进行安全保护的数据库对象放到领域中。第二个概念是规则集合的概念,Database Vault 管理员可以创建一个包含几乎所有DDL和DML操作的语句的集合,然后加上相应的规则,比如说时间,IP地址之类,就能够限制用户对于特定数据的访问权限,而这个是可以应用到所有的用户上的,包括Oracle数据库里面的超级用户sys和system。
有了Oracle Database Vault ,我们需要培养的是一个负责制定公司安全策略的并且会点击鼠标的家伙,通过OEM中的图形化界面,制定不同的数据库领域,要知道监控一个人要比监控一堆DBA简单的多。

From Drop Box

2. 如何让数据库系统的审计符合法律规定?

Oracle Audit Valut,一种新的安全产品,它使审计收集和分析流程自动化,将审计数据变为关键的安全资源,从而帮助应对如今围绕合规性和内部威胁方面的重要业务挑战。Oracle Audit Vault帮助机构实施“信任但是验证”原则。Oracle Audit Vault帮助企业简化合规报告,及早检测到威胁,同时以透明的方式收集并将审计数据整合到企业级的审计整合管理解决方案中;整合并保护从Oracle数据库采集的审计数据;通过简化IT安全官员和内部审计员的工作,大幅度降低企业合规性的成本;使用户拥有最大灵活性的同时,有效监控他们的活动以确保这些行为符合企业的制度。

From Drop Box

3. 如何让EXP出来的文件即使被拿走了,也无法构成威胁?

很遗憾,目前为止还没有这样的防范措施。
我们可以实施TDE(Transparent Data Encryption),但是TDE目前还不支持旧的EXP和IMP技术,那么如果要防范此类问题,升级到Oracle10g,用expdp(Datapump)取代原始的exp,而TDE技术是支持Datapump的。

From Drop Box

What is Oracle Audit Vault

Oracle Audit Vault

Oracle忽然很倾向于使用Vault(保险库)这个词语了,推出了Oracle Database Vault,现在又是Oracle Audit Vault

官方文档的示意图给出Oracle Audit Vault的整体架构。

OAV是一个新的安全产品(塞班斯法案害人不浅啊),如果说Oracle Database Vault是完善了对于数据库SYSDBA的权限控制,那么Oracle Audit Vault则是对于企业内部违规者的进一步预防和监控。目前OAV只针对于Oracle的数据库产品,支持Oracle Database 9i到10gR2的所有数据库版本,实现的是自动获捕获,存储,分析审计数据的功能。

OAV的元数据可以是数据库redo日志数据库Audit日志以及操作系统Audit日志,这些元数据被Audit Agent通过预先制定的捕获规则抓取到Audit Server中,而Audit Server端则提供了多样的报表查询,并且根据预先定义的企业策略提供违规操作告警功能。

OAV是针对Sarbanes-Oxley (SOX)的应景之作,它还有很长的路要走,作为一个安全产品,仅仅是面向Oracle数据库还是远远不够的,Oracle也承诺将在以后逐步完善对于Microsoft SQL Server和IBM UDB的支持。

目前Oracle Audit Vault已经推出了大部分平台上的版本,包括Linux, AIX, HP-UX, Soalris,而Windows和HP-Itanium的版本也将在不久推出,不知道国内的企业什么时候才会准备考虑这些安全方面的产品?