QUOTE:
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.
2. 浏览到Server Security节点。
3. 选择用于创建SQL Server login的Windows帐户。
4. 在Server卡片中,单击Server Role为用户选择诸于System Administrator或者Backup Operator之类的角色。
5. 单击Database Access选择授予用户访问权限的数据库。
在SQL Server 2005中设置Windows验证:
1. 启动SQL Server Management Studio,如图5所示:
2. 打开您的计算机名称节点,然后展开 Security节点并单击Logins节点,如图6所示:
3. 要想为Windows用户帐户创建SQL Server login,右键单击Logins节点,然后选择New Login… 打开SQL Server Login Properties对话框。单击Name字段旁边的Search… 按钮来选择用户,如图7所示:
4. 如图8所示,为用户分配数据库角色或者权限。
5. 如图9所示,为用户分配服务器角色。
6. 点击OK完成任务。
QUOTE:
现在让我们看看在Oracle 10g中如何创建连接到Windows帐户的数据库用户。
在Oracle 10g中设置Windows
设置步骤总结:
1. 浏览\%ORACLE_HOME%\network\admin文件夹下的sqlnet.ora文件。
2. 使用适当的信息编辑sqlnet.ora文件。
3. 在数据库中创建与Windows用户IDs匹配的普通用户。
4. 将数据库用户添加到适当的数据库角色。
5. 将Windows用户添加到ORA_DBA或者ORA_OPER组中以授予适当的管理访问权限。
在Oracle 10g中设置Windows验证:
1. 您必须浏览%ORACLE_HOME%\network\admin文件夹下的sqlnet.ora文本配置文件来启用Windows验证。(%ORACLE_HOME%是Oracle的安装位置)
2. sqlnet.ora文件内容如图10所示,使用该文件配置如何建立到服务器的连接。
3. 修改sqlnet.ora文件中NAMES.DIRECTORY_PATH的设置,使之接受ORA_DBA或者ORA_OPER用户:
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT, HOSTNAME)
NAMES.DIRECTORY_PATH用于控制客户端工具如何连接到Oracle服务器。添加HOSTNAME将确保您能够在基于DNS的Windows环境中查找到服务器。
4. 将SQLNET.AUTHENTICATION_SERVICES修改为下面的值:
SQLNET.AUTHENTICATION_SERVICES= (NONE, NTS)
设置SQLNET.AUTHENTICATION_SERVICES参数最初是为了通过NTS配置来支持Windows验证,但是该设置会导致很多应用程序失败,因为Oracle验证还没有启用。添加参数None将启用Oracle和Windows验证,类似于创建了一个混合模式的安全验证。
5. 要想使Windows用户拥有DBA和Operators权限,必须确认系统中存在ORA_DBA和ORA_OPER的Windows组。
6. 将用户添加到ORA_DBA组意味着该用户是数据库管理员;如果用户需要执行诸如备份数据库之类的操作,那么将用户添加到ORA_OPER组。可以使用Oracle Administration Assistant for Windows将用户添加到组,或者创建组。
7. 从Configuration and Migration Tools菜单中选择Oracle Administration Assistant for Windows NT.
8. 右键单击OS Database Operators组,然后从图11所示的菜单中选择Add\Remove…
9. 在OS Database Operators对话框中选择用户和域,然后单击Add按钮,点击OK。
10. 如果是非DBA类型的角色,您需要在数据库中创建一个和现有的Windows用户名相同的用户。
11. 确保将init.ora文件(%ORACLE_HOME%\database文件夹)中下面的参数设置为:
os_authent_prefix = “”
12. 如果改变了该参数值,则必须重启Oracle。
13. 使用下面的命令创建数据库用户(用户名必须全部大写):
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复杂的多。
QUOTE:
审查
审查帮助您跟踪系统中未经授权的用户行为并阻止这种行为。针对那些具有高特权但却干坏事的管理员或者用户进行审查对保护您的系统十分有用。一个好的审查系统允许您只对那些您认为重要的事件进行过滤,因此您不会湮没在海量的信息中。所有数据库平台均在不同程度上提供审查功能。
SQL Server 2005以几种不同方式支持审查。它使用Windows安全日志、SQL Profiler、以及数据定义语言(DDL)触发器来提供审查功能。
Windows安全日志是Windows用于跟踪系统中对象的访问、权力的使用、成功或失败的帐户验证的最主要机制。除了由Windows安全日志提供的操作系统级别的审查,图13显示的SQL Profiler则提供了比Windows安全日志更详细级别的审查。
SQL Profiler是用于审查SQL Server事件的强大工具。您可以使用图14中显示的Trace Properties对话框配置SQL Server事件。
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中数据一致性和数据加密都是由该选项提供的。
QUOTE:
成本如何?
安全不仅仅是技术,还包括人员和流程,后者比前者更加薄弱。数据库服务器为普通用户提供直观且易于使用的管理工具,从而尽可能提供对人员和流程的支持,这一点十分重要。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)收取费用。所有主要的芯片制造商都致力于通过一槽多核的方式来不断增加硬件的处理能力。这意味着未来升级硬件的成本会出您意料地加倍增长,这也因此大大增加了产品的成本。请参阅
http://news.com.com/McNealy+slam ... 1012_3-5484341.html上CNET News文章。
哪个数据库安全性更高?
衡量一个数据库系统有多么安全还应该包括已登记在册的数据库安全公告、安全事件、或者安全忠告的数目。安全公告显示了数据库开发厂商在产品安全性方面的记录。
从每种数据库发布的安全公告/忠告的数目可以看出,自从SQL Server 2000发布以来Oracle发布的公告要多于Microsoft SQL Server产品。此处是几个独立机构关于最近几年Oracle和SQL Server发布公告数目的统计。
计算机事件咨询中心
• 计算机事件咨询中心在
http://www.ciac.org/ciac/bulleti ... acle_bulletins.html列出自2003年起Oracle的10个安全事件,其中2004有3个,2003年有7个。
• 同一来源报告Microsoft SQL Server在同期内只有2个安全事件,其中2004年有1个,2003年有1个。
http://www.ciac.org/ciac/bulleti ... lletins.html#ms_sql
卡耐基梅隆软件工程学院
• 卡耐基梅隆软件工程学院(
http://www.cert.org/)列出在过去两年里Oracle有9个安全公告。
• 卡耐基梅隆软件工程学院列出同样在过去两年内有3个SQL Server安全公告。
国家标准和技术委员会
• 国家标准和技术委员会(
http://www.nist.gov/)报告了81个Oracle的安全事件。 (
http://icat.nist.gov/icat.cfm?ve ... uct_command=Oracle)
• 同一组织报告同期内仅有46个SQL Server安全事件 (
http://icat.nist.gov/icat.cfm?ve ... mmand=SQL%20Server)。
根据事件/公告的报告结果,SQL Server的安全事件要比Oracle少50%。这些事实证明SQL Server比Oracle更安全。企业在考虑数据安全时,还需要考虑应用安全补丁和更新的流程——因为如果存在安全事件,企业就需要给服务器打补丁。
安全补丁的重要性
企业实施资源安全的时候通常能够快速关注于可用的安全技术,如防火墙或者虚拟个人网(VPNs),但很多面临的实际障碍就是能让所有被选中的安全技术一起工作并实现全面的安全策略,让人员、流程和技术一起工作。安全策略中就包括了如何提供好的补丁管理。根据Forrester研究所的Michael Rasmussen的观点,“这是因为软件永远存在问题,解决问题的唯一答案就是将补丁应用到包括了人员和流程的系统中”。
软件是不断发展的,永远不会完美无缺,因此必然包含bugs。有时这些bugs会影响系统安全性,恶意用户有可能利用这些bugs获得系统访问权。许多组织机构如CERT和secunia.com会跟踪与安全有关的bugs。. 这些组织还会根据bugs导致的安全问题的严重级别对bugs进行等级划分。您应该时刻关注这些站点以及应用程序开发商的Web站点,检查是否有新的补丁。此外安全流程中还应该增加给系统打补丁这一流程。Oracle和SQL Server都提供了各自的补丁系统。我们来比较一下在查找安全漏洞、查找补丁、以及给数据库服务器打补丁的过程中两个数据库产品有何异同。
Microsoft将发布适用于SQL Server 2005的安全公告和补丁。这些公告可以帮助您了解和评估您现有的业务环境面临的潜在威胁,以及如何抵消这些威胁。SQL Server Web site(图15) 在其产品页面上提供了最新安全公告的快速连接。
管理员可以通过图16所示的网站了解有关最新的安全技术。
Oracle和Microsoft在通知客户重要补丁方面均做出了出色的工作。您可以在Oracle或Microsoft网站(图17)订阅安全警告;两家公司都能够快速地为客户提供重要补丁。网站都具有良好的组织结构因此您可以快速地找到您想要的补丁。

QUOTE:
结论
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。
关于作者
Mitch Ruebush 是 ING DIRECT, fsb 的一名 .NET 体系结构设计师,同时也是 MCSD、MCDBA、MCSE、MCT。他是一名 Microsoft Regional Director 和 Visual C# MVP,一直从事基于各种 Windows 和 UNIX 平台的开发工作,具有 15 年的工作经验。他曾在 Microsoft DevDays、Microsoft Security Summit、Visual Studio .NET 2002 Launch、用户组会议和 MSDN 网络广播上发表演讲。他认为目前C#和 .NET开发是最受欢迎的开发平台,但他也在 Windows 和 Linux/UNIX 上用 C、C++、Java、VB、VB.NET、PL/SQL 和 T/SQL 设计和开发解决方案。他还是 MCAD/MCSD:Visual Basic .NET Windows and Web Applications Study Guide、MCAD/MCSD:Visual Basic .NET XML Web Services and Server Components Study Guide 和 MCSE:Windows Server 2003 Network Security Design Study Guide for Sybex 的合著者。
本文是与 A23 Consulting 合作撰写的。
QUOTE:
版权说明
该白皮书为初步文档,可能会在所述软件进行最后商业发布之前做完全修改。
该文档所含信息代表微软公司在文档出版时对所论及问题的当前看法。由于微软必须对千变万化的市场情况做出相应反应,因此本文档不应视为微软的任何承诺,且微软不保证所陈述任何信息在产品发布后的准确性。
本白皮书仅供信息参考。微软对本文档中的信息不做任何明示或默示保证。
遵守所有适用的版权法律是用户应尽的责任。下述陈述不限制任何版权,在未获得微软公司明示书面许可的情况下,不得以任何目的复制本文档任何部分或将任何部分保存或引入检索系统、亦不得以任何形式(电子、机械、影印、录制或其他方式)进行传播。
微软在文件所述主题中拥有专利权、专利应用程序、商标、版权或其他知识产权。除非在微软的任何书面许可协议中明示规定,否则对本文档的提供不得视为对任何专利权、商标、版权或其他知识产权许可的提供。
除非特别声明,本文中描述的示例公司、组织、产品、域名、e-mail地址、徽标、人物、地点以及事件均为虚构的,不应与任何实际的公司、组织、产品、域名、e-mail地址、徽标、人物、地点以及事件有任何的联系。
© 2005微软公司版权所有。
Microsoft和ActiveX是微软公司在美国和其他国家的注册商标或商标。
本文中实际公司和产品的名称可能是其相应所有者的商标。
[ 本帖最后由 于 2008-1-21 17:25 编辑 ]