技术开发 频道

SQL Server 2005 VS. Oracle 10g:安全性比较


【IT168 数据库】

    内容提要 

    随着越来越多的网络连接在一起,安全性也变得越来越重要。企业的资产需要受到保护,特别是包含了企业重要信息的数据库。保护数据以防止黑客、窃贼、企业自己的员工以及竞争对手破坏数据。 

    为了响应企业的这种安全需求,Oracle和Microsoft均在其数据库产品中实现了强大的安全特性。通过正确的安全策略和实践,两种数据库都支持对有价值的数据资产进行保护。该白皮书将在安全特性、功能、成本以及管理简易性等方面对两个数据库产品提供的安全性进行比较。 

    关键调查 

    以下是作者所作的一些关键调查结果: 

    1. 通过实现正确的安全策略以及遵循数据库开发厂商建议的非常好的实践,Microsoft® SQL Server™ 2005和 Oracle 10g足以安全和保护您的数据。 

    2. 两个数据库产品本质上提供了相同的安全功能。这些功能包括:用户验证、授权、网络加密、数据加密、以及单一帐户登陆(SSO)。 

    3. 在SQL Server 2005中管理安全性明显要比Oracle 10g简单得多。SQL Server的这种管理简易性将随着时间的推移而转换为较低的维护和管理成本。 

    4. 同样的功能但SQL Server 2005要比Oracle廉价许多。Microsoft将所有的安全功能作为数据库内置功能提供给用户,而Oracle提供的许多安全功能都需要额外付费。要想在Oracle平台上获得和SQL Server 2005同样的安全功能,Oracle要求您付一大笔钱来购买企业版和高级安全选项。 

    5. SQL Server中发现的安全漏洞也比Oracle少——而且Microsoft解决这些安全漏洞的速度也快于Oracle。这意味着使用SQL Server企业每天遭受的安全性风险要远远低于使用Oracle。 

    安全方程式等于技术、人员和流程 

    随着越来越多的网络连接在一起,安全性也变得越来越重要。企业的资产需要受到保护,特别是包含了企业重要信息的数据库。一份来自CERT Coordination Center(由卡纳基梅隆大学主持运作)的调查显示,在2001年: 

    • 有90%的回答者已经发现了计算机安全缺口。 
    • 有74% 的回答者承认由于安全缺口而导致财务损失。 
    • 有70% 报告了诸如私有信息被盗、金融欺诈、系统入侵、拒绝服务、以及数据和网络遭到破坏等事件。 

    安全数据库环境决不仅仅是拥有出色的技术,因为再伟大的技术也会被粗心的人员或者无效的程序打败。例如,数据库技术允许您增强密码安全策略,要求密码至少为14个字符并且满足密码复杂性要求,但是如果用户将密码记在便签上或者告知一个打电话冒充信息技术部门的人,那么再好的技术也不起作用。Giga Information Group陈述“对于安全官员来说,企业的安全性首先是人员和流程的问题,排在第三位的才是技术”。

    人员和流程是安全性中的最薄弱的环节。防火墙、反病毒软件、加密、以及入侵检测系统只是帮助技术人员和流程实现企业资源安全的工具而已。企业可以花钱购买最好的技术,但是如果企业中没有好的流程解决服务器补丁问题,或者没有对员工进行培训,告诉他们要当心可能被攻击者利用的社交工程陷阱,那么企业很快就会被攻击者打败。如果有效的人员和流程等于好的安全性,那么我们该如何做才能提高和改进安全环境呢?记住以下几个观点: 

    • 企业中的人员是大多数企业安全缺口的一个潜在来源,不管他们是不是故意的。人是可以被改造的,因此也是最容易被利用的目标。人员需要接受关于避免社交工程陷阱以及企业安全策略等方面的培训。培训需要坚持不解的进行,因为安全是不断动态变化的。培训员工如何识别和报告社交工程陷阱可以大大地增强企业的安全性。企业对安全性要有正确的认识,它决不只是一个预算问题,更多的是解决那些与安全教育训练和业务过程有关的问题。 

    • 中小型企业在实施安全计算环境时会受到很多限制。由于信息技术管理人员数量有限、缺乏高学历人员或技术专家、缺乏补丁和最新的病毒定义、古老的操作系统、有限的信息技术预算等等,这使信息技术人员常常无法关注于和安全相关的问题。 

    • 威胁模型的本质就是理解服务器架构中存在那些威胁以及如何减缓这些威胁。要关注整个环境的威胁模型,然后对安全性进行利弊权衡。 

    安全企业资源需要投入费用。绝大多数企业都竭尽全力地赚钱并且尽可能地节省开支和费用。您需要权衡投入多少费用来安全那些存储在数据库服务器中的数据。要把恢复数据发生的费用、数据破坏导致的企业损失以及为实现信息安全而投入的费用放在一起作权衡。 

    机密性、一致性、可用性三者间存在相互制约关系。您在决定如何实现数据安全性时必须要权衡和考虑这些原则。如果在一个方面进行了增强就可能导致另一个方面功能被削弱。例如您通过安全措施保护了机密数据,其结果就是获取数据变得更难了。
提升企业安全的正确方法就是致力于那些使用多种安全机制并因此实现多层安全性的手段和方法。尽管一种安全机制可能出现失败,但多种安全机制同时失败的机会就十分渺茫了。


    安全性成本/收益分析 

    任何企业都不需要达到联邦政府或金融机构部门的安全级别。企业需要对比信息安全的成本和受保护的信息其价值的高低。为了帮助您了解企业需要采取哪些步骤来建立安全环境,Microsoft提供了帮助您建立安全风险管理条例(SRMD)的指导原则。
您可以在Microsoft TechNet上的The Security Risk Management Guide中获得安全风险管理的指导原则。 

    该指导原则的主旨就是建立安全策略,实施适当的和最为经济的安全级别来保护企业的各种资产。建立这样的安全策略需要四个基本步骤: 

    1. 风险评估 – 标识企业存在的风险以及风险优先级。 
    2. 指导决策支持 – 根据风险-收益分析流程来标识和评价风险控制解决方案。 
    3. 实现风险控制 – 部署和运作风险控制方案以降低企业面临的风险。 
    4. 评价程序的有效性 – 分析风险管理过程的有效性,并验证风险控制系统提供了预期程度的保护。 

    风险管理过程提供了一致的途径将有限的资源组织起来,从而实现企业资产的安全风险管理。当您使用该过程建立起成本-收益控制环境后,您的企业就会从这些成本-收益控制系统以及评价有效性的程序中获得良好的收益。这样做可以帮助企业达到可接受的安全水平,同时又不会导致过度开支。您应该考虑每一层需要安全的资产,包括物理层、网络层、宿主应用程序层、数据层,以及如何在每一层实现正确的控制和评价系统。 

    企业将大量需要保护的数据存储在数据库服务器中,大多数信息技术团体也致力于应用层的安全保护。该白皮书将关注于对Microsoft Windows®平台上两个最流行的数据库产品:SQL Server和Oracle的安全功能和成本效益方面的比较。 

    安全技术概述 

    在开始了解每一种数据库产品提供的安全技术之前,您应该对安全领域中常用的概念建立基本的认识。如果要判定一个数据库产品的安全性,还需要了解每一个概念的就安全性而言的重要性。 

    验证 
    验证是指检验用户凭据以决定是否允许该用户访问网络或者资源的过程。验证通常在您输入用户名和密码时进行。通过对这些输入信息进行判断来决定您是否为合法用户。可以通过不同的加密技术,从单向的哈希到使用更强加密技术的智能卡来加强使用简单用户名和密码的验证过程。验证过程对您的身份进行确认,这些身份信息可用于对网络上的个体进行身份鉴别。 

    授权 
    当您的身份被确认后,系统就可以决定允许您使用的资源了。授权根据您的验证凭据定义哪些资源您拥有使用权限。这允许网络或者应用程序管理员保护敏感的资源以及通过网络共享资源,但同时确信只有正确的个体可以访问资源。授权是控制资源访问的一种有效且简单的手段,但它需要安全可信地存储用户名和密码,对于防止他人窃听通过网络传输的数据也表现得无能为力。此时您需要使用加密来抵制这种攻击。 

    加密 
    加密使用某种算法对信息进行处理使之无法被那些没有密钥的个体识别。密钥用于解锁或锁住数据,就像您使用房屋或汽车钥匙一样。通过网络传输的信息或者存储在无法通过授权来保证安全的系统上的信息,加密可以防止信息泄露。有三种基本的加密技术:哈希、对称加密、以及非对称加密。 

    证书 
    X.509证书是证书标准,主要包括已经被可信的第三方机构审查确认的个体或组织的相关信息,因此可以在某种程度上相信对方是真实的。证书中可以包含诸如名称、地址、联络信息、域、以及用于加密消息和验证签名的公钥等个体或组织的相关信息。证书中提供的信息由交换信息双方均信任的第三方认证授权机构(CA)进行核实和确认。CA对证书中的信息进行签名使之无法被篡改。这个过程使您和对方交换密钥时可以确认对方的真实身份。许多对网络信息进行加密的技术都会使用证书。
更多关于加密和证书的信息,请参阅Microsoft TechNet的 “Cryptography, Certificates, and Secure Communications” 

    安全数据库资源 
    数据库中包含了大量重要且敏感的企业信息。许多企业在确保数据库系统运行良好、稳定可靠等方面投入资金,但却没有投入足够的时间来思考在安全性以及维护安全的数据库环境方面的成本。数据库的初始成本只是一个方面,而安全和维护系统的难易程度会增加数据库产品的后续成本。我们来比较一下SQL Server和Oracle在安全管理和开发安全应用程序的简便性方面提供的安全特性。 

    数据库的核心安全特性比较 
    由于数据库包含了企业最为重要的信息,因此让我们来看看保护数据库方面的关键概念。下表提供了每种数据库产品中安全特性的概要。


表1:比较Oracle和SQL Server

    SQL Server 2005和Oracle 10g具有相同的安全功能,但是Oracle上的许多安全功能需要您额外付费才能获得,需要购买高级加密包,并且只有在Oracle 10g企业版上才能运行。Microsoft相信人人都需要强大的安全性,因此SQL Server 2005在所有版本中——Express、Workgroup、标准版和企业版都提供了强大的安全功能。这其中还包括SQL Server提供的管理工具,这些管理工具使安全管理更加简便,而不是像Oracle那样使用配置文件。


    帐户管理 

    验证 
   
SQL Server 2005支持两种类型的验证:Windows验证和SQL Server验证。 

    Windows验证是SQL Server 2005中默认和推荐的验证模式。Windows验证为Windows用户提供了单一帐户登录(SSO)解决方案,用户需要记住的密码减少了,意味着用户将密码写在纸上的可能性也减少了。Windows验证除了可以利用单一帐户进行登陆,还可以利用Windows组来管理安全性,从而使帐户管理更简单。通过Windows集成,SQL Server 2005可以利用诸如密码复杂性和密码过期等应用在Windows域账户上的安全策略。由于和Windows域使用了相同的安全策略,因此您可以在整个计算环境中推行一致的密码策略。Windows验证还可以利用Windows用户使用的诸如Kerberos和NT LAN Manager(NTLM)作为安全验证协议,对通过网络发送的密码进行加密。


图1:SQL Server 2005验证选项和新的强制密码策略及密码过期策略

    在SQL Server中还包含SQL Server验证,负责为非Windows用户或者连接字符串中包含用户ID和密码的应用程序提供验证。这种登陆方式易于使用,也很受应用开发员的欢迎,但是它却不向Windows验证那样安全,微软也不推荐使用该模式。SQL Server 2005对SQL Server验证选项作了重大改变。 

    首先,如果使用新的Microsoft数据访问组件(MDAC)客户端,那么SQL验证方式支持通过SQL生成的证书进行加密。此外,进一步增强了SQL验证模式,默认SQL Server 2005所有客户/服务器之间的通信都是加密的。Oracle 10g标准版中是不包含网络加密选项的。 

    其次,SQL Server 2005结合Windows Server™ 2003,提供对密码复杂性、密码过期、帐户锁定等组策略的支持。这意味着您可以推行和Windows帐户相同的密码策略。密码更难被破译,因为从SQL Server 2005开始所有密码都区分大小写。 

    无论选择那种安装模式,SQL Server验证都要求您安装时必须设置sa密码,如图2所示。这种预防措施降低了恶意用户利用可能存在的bug进行攻击的风险。

图2:SQL Server 2005验证模式对话框

    隔离用户帐户和数据库对象

    角色和Schemas 
   
角色允许您将用户分组,从而更易于将安全设置应用到数据库对象或者服务器。您可以分配权限给角色,然后将用户添加到角色或者从角色中删除用户来分配或回收权限。SQL Server 2005通过schema将此概念扩展到数据库对象上。 

    SQL Server 2005打破了用户和他们所拥有的数据库对象之间的联系,用户管理工作也因此更加简便。用户不再直接拥有数据库对象,而是由schema拥有数据库对象,然后用户和schema进行关联。删除用户时不需要改变数据库对象的所有者关系链,因为用户不再拥有对象—对象由schema拥有。通过Schema将数据库对象分组,当需要在对象上应用权限和所有者关系时,就可以将这些对象看作一个单元来进行配置,如图3所示。这使安全性更易于管理,因为可以将角色或用户直接应用到schema。例如,通过一个Transact-SQL语句就可以将某个schema中所有存储过程的执行权限分配给一个角色。这样更便于对拥有众多对象的数据库进行安全管理。多个用户可以管理一个schema,进而管理schema中的所有对象,而且无需为用户分配访问单个对象的权限。


图3:设置schema的权限

    使用最小权限执行 
    一个好的安全策略其特点之一就是授予用户完成任务所需的最小权限。SQL Server 2005还提供的一个新的强大特性就是能够以其他用户身份执行存储过程。在Oracle中该特性只能通过写一些PL/SQL才可用,而且操作相当困难。在SQL Server 2005中可以使用EXECUTE AS执行存储过程或者用户定义函数。SQL Server 2005还允许一个例程执行时从例程中改变其所处的安全上下文环境。用户在执行包含了EXECUTE AS的存储过程或者函数之前,必须拥有该存储过程或函数的执行权限。例如,可以使用EXECUTE AS支持SQL Server所有者关系链。SQL Server所有者关系链允许您在存储过程、视图、或者函数而不是底层表上分配权限。只要数据库对象的所有者和表的所有者一致,就可以执行该对象。如果所有者不同,那么就需要在表上显式地授予用户权限,这会造成潜在的安全隐患,因为用户被授予了过多的权限。使用EXECUTE AS子句就可以克服存储过程以及用户定义函数所有者关系链断裂的问题。EXECUTE AS还可以作为将粒度化权限应用在数据库上的一种手段。



    Oracle 10g身份验证 

    Oracle 10g支持通过Oracle验证、Windows验证、以及高级安全选项进行身份验证。 

    基于Oracle的身份验证方式将用户名和密码安全地存储在数据库中,所有平台均支持这种验证方式,类似于SQL Server验证。密码通过加密实现安全存储。和SQL Server 2005一样,您也可以使用安全策略帮助管理Oracle数据库验证帐户的密码并在整个域内提供一致的密码策略。Oracle数据库验证是Oracle 10g默认的验证机制,这与Windows验证正好形成鲜明对比,因为SQL Server平台上的默认验证机制就是Windows验证,它为用户提供了使用Kerberos这种强大验证协议的能力。如果希望在Oracle中使用更强的验证协议,那么就需要启用Windows验证或者在Oracle 10g企业版中安装Oracle高级安全选项。 

    在Oracle 10g中一个未被普遍使用的选项就是集成的Windows验证。使用Windows验证机制对Oracle用户进行身份验证的好处包括:使用NT LAN Manager或者Kerberos作为验证协议、在整个Windows域中推行一致的密码策略等。Oracle 10g通过两种手段来支持Windows验证:两个特殊的Windows组以及与当前登录的Windows用户相匹配的Oracle用户。 Oracle安装会创建ORA_DBA和ORA_OPER这两个Windows组。可以使用Oracle Administration Assistant for Windows将用户添加到这些组。
登录到SQL*Plus后,ORA_DBA组中任何用户都可以使用下面的命令作为SYSDBA连接到任何Oracle应用程序:
sqlplus "/ as sysdba"
    您也许注意到该登录并没有与之相关的用户ID,但是登录还是可以通过Windows的身份验证并且拥有SYSDBA权限(完全访问)。如果您不希望某个帐户拥有SYSDBA权限,可以将用户添加到SYS_OPER组,那么该用户只能执行有限的数据库管理员(DBA)功能,例如执行数据库备份。 

    也可以在Oracle数据库中使用Windows验证作为用户验证机制。完成该任务需要在数据库中创建一个和Windows用户ID一样的用户ID,此外还有一些限制,例如Oracle用户名中不允许包含30个以上字符。 

    因为Windows验证方式提供了SSO、安全策略、以及安全的验证协议,因此我们将对两个平台上设置Windows验证的方式做个对比。

在SQL Server 2005中设置Windows身份验证

    配置步骤总结: 

    1. 启动SQL Server Management Studio. 
    浏览到Server Security节点。 
    选择用于创建SQL Server login的Windows帐户。 
    在Server卡片中,单击Server Role为用户选择诸于System Administrator或者Backup Operator之类的角色。 
    单击Database Access选择授予用户访问权限的数据库。

    在SQL Server 2005中设置Windows验证: 
    1. 启动SQL Server Management Studio,如图5所示: 


图5:SQL Server Management Studio

    打开您的计算机名称节点,然后展开 Security节点并单击Logins节点,如图6所示: 


图6:Logins节点

    要想为Windows用户帐户创建SQL Server login,右键单击Logins节点,然后选择New Login… 打开SQL Server Login Properties对话框。单击Name字段旁边的Search… 按钮来选择用户,如图7所示:


图7选择现有的Windows用户

    如图8所示,为用户分配数据库角色或者权限。


图8:选择数据库角色或权限

    如图9所示,为用户分配服务器角色。


图9:服务器角色

    点击OK完成任务。 

    现在让我们看看在Oracle 10g中如何创建连接到Windows帐户的数据库用户。

    在Oracle 10g中设置Windows 

    设置步骤总结: 

    1. 浏览\%ORACLE_HOME%\network\admin文件夹下的sqlnet.ora文件。 
    使用适当的信息编辑sqlnet.ora文件。 
    在数据库中创建与Windows用户IDs匹配的普通用户。 
    将数据库用户添加到适当的数据库角色。 
    将Windows用户添加到ORA_DBA或者ORA_OPER组中以授予适当的管理访问权限。 

    在Oracle 10g中设置Windows验证: 
    1. 您必须浏览%ORACLE_HOME%\network\admin文件夹下的sqlnet.ora文本配置文件来启用Windows验证。(%ORACLE_HOME%是Oracle的安装位置) 

    sqlnet.ora文件内容如图10所示,使用该文件配置如何建立到服务器的连接。


图10:sqlnet.ora文件

    修改sqlnet.ora文件中NAMES.DIRECTORY_PATH的设置,使之接受ORA_DBA或者ORA_OPER用户:

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)

    NAMES.DIRECTORY_PATH用于控制客户端工具如何连接到Oracle服务器。添加HOSTNAME将确保您能够在基于DNS的Windows环境中查找到服务器。 

    将SQLNET.AUTHENTICATION_SERVICES修改为下面的值:

SQLNET.AUTHENTICATION_SERVICES= (NONE, NTS)

    设置SQLNET.AUTHENTICATION_SERVICES参数最初是为了通过NTS配置来支持Windows验证,但是该设置会导致很多应用程序失败,因为Oracle验证还没有启用。添加参数None将启用Oracle和Windows验证,类似于创建了一个混合模式的安全验证。 

    要想使Windows用户拥有DBA和Operators权限,必须确认系统中存在ORA_DBA和ORA_OPER的Windows组。
将用户添加到ORA_DBA组意味着该用户是数据库管理员;如果用户需要执行诸如备份数据库之类的操作,那么将用户添加到ORA_OPER组。可以使用Oracle Administration Assistant for Windows将用户添加到组,或者创建组。 

    从Configuration and Migration Tools菜单中选择Oracle Administration Assistant for Windows NT. 

    右键单击OS Database Operators组,然后从图11所示的菜单中选择Add\Remove…


图11:Add/Remove… 选项

    在OS Database Operators对话框中选择用户和域,然后单击Add按钮,点击OK。


图12:选择域和Windows用户

    如果是非DBA类型的角色,您需要在数据库中创建一个和现有的Windows用户名相同的用户。 

    确保将init.ora文件(%ORACLE_HOME%\database文件夹)中下面的参数设置为:

os_authent_prefix = “”

如果改变了该参数值,则必须重启Oracle。

使用下面的命令创建数据库用户(用户名必须全部大写):

create user "HOME\AMYJ" identified externally; grant create session to "HOME\AMYJ";

该命令在Oracle中创建名为HOME\AMYJ的用户并且有一个对应的Windows用户。

正如您看到的一样,在Oracle 10g中设置安全选项要比在SQL Server中完成相同的任务复杂的多。

Oracle还提供了其他验证机制,但只针对那些Oracle 10g企业版并且额外付费购买了Oracle高级安全选项的客户。SQL Server通过和Windows的集成为用户提供这些选项并且不再需要其他费用。Oracle高级安全选项提供了在Oracle上支持SSO的集中身份验证,此外它还支持第三方诸如Kereberos、CyberSafe TrustBroker、SecurID、Identix、TouchNet II以及RADIUS等第三方验证协议。

注意:在Oracle 10g中设置用户验证比SQL Server复杂的多。


    审查 

    审查帮助您跟踪系统中未经授权的用户行为并阻止这种行为。针对那些具有高特权但却干坏事的管理员或者用户进行审查对保护您的系统十分有用。一个好的审查系统允许您只对那些您认为重要的事件进行过滤,因此您不会湮没在海量的信息中。所有数据库平台均在不同程度上提供审查功能。 

    SQL Server 2005以几种不同方式支持审查。它使用Windows安全日志、SQL Profiler、以及数据定义语言(DDL)触发器来提供审查功能。 

    Windows安全日志是Windows用于跟踪系统中对象的访问、权力的使用、成功或失败的帐户验证的最主要机制。除了由Windows安全日志提供的操作系统级别的审查,图13显示的SQL Profiler则提供了比Windows安全日志更详细级别的审查。


图13:SQL Profiler界面

    SQL Profiler是用于审查SQL Server事件的强大工具。您可以使用图14中显示的Trace Properties对话框配置SQL Server事件。


图14:Properties对话框中包含了各种粒度的安全审查

    SQL Server 2005提供了一个允许没有系统管理员权限的用户使用SQL Profiler的角色。这可以帮助开发人员和审查人员对系统进行监视而无须授予他们额外的权限。使用Windows安全日志和SQL Server Profiler可以满足您大部分的审查需求,此外您还可以使用数据定义语言(DDL)。 

    DDL是使用SQL语言中的CREATE、ALTER和DROP语句。SQL Server 2005提供了DDL触发器,因此您可以决定数据库中的对象是何时创建和删除的,借助SQL Server通知服务的强大集成您还可以接收相应的通知。SQL Profiler还为Microsoft SQL Server分析服务提供了新的审查功能以增强对OLAP数据的审查。 

    Oracle 10g提供了精细粒度的审查,允许您定义审查策略,可以对对象、权限、对象访问、SQL语句的类型等等进行审查。您还可以开启报警功能这样管理员可以在出现安全问题时迅速收到通知。Oracle 10g审查的初始配置比较困难,因为您必须首先使用 PL\SQL存储过程建立审查事件,然后再将事件添加到审查策略中。SQL Server 2005提供了可与Oracle一比高下的精细粒度的审查功能,但是更易于管理而且可以通过图形用户界面报告审查结果。

    加密 

    加密就对数据进行处理使之无法被没有正确密钥的用户识别和读取的一个过程。当您处理来自数据库的数据时,有两个最基本的方面需要考虑:通过网络发送数据以及在数据库中存储数据。 

    网络加密 

    SQL Server 2005所有版本都支持通过各种不同方式,如IP Security(IP SEC)和安全套接字层(SSL)对网络流加密的能力。相比之下,Oracle仅在Oracle 10g企业版中提供加密功能,并且还需要额外购买高级安全选项。 

    SQL Server支持两种广泛采用的网络标准来加密通过网络连接发送的数据:SSL和IP SEC。这些协议是由Windows支持的。SSL是通过SQL Server与Internet信息服务(IIS)或者通过SQL Server 2005中包含的证书服务器支持的。 

    SQL Server 2005提供了自己的证书服务以配置SSL网络加密。通过SQL Server创建的证书与X.509v3 证书标准兼容。SQL Server创建的证书可用于创建SSL连接,或用于SQL服务代理。SQL Server采取了诸如只响应加密的客户端的请求、对于分析服务器等产品,仅将加密的数据流返回给客户端等手段使自己更加安全。 

    Windows还支持使用IP SEC来加密网络连接通道。Oracle也提供了和SQL Server同样的网络加密功能,但费用很高,需要购买Oracle 10g企业版with高级安全选项。 

    Oracle还通过高级安全选项提供了使用RSA和DES算法加密数据的功能,类似于SQL Server为数据私密性提供的加密类型。Oracle能够在每个网络发送的数据包上产生一个Message Digest version 5 (MD5)的校验和,因此数据库可以据此判定某个网络包的内容是否被篡改了。当然使用类似于SSL的加密选项可以提供哈希,还可以使用更安全的安全哈希算法(SHA)来更好地抵制攻击。 

    加密在两个平台上都是可配置的选项。在Oracle 10g企业版附带高级安全选项中默认该选项是关闭的,需要您手工开启;而SQL Server 2005默认则启用该选项以提供最安全的数据环境。您需要考虑是否在安全策略中包括数据私密性,因为您必须在安全级别和应用程序性能二者间权衡利弊。 

    数据加密 

    SQL Server 2005通过集成的证书服务器直接提供在数据库中加密数据的功能。SQL Server 2005包含了六个内置函数用于加密和解密数据。

EncryptByCert DecryptByCert EncryptByKey DecryptByKey EncryptByAssym DecryptByAssym

这些函数允许你使用已有的证书(最安全)、一个简单的密钥(密码),或者是非对称密钥(公钥/私钥)加密数据。SQL Server 2005 可以创建和管理自己的证书,从而对存储在数据库中的数据提供十分强大的加密功能。SQL Server 2005中的Transact-SQL也在支持证书管理方面进行了如下的增强。

创建证书:

CREATE CERTIFICATE MyCert WITH SUBJECT = ‘My Subject’, ENCRYPTION PASSWORD = ‘jfdsij380fukanfjcxvDJEOD#$fksdwr’, EXPIRY_DATE =12/31/2006’;

证书创建完成后,您就可以使用EncryptByCert 函数来加密数据并将结果存储在变量中:

DECLARE @VAL nvarchar(8000) SELECT @VAL = EncryptByCert(Cert_ID(‘MyCert’), N’Some Message’)

然后,您可以使用下面的函数从字段或变量中读出加密前的值:

SELECT CAST(DecryptByCert(Cert_ID(‘MyCert’),
@VAL, N’ jfdsij380fukanfjcxvDJEOD#$fksdwr’)
AS nvarchar)

 通过集成的证书服务和更多的加密选项,SQL Server 2005在安全性方面远远超过Oracle提供的特性,即使配备了高级安全选项。

Oracle 10g标准版没有提供加密功能。可以通过购买Oracle 10g企业版来获得加密功能,但即使这样,Oracle提供的加密功能也只能通过单独购买许可的高级安全选项来得到,因为在Oracle中数据一致性和数据加密都是由该选项提供的。

    成本如何? 

    安全不仅仅是技术,还包括人员和流程,后者比前者更加薄弱。数据库服务器为普通用户提供直观且易于使用的管理工具,从而尽可能提供对人员和流程的支持,这一点十分重要。Oracle 10g提供的基本管理工具(对于Oracle Management Server无须额外付费)使用起来不是很方便,致使管理员在安全他们的数据库和服务器时面临更大的困难,并由此产生安全事故。DBA需要了解他负责管理的数据库服务器的方方面面,但事实上许多企业都无法做到这一点。 

    不管技术有多么出众,如果安全策略和程序不恰当,如果没有培训用户思考安全性以及避免社交工程陷阱,如果没有实际安全您的数据环境,那么所有的安全特性都没将失去作用。安全首先是通过策略和人员开始的。当您配置了正确的安全策略和程序,就需要选择胜任的技术并以最为经济有效的方式来实现安全策略。下表使用Microsoft网站和Oracle网站提供的关于每个CPU许可费用的数据来说明两个产品在费用上的差异:

    通过比较可以看出SQL Server更胜一筹。SQL Server 2005增强了这些特性,通过提供更强的默认安全设置、数据加密、schema支持等等,匹配了 10g为Oracle最新版本数据库提供的功能。使用SQL Server 2005只需投入很少的成本,因为所有安全特性都作为标准组件包含在产品包中。Oracle则需要您购买高级安全包,并且只向Oracle企业版的用户销售,这无疑大大地增加了成本。这意味着Oracle数据库的标准功能中不包括诸如单一登陆集成身份验证、网络包加密、公钥基础架构(PKI)、或者Kerberos等基本安全特性。拥有这些功能选项只能通过额外付费并使用企业版的Oracle数据库。SQL Server 2005将所有这些选项作为标准功能构建在核心数据库产品中。因此两个数据库产品均包含了相同的核心安全特性,使用SQL Server 2005企业可以节省费用并获得相同的安全特性。 

    从数据库的安全功能的角度如何对两个数据库进行比较呢?二者具有相同的功能,但Oracle收取的费用更高。
您还需要考虑以后硬件升级而发生的成本。Microsoft宣称每CPU许可模式下只对每个插槽(per socket)收取费用,而Oracle则宣称对每个核(per core)收取费用。所有主要的芯片制造商都致力于通过一槽多核的方式来不断增加硬件的处理能力。这意味着未来升级硬件的成本会出您意料地加倍增长,这也因此大大增加了产品的成本。

    哪个数据库安全性更高? 

    衡量一个数据库系统有多么安全还应该包括已登记在册的数据库安全公告、安全事件、或者安全忠告的数目。安全公告显示了数据库开发厂商在产品安全性方面的记录。 

    从每种数据库发布的安全公告/忠告的数目可以看出,自从SQL Server 2000发布以来Oracle发布的公告要多于Microsoft SQL Server产品。此处是几个独立机构关于最近几年Oracle和SQL Server发布公告数目的统计。 

    计算机事件咨询中心 
    计算机事件咨询中心在 http://www.ciac.org/ciac/bulletinsByType/vndr_oracle_bulletins.html列出自2003年起Oracle的10个安全事件,其中2004有3个,2003年有7个。 
    同一来源报告Microsoft SQL Server在同期内只有2个安全事件,其中2004年有1个,2003年有1个。            http://www.ciac.org/ciac/bulletinsByType/vndr_ms_bulletins.html#ms_sql 

    卡耐基梅隆软件工程学院 
    卡耐基梅隆软件工程学院(http://www.cert.org/)列出在过去两年里Oracle有9个安全公告。 
    卡耐基梅隆软件工程学院列出同样在过去两年内有3个SQL Server安全公告。 

    国家标准和技术委员会 
    国家标准和技术委员会(http://www.nist.gov/)报告了81个Oracle的安全事件。 (http://icat.nist.gov/icat.cfm?vendor_command=Oracle&product_command=Oracle) 
    同一组织报告同期内仅有46个SQL Server安全事件 (http://icat.nist.gov/icat.cfm?vendor_command=Microsoft&product_command=SQL Server)。 

    根据事件/公告的报告结果,SQL Server的安全事件要比Oracle少50%。这些事实证明SQL Server比Oracle更安全。企业在考虑数据安全时,还需要考虑应用安全补丁和更新的流程——因为如果存在安全事件,企业就需要给服务器打补丁。

    安全补丁的重要性 

    企业实施资源安全的时候通常能够快速关注于可用的安全技术,如防火墙或者虚拟个人网(VPNs),但很多面临的实际障碍就是能让所有被选中的安全技术一起工作并实现全面的安全策略,让人员、流程和技术一起工作。安全策略中就包括了如何提供好的补丁管理。根据Forrester研究所的Michael Rasmussen的观点,“这是因为软件永远存在问题,解决问题的唯一答案就是将补丁应用到包括了人员和流程的系统中”。 

    软件是不断发展的,永远不会完美无缺,因此必然包含bugs。有时这些bugs会影响系统安全性,恶意用户有可能利用这些bugs获得系统访问权。许多组织机构如CERT和secunia.com会跟踪与安全有关的bugs。. 这些组织还会根据bugs导致的安全问题的严重级别对bugs进行等级划分。您应该时刻关注这些站点以及应用程序开发商的Web站点,检查是否有新的补丁。此外安全流程中还应该增加给系统打补丁这一流程。Oracle和SQL Server都提供了各自的补丁系统。我们来比较一下在查找安全漏洞、查找补丁、以及给数据库服务器打补丁的过程中两个数据库产品有何异同。

图15:SQL Server Web站点

    Microsoft将发布适用于SQL Server 2005的安全公告和补丁。这些公告可以帮助您了解和评估您现有的业务环境面临的潜在威胁,以及如何抵消这些威胁。SQL Server Web site(图15) 在其产品页面上提供了最新安全公告的快速连接。 

    管理员可以通过图16所示的网站了解有关最新的安全技术。


图16:Microsoft安全公告站点

    Oracle和Microsoft在通知客户重要补丁方面均做出了出色的工作。您可以在Oracle或Microsoft网站(图17)订阅安全警告;两家公司都能够快速地为客户提供重要补丁。网站都具有良好的组织结构因此您可以快速地找到您想要的补丁。


图17:Oracle的Security Alert站点

    结论 

    SQL Server 2005和Oracle 10g都提供了处理大多数企业数据库任务所需的安全数据库系统,但是SQL Server 2005更胜一筹,原因如下。 

    SQL Server 2005比Oracle 10g标准版或企业版提供更多的安全特性。如果企业需要获得SQL Server 2005包含的安全特性,则必须花费额外的费用购买高级安全选项,从而增加了数据库服务器的成本。 

    Microsoft通过在所有的产品线中提供相同的安全特性,从而使所有客户可以享受到安全的数据库技术,而Oracle仅对其企业客户提供完全的安全特性。 

    在SQL Server 2005中配置安全性更加简便。 

    对于程序员而言,使用SQL Server 2005更易于创建安全的应用程序。 

    SQL Server 2005是在可信计算计划下开发的,为数据安全提供了更好的平台。 

    SQL Server 2005具有和Oracle 10g企业版(配以高级安全选项)相似的安全特性,但更加廉价和易于使用。 

    SQL Server相比Oracle的安全漏洞也更少——而且Microsoft解决这些漏洞的速度也快于Oracle。这意味着使用SQL Server企业每天遭受的安全性风险要远远低于使用Oracle。

0
相关文章