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架构信息,请参看官方网站

Abnormal result by “show sga” command in 11g

一个有趣的现象。在11.1.0.6版本的数据库中show sga的显示结果并不正确。

KAMUS@orcl11g> select * from vversion;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE    11.1.0.6.0      Production
TNS for 32-bit Windows: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

Elapsed: 00:00:00.06
KAMUS@orcl11g> show sga

Total System Global Area  380817408 bytes
Fixed Size                  1333340 bytes
Variable Size             289408932 bytes
Database Buffers           83886080 bytes
Redo Buffers                6189056 bytes
KAMUS@orcl11g> show parameter memory_target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
memory_target                        big integer 364M
KAMUS@orcl11g> select sum(bytes) from vsgastat;

SUM(BYTES)
----------
 271768244

Elapsed: 00:00:00.03
KAMUS@orcl11g> select value from v$pgastat where name='total PGA allocated';

     VALUE
----------
  80623616

Elapsed: 00:00:00.01
KAMUS@orcl11g> select 380817408/1024/1024 from dual;

380817408/1024/1024
-------------------
         363.175781

Elapsed: 00:00:00.01

在show sga命令中显示Total System Global Area大小实际上是所有Memory的大小,包括了SGA+PGA,也就是memory_target参数的值。

将11g的新参数memory_target禁用,单独设置SGA和PGA,再看一下。

SYS@orcl11g> alter system set memory_target=0 scope=spfile;

System altered.
SYS@orcl11g> alter system set sga_target=271768244 scope=spfile;

System altered.
SYS@orcl11g> alter system set pga_aggregate_target=113246208 scope=spfile;

System altered.

修改完毕以后,重新启动数据库实例。再次用show sga命令显示SGA大小。

KAMUS@orcl11g> show sga

Total System Global Area  272011264 bytes
Fixed Size                  1332612 bytes
Variable Size             180357756 bytes
Database Buffers           88080384 bytes
Redo Buffers                2240512 bytes
KAMUS@orcl11g> select sum(bytes) from v$sgastat;

SUM(BYTES)
----------
 272013276

Elapsed: 00:00:00.10

这次show sga的显示结果正确了(有一些细微的误差,可以忽略不计)。

Oracle 11gR2 New Features Highlight

基本成型的Oracle 11gR2文档已经可以看到了,通览一下New Features部分,列举看上去很美妙的一些亮点。

以下仅仅是通过阅读文档得到的信息,在11gR2正式发布之前,一切都可能是会变化的。

1. RMAN Web-Services Backup

现在Oracle允许通过RMAN将数据库直接备份到Amazon S3或者其它的云计算存储解决方案中,虽然还没有明确的报价,但是可以预见一定会比自己购买带库要便宜。这里需要解决的一个是备份的效率问题,另外一个是备份集的安全性。

2. Edition-Based Redefinition
一直以来都知道在产品环境中,我们不能随便地去重定义包,函数,存储过程,视图,否则可能产生严重的锁等待,现在Edition-Based Redefinition的引入有助于在繁忙的产品环境中通过版本的控制来顺利地升级或者修改应用程序。

3. Cluster Time Service
代替NTP的东东,也许是因为NTP导致了一系列RAC的bug,所以Oracle干脆自己做一个时间同步服务,似乎这是在11gR2中安装RAC的前提条件了。

4. Columnar Compression
列式压缩,全新的压缩方式,消耗更多的CPU能力来获得更小的存储消耗,列式压缩对于应用是透明的,数据仓库系统值得去尝试一下这个新功能。

5. Data Pump Legacy Mode
在11gR2中原先的exp已经不再被支持,imp仍然允许使用。因此11gR2提供了兼容模式,允许在Data Pump中使用之前的exp和imp脚本,使客户获得更加平滑的升级体验。

6. Significant Performance Improvement of On-Commit Fast Refresh
对于物化视图刷新的改善,鼓励更多的数据仓库用户使用物化视图重写来改善应用性能。

最后也是最重量级的震撼新功能,那就是ASM全面升级,脱胎换骨。

7. Automatic Storage Management for All Data,是的,所有的数据都可以存储在ASM中,因为在11gR2中ACFS, ADVM闪亮登场了。

ASM Dynamic Volume Manager (DVM)是Oracle的卷管理软件,ASM Cluster File System (ACFS)是Oracle的集群文件系统,在这里不但可以存储以前ASM可以容纳的Oracle Datafile,同样也可以存储Oracle Binary, log file, trace file以及其它应用的程序文件,包括Oracle Clusterware需要的OCR Disk和Voting Disk现在也可以放置在ASM中了(11gR2之前必须放置在裸设备或者第三方集群文件系统中)。

期待11gR2的早日发布。