《中国移动Oracle数据库安全配置手册denw.docx》由会员分享,可在线阅读,更多相关《中国移动Oracle数据库安全配置手册denw.docx(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、密 级:文档编号:项目代号:中国移动Oracle数据库安全配置手册Version 1.0中国移动通信有限公司二零零四年十一月拟 制:审 核:批 准:会 签:标准化:版本控制版本号日期参与人员更新说明分发控制编号读者文档权限与文档的主要关系1创建、修改、读取负责编制、修改、审核2批准负责本文档的批准程序3标准化审核作为本项目的标准化负责人,负责对本文档进行标准化审核4读取5读取目 录第一章 目的与范围11.1 目的11.2适用范围11.3数据库类型1第二章 数据库安全规范12.1 操作系统安全12.2 帐户安全22.3密码安全22.4 访问权限安全22.5 日志记录32.6 加密32.7 管理员
2、客户端安全32.8 安全补丁32.9 审计3第三章 数据库安全配置手册43.1 Oracle数据库安全配置方法43.1.1 基本漏洞加固方法43.1.2 特定漏洞加固方法12第四章 附录:数据库安全问题及解决方案174.1 数据库安全问题174.1.1 数据安全基本需求174.1.2 数据安全风险194.1.3 业界采用的安全技术214.1.4Oracle9i的安全解决之道214.2 Oracle9i 安全解决方案 提供端到端的安全体系结构234.2.1 Oracle9i Database 安全机制234.2.2 托管环境的安全264.2.3 网络中的安全基于标准的公共密钥体系结构 (PKI)
3、274.2.4 先进的用户和安全策略管理29 第一章 目的与范围1.1 目的为了加强中国移动集团下属各公司的网络系统安全管理,全面提高中国移动集团下属各公司业务网和办公网的网络安全水平,保证网络通信畅通和信息系统的正常运营,提高网络服务质量,特制定本方法。本文档旨在于规范中国移动集团下属各公司对Oracle数据库进行的安全加固。1.2适用范围本手册适用于对中国移动集团下属各公司业务网和办公网系统的数据库系统加固进行指导。1.3数据库类型数据库类型为Oracle9i Enterprise Edition。第二章 数据库安全规范2.1 操作系统安全要使数据库安全,首先要使其所在的平台和网络安全。然
4、后就要考虑操作系统的安全性。Oracle使用大量用户不需要直接访问的文件。例如,数据文件和联机重做日志文件只能通过Oracle的后台进程进行读写。因此,只有要创建和删除这些文件的数据库管理员才需要在操作系统级直接访问它们。导出转储文件和其他备份文件也必须受到保护。可以把数据复制到其他数据库上,或者是作为复制模式的一部分,或者是提供一个开发数据库。若要保护数据的安全,就要对数据所驻留的每一个数据库及这些数据库的备份进行保护。如果某人能从含有你的数据备份的数据库中带走备份磁带,那么你在数据库中所做的全部保密工作就失去意义。必须防止对全部数据备份的非法访问。2.2 帐户安全为了避免数据库帐户大量耗费
5、系统资源,影响其它用户的正常访问,可以根据应用的实际需要,对数据库帐户所使用的资源(如CPU等)进行限制。这样可以控制恶意攻击者发起大量的连接及事务破坏数据库系统的正常运行,限制数据库帐户的系统资源可以用profile实施。此外,数据库创建后,会存在一些内建的帐户,这些帐户都有初始密码。出于安全的考虑,需要修改这些内建帐户的初始密码,防止恶意攻击者以众所周知的初始密码登录数据库。另外,对不使用的帐户应锁定,消除帐户安全隐患。2.3密码安全用户登录数据库的密码非常重要,一旦密码被窃听,数据库的安全就面临严重的威胁。从Oracle 7.1开始,client 远程连接数据库,Oracle Net 会
6、自动对通过网络传输的登录密码进行加密,保证密码不被明文传输而被窃听。在Oracle7.1之前,可在sqlnet.ora中设置ora_encrypt_login=true。此外,对密码进行严格的管理。可以使用profile来管理口令的终止、重新使用和复杂性。例如,可以限制一个口令的寿命、锁定口令过旧的帐户等。也可以强制一个口令至少有一定程度的复杂性并锁定一个多次注册失败的帐户。这样可以有效地防止黒客猜测帐户口令,减少口令安全隐患。2.4 访问权限安全对帐户的访问权限进行严格控制,给予帐户需要的最少权限,包括系统权限和对象权限。对象权限可以实施到数据库对象的字段级别。2.5 日志记录Oracle的
7、警告日志alertsid.log里记录有数据库的关键活动,如删除表空间等,出于安全的考虑,需有规律地检查警告日志。2.6 加密为了保证敏感数据从client到server在传输过程中不被窃听,可以对数据进行加密,以密文进行传输。2.7 管理员客户端安全为了防止恶意用户冒名顶替管理员从远端客户机连接数据库进行破坏,可以对远端数据库的IP地址进行限定。当然这种方法如果和网络安全一起实施,会更加安全。2.8 安全补丁Oracle虽然具有很高的安全性,但是不可避免还是有安全漏洞,一个比较安全的办法是时刻关注Oracle的安全公告,并及时安装安全补丁。安全公告和补丁位置如下:2.9 审计出于数据库的安全
8、,需要实施审计以跟踪重要的或可疑的数据库活动。审计通常被认为是最有效的安全机制,它确保系统的合法用户做他们应该做的事情,并且能够阻止用户滥用或误用访问权限。通过审计,一个公司可以跟踪其各个用户的活动,从而发现安全上的缺陷。另外,如果用户知道他们正在被跟踪审计,那么就可能降低他们滥用职权的可能性。因为传统型的审计产生数量极大的数据,所以这就很难从中发现有用的信息,因此,Oracle9i引进了精确细化的审计。使用这种广泛精确细化的审计,可以更容易地发现安全缺陷。例如,如果为重复选择社会身份认证号码制定了一条审计策略,则当重复选择该社会身份认证号码时,就会自动发生警报,以警告可能被入侵的部门的系统管
9、理员。然后系统管理员就能采取终止非法数据库会晤的措施。 由服务器强制进行的审计捕获用户的活动、系统权限、语句或者对象 触发器能够记录未被自动包含在审计追踪中的定制信息 精细粒度的、可扩展的审计功能使机构能够定义具体的审计政策,以便在恶意入侵发生时,立刻识别、警告和解决这一入侵-而不管它是来自机构外部还是机构内部 事件处理器提供了确定如何处理由触发器启动的某一审计事件的灵活性 通过保存初始连接的登录用户及以该用户名义进行操作的用户的身份来审计多层系统中的活动第三章 数据库安全配置手册3.1 Oracle数据库安全配置方法3.1.1 基本漏洞加固方法1、 操作系统安全性编号:001名称:操作系统安
10、全性重要等级:高基本信息:若要访问一个数据库,必须首先能够以直接或非直接方式访问正在运行该数据库的服务器。要使数据库安全,首先要使其所在的平台和网络安全。然后就要考虑操作系统的安全性。Oracle使用大量用户不需要直接访问的文件。例如,数据文件和联机重做日志文件只能通过Oracle的后台进程进行读写。因此,只有要创建和删除这些文件的数据库管理员才需要在操作系统级直接访问它们。导出转储文件和其他备份文件也必须受到保护。可以把数据复制到其他数据库上,或者是作为复制模式的一部分,或者是提供一个开发数据库。若要保护数据的安全,就要对数据所驻留的每一个数据库及这些数据库的备份进行保护。如果某人能从含有你
11、的数据备份的数据库中带走备份磁带,那么你在数据库中所做的全部保密工作就失去意义。必须防止对全部数据备份的非法访问。检测内容: 检查承载平台的安全 检查网络的安全建议操作:参见主机和网络安全方案操作结果:无操作结果:确保权限最小化2、 用户环境文件编号:002名称:用户环境文件重要等级:高基本信息:可以使用用户环境文件profile来限制可由用户使用的系统和数据库资源并管理口令限制。如果数据库中没有创建环境文件,将使用缺省环境文件;缺省环境文件指定对于所有用户资源没有限制。检测内容: 检查系统环境文件建议操作:明确环境文件创建是否合理:操作结果:确保资源调用最小化3、 内建帐户编号:003名称:
12、内建帐户连接重要等级:中基本信息:数据库有一些内建帐户,使用这些内建帐户的默认密码,就可以访问该数据库。对不需要使用的内建帐户进行锁定。检测内容: 检查内建帐户的默认密码是否改变,不需要使用的内建帐户是否已锁定。建议操作: 修改 OUTLN密码ALTER USER outln IDENTIFIED BY ; 修改DBSNMP密码ALTER USER dbsnmp IDENTIFIED BY ;编辑$ORACLE_HOME/network/admin/snmp_rw.ora,更改如下行: SNMP.CONNECT.PASSWORD = 其中, 是数据库服务名,是新密码 修改SCOTT密码ALTE
13、R USER scott IDENTIFIED BY ; 锁定没有使用的内建帐户ALTER USER xxx ACCOUNT LOCK;操作结果:无4、 口令管理编号:004名称:口令管理重要等级:高基本信息:在Oracle中,可以使用profile来管理口令的终止、重新使用和复杂性。例如,可以限制一个口令的寿命、锁定口令过旧的帐户。也可以强制一个口令至少有一定程度的复杂性并锁定一个多次注册失败的帐户。检测内容: 检查系统口令设置情况建议操作:如果设置用户环境文件的FAILED_LOGIN_ATTEMPTS资源为5,该帐户允许连续注册失败5次,第6次就会引起帐户被锁定。若要防止一个口令重新使用
14、,可以使用两个环境文件参数的其中一个:PASSWORD_REUSE_MAX或PASSWORD_REUSE_TIME。这两个参数互不相容:如果给其中的一个设了值,另一个就必须设为UNLIMITED。PASSWORD_REUSE_TIME参数规定一个口令可以重新使用前必须经过的天数。例如,如果设置PASSWORD_REUSE_TIME为6 0天,则在6 0天内不能使用同一个口令。PASSWORD_REUSE_MAX参数指定一个口令可以重新使用前必须对其改变的次数。如果试图在这个限制到达前重新使用该口令,Oracle会拒绝口令的修改。可以强制用户的口令符合复杂度标准。例如,可以要求口令的最小长度、不
15、是一些简单的词、至少包括一个数字或标点符号。create profile 和alter profile 命令的PASSWORD_VERIFY_FUNCTION参数指定用于评估口令的函数名。如果用户提出的口令不符合要求,就不会被接受。操作结果:确保口令安全5、 登陆口令编号:005名称:登陆口令重要等级:高基本信息:对于Oracle7.1以前,当从一个客户机连接到数据库服务器,或者通过数据库链接从一个数据库连接到另一个数据库时,除非指定其他形式,否则Oracle将以非加密的形式传输输入的口令。对于Oracle7.1以前,可以设置参数来强制Oracle在传输前将口令值加密。对于Oracle 7.1
16、及以后,Oracle默认将以加密的形式传输输入的口令,不需另外手工配置。检测内容: 检查是否设置了口令加密建议操作:对于Oracle7.1以前,若要启用口令加密,需设置以下参数: 对于客户机,把sqlnet.ora文件中的ORA_ENCRYPT_LOGIN参数设为TRUE。 对于服务器, 把init.ora文件中的DBLINK_ENCRYPT_LOGIN参数设为TRUE。一旦这些参数被设置(并且关闭和重新启动数据库),口令将以加密的形式在客户机到服务器和服务器到服务器之间传送。操作结果:确保登陆安全6、 口令文件验证编号:006名称:口令文件验证重要等级:高基本信息:DBA用户可以由操作系统验
17、证。例如在UNIX系统上,/etc /group文件中DBA组的成员可以内部连接。如果从远程DBA用户连接数据库,建议使用口令文件验证。检测内容: 检查口令文件情况建议操作:1) 使用ORAPWD实用程序创建口令文件。ORAPWD FILE=filename PASSWORD=password ENTRIES=max_users ORAPWD是一个生成口令文件的Oracle实用程序。执行ORAPWD时,除了SYS访问的口令外,还规定要创建的口令文件的名称。ENTRIES参数通知Oracle,要在口令文件中创建多少条目。由于不能在以后扩展该文件,因此要把ENTRIES值设得高一些。如果超出口令文
18、件条目数的范围限额,就收到一个ORA-1996错误。重建该口令文件时,需要重新授予SYSDBA和SYSOPER权限。2) 将init.ora文件中的REMOTE_LOGIN_PASSWORDFILE初始参数设置成EXCLUSIVE,关闭并重新启动数据库,以便变更的参数起作用。3) 将SYSOPER和SYSDBA权限授予需要进行数据库管理的每一个用户。SYSDBA授予用户数据库管理员的权限;SYSOPER使用户能执行数据库操作支持活动。为了授予用户SYSOPER或SYSDBA权限,必须在内部连接。被受权用户现在应能通过使用一个与下述命令类似的命令与数据库连接: connect george/mc
19、h11PROD.WORLD AS SYSDBA如下面例子所示,可以用revoke命令撤消一个用户的SYSDBA或SYSOPER权限:revoke SYSDBA from George;若要查看具有SYSDBA或SYSOPER系统权限的用户,可以查询V$PWFILE_USERS。如果用户拥有SYSDBA权限,V$PWFILE_USERS在其SYSDBA列中将有一个TRUE值;如果拥有SYSOPER权限,将在其SYSOPER列中有一个TRUE值。操作结果:无7、 系统权限编号:007名称:系统权限重要等级:高基本信息:可以使用系统级角色分派以管理数据库的系统级命令。下表列出了Oracle提供的11
20、个系统级角色。使用这些角色就能对授予数据库管理角色的系统级权限进行限制。检测内容: 检查所有用户的权限 检查网络的安全建议操作:明确每个用户的权限级别归属:是否有必要8、 对象权限编号:008名称:对象权限重要等级:高基本信息:对象级权限(object-level privilege)使用户可以访问不属于自己的数据。可以使用角色来减少权限的管理。显式权限也可以使用,并且在一些情况下是必须的。权限通过grant命令创建,存于数据字典中。对表、视图、序列(以及它们的同义词)的访问,加上执行过程、函数、软件包及类型的能力都可以授权给用户。检测内容: 检查对象权限建议操作:下表列出了可以授予对象的权限
21、。可以使用with grant option子句向授与用户传递授权能力,以便在基对象上进一步授权。随着角色的出现,这些权限的管理就容易了。角色是成组的权限,角色可授给用户,这样就大大简化了权限管理进程。操作结果:确保权限最小化9、 日志记录编号:509名称:警告日志文件重要等级:高基本信息:Oracle的警告日志alertsid.log里记录有数据库的关键活动,如删除表空间等,出于安全的考虑,需有规律地检查警告日志。检测内容: 检查警告日志文件建议操作:明确关键的数据库活动是否合理:操作结果:无3.1.2 特定漏洞加固方法一、 对传输数据进行加密如果需要对客户端和服务器端传输的数据进行加密,以
22、防数据窃听,可以修改客户端和服务器端的sqlnet.ora文件,对传输的数据进行加密,以避免明文在网络上的传输。具体请参阅Oracle Advanced Security Administrators GuideConfiguring Data Encryption and Integrity二、对于访问数据库的客户端IP地址进行配置。数据库监听客户端IP地址的连接记录,存储在/$oracle/log/listener.log文件里,请管理员定期查看和分析该日志文件。在/$oracle/network/admin目录下修改SQLNET.ORA文件,增加如下内容:tcp.validnode_ch
23、ecking=YEStcp.excluded_nodes=(192.168.0.1)对于访问数据库客户端IP的限制,借助操作系统或者防火墙等设备实现也是可行的。三、安装最新补丁程序Oracle虽然具有很高的安全性,但是不可避免还有安全漏洞,一个比较安全的办法是时刻关注Oracle的安全公告,并及时安装安全补丁。安全公告和补丁位置如下:由于涉及Oracle数据库的业务都是非常关键的,在安装安全补丁前一定要做好备份工作,联系Oracle公司或者你的开发商,定时做补丁升级是非常必要的。四、对敏感的数据库活动实施审计对敏感的数据库活动,如删除表等进行审计。Oracle提供的数据库审计类型有:l 语句审
24、计:监视由一个或者多个特定用户或者所有用户提交的SQL语句。这种类型的审计范围非常广。l 特权审计:监视数据库里一个或者多个特定用户或者所有用户使用的系统权限,比如audit create table。这种类型的审计范围是中等的。l 模式对象审计:监视一个模式里在一个或者多个对象上发生的行为,比如:audit insert into EMPLOYEES。这种类型的审计是非常有重点的,范围狭窄。设定初始化参数audit_trail为DB或OS。DB表示将审计记录写到数据库的AUD$表里; OS表示将审计记录写到操作系统文件中,默认生成在$ORACLE_HOME/rdbms/audit目录,审计文
25、件也可以用初始化参数AUDIT_FILE_DEST另外指定。启用审计在AUDIT_OPTIONS表里有144个可以审计的审计命令,如:create table, insert, select等。根据实际需要确定要审计的类型,比如,若需知道什么时候一个新表被加到数据库,可通过下列命令启用审计:audit create table by ;查询审计select * from dba_audit_trail;五、用户管理5-1 过多的用户被授予DBA的权限用命令SELECT 的DBA选项列出所有被授予了DBA角色的用户,根据需要分配用户角色,命令:SELECT GRANTEE FROM DBA_RO
26、LE_PRIVS WHERE GRANTED=DBA。5-2 存在把权限授给PUBLIC的情况删除不需要的帐号,比如SCOTT等示例用户;对于不明确是否能删除的用户可以暂时锁定该用户,或赋予非常复杂的口令。删除用户及其所有的数据对象命令:drop user dbuser cascade;取消用户角色权限:revoke connect from dbuser;应检查的用户名包括:SCOTT, DBSNMP, TRACESVR, CTXSYS, MDSYS, DEMO, CTXDEMO, APPLSYS, PO8, NAMES, SYSADM, ORDPLUGIN, OUTLN, ADAMS, B
27、LAKE, JONES, CLARK, AURORA$ORB$UNAUTHENTICATED, APPS。5-3 连接时使用空口令。修改口令文件PROFILE,防止利用空口令或默认口令进行连接。六、限制UTL_FILE的使用与应用系统开发商确认是否有用户需要使用UTL_FILE程序包。如果没有用户使用,应收回普通用户对该包的执行权限。如果确实有用户需要使用UTL_FILE包,应确保只有确实需要的用户才拥有UTL_FILE的执行权。同时在init.ora中设定参数“UTL_FILE_DIR”使用UTL_FILE包的程序确实需要访问的目录。与应用系统开发商商议,是否可以改变DB_LINK的创建方式
28、,在创建DB_LINK时不指定用户名和口令。七、数据库配置:数据库配置未采用数据字典保护。检查初始化参数O7_DICTIONARY_ACCESSIBILITY是否为FALSE。该参数为FALSE, 将阻止具有ANY 权限的用户访问数据字典基表,以有力地保护数据字典。此参数的修改需要重启数据库才能生效.Default:Oracle 8i:TUREOracle9i: FALSE八、关闭HTTP ServerHTTP Server用于通过HTTP访问数据库,如EM和动态服务。若无必要,关闭该server:$ cd $ORACLE_HOME/Apache/Apache/bin$ apachectl s
29、top九、关闭远程数据库验证远程数据库验证只用于当你信任客户端用户时采用。这种验证机制是:用户在客户端验证,当用户登录数据库时不再需要用服务器端数据库密码验证,故称为远程数据库验证。为加强安全起见,关闭远程数据库验证。设定初始化参数REMOTE_OS_AUTHENT = FALSE十、实施VPD 和 Oracle Label Security如有必要,在普通的数据库安全机制外,还可实施另一种新的安全机制,称为VPD(虚拟专用数据库),帮助从数据库内部提供有效的安全。这种安全机制的原理是从用户登录到数据库开始,预先为特定用户设定的自定义的安全策略发生作用,使得当用户提交一个查询(或insert,
30、update,delete)时,自动地加上相应的where子句,这样细粒度的访问控制被Oracle自动实现和保证,对用户和应用透明。例如, 使用以下查询从数据库里查询数据:select * from customers;如果customers表里有一个相关的安全策略来限制销售代表只能查看自己顾客的信息,这个查询将被自动地重写为:select * from customers where sales_rep_id=sys_context(hr_context, sales_id);比如说,A,B两位销售代表键入的是同一条SQL语句, select * from customers, 但返回的结果
31、不同:A返回的是select * from orders where sales_rep_id=406, B返回的是select * from orders where sales_rep_id=152,也就是说某个销售代表只能访问到他本人的销售的信息,其他销售代表的信息则访问不了。被安全策略自动地加到用户的查询上的where子句确保该销售代表只能查看到他自己的客户数据,别人的数据看不到。销售代表的ID从用户定义的应用程序上下文hr_context里得到。在VPD里,仍然需要授予用户对每个表的适当的权限,但是你不需要创建视图和过程来防止用户访问其他客户的数据。因此,不必担心用户通过SQL*PL
32、US等访问到他们不该访问的数据。创建和配置VPD的步骤如下:l 确定数据库对象和它们的关系l 定义安全策略目标l 创建应用程序上下文l 创建设置上下文的包l 创建策略函数l 将策略函数与表或者视图相关联VPD的详细信息请参阅Oracle Label Security 为精细化 (fine-grained) 访问控制提供了基于行标签 (row labels) 的复杂而灵活的安全性。Oracle Label Security 借用政府机构、国防部门及商业组织使用的“贴标签” (labeling) 概念来保护敏感信息并提供数据隔离能力。Oracle Label Security是一种特别的VPD,
33、通过它可以创建安全策略,然后透明地设置VPD以实施该策略,这些过程通过内建的package来完成,不需要开发PL/SQL程序,这是相比VPD来说的一大好处。其原理具体来讲: 安全管理员对用户贴上标签指派级别和类型,数据行也打上标签,指示该数据行的级别和敏感度。当用户试图执行一个任务,比如从表里查询记录时,Oracle label security 将校验用户的标签和数据行的标签是否匹配,以确保从这个表返回正确的行。用户只能对数据库里有匹配的访问标签的行进行访问和交互。详细的配置举例可见: Note 230980.1 第四章 附录:数据库安全问题及解决方案4.1 数据库安全问题电子商务的流行和
34、Internet 的普遍性改变了机构运营商务的方式、人们进行通信的手段。这些改变带来了推动商业决策的新技术。安全性渐渐从内部集成解决方案组转变成了电子商务实施的主要必需条件。目前世界上很多企业和机构正在充分利用 Internet,优化运作,并以相同的方式与供应商、合作伙伴、内部用户和客户直接进行通信。然而,这些新的商业运作模式为它们带来了机遇同时也带来了各种挑战。不同类别的用户需要以不同的方式访问数据。合作伙伴必须能够看到某些有限的数据,员工能够浏览公司机密信息,而客户只能看到与其相关的信息; 同时Internet 的发展使企业级应用系统的用户数量呈指数级增长, 为企业级的用户管理带来了挑战。
35、简而言之,Internet时代安全性的挑战包括:了解用户、设置用户访问权限、对机密数据进行保密、提供安全的网络服务。借助 Oracle9i、Oracle9i Advanced Security和Oracle Label Security 的功能,管理员和集成商能够克服这些 Internet 安全性挑战,Oracle为基于 Internet 的企业范围应用解决方案提供了极其安全的环境。4.1.1 数据安全基本需求数据安全的需求概括来讲就是:正确的人能够及时地存取到正确的数据。基本的数据安全需求有下面三方面:l 数据机密性l 数据完整性l 数据可访问数据机密性一个安全的系统需保证数据的机密性,这意
36、味着只能让合法的用户看到他该看到的数据。机密性涉及到几个方面:1) 数据传输过程中的保密:在数据传输过程中不能被非法者侦听。2) 敏感数据的安全存储:一旦机密数据存放在数据库,它的完整性和私有性必须得到保护。3) 用户身份的确定:确保只有合法的用户才能访问数据。怎样确定连上来的用户就是他声称的那个人,需要对用户的真实身份进行验证。4) 细粒度的访问控制:访问数据库的某一特定用户不应该看到所有数据,而只能看到他可以看的那些数据,比如说某张表的某些记录的某些字段值,访问控制需要细化。那么机密性的控制是怎样进行实施呢?通常在数据库里保证数据机密的过程:1) 验证:验证用户的身份是否合法2) 授权:确
37、定用户的权限3) 访问控制:根据用户的权限,限制用户对物理数据的访问比如: 如果Smith访问数据库,那么验证将确定他是否是合法的用户,而非冒名顶替者;授权将确定他是以产品经理的身份登录数据库;访问控制将基于产品经理的权限对他的会话进行数据访问控制。数据完整性数据完整性要求:(1) 数据是合法有效的;(2) 数据不能被恶意删除和修改;(3) 数据之间的依赖关系必须保证。数据在数据库中和在网络传输中,完整性涉及到下面几个方面:1) 系统和对象权限控制对表的访问,这样只有授权用户才可以改变数据。2) 约束能保证数据是有效的,比如外键约束能保证表之间的数据依赖关系。3) 数据库必须能够免于病毒的攻击
38、以破坏数据。4) 网络传输必须被保护,以免于恶意删除、破坏。数据和服务的高可用性从安全的角度来看,数据和服务的高可用性意味着数据和服务对授权用户是可用的,没有延迟。恶意的系统攻击使得授权的用户不能正常访问系统。防止恶意的攻击是一个安全问题。必须有措施能够阻止恶意的攻击。在Oracle里可以定义profile限定用户使用的资源,这样系统可以防止恶意用户消耗过多的内存和进程,从而影响到其他人的正常工作。4.1.2 数据安全风险在数据库应用中,数据安全面临着以下威胁:数据被篡改通信的私有性对保证数据在传输过程中不被篡改非常重要。分布式的环境给恶意攻击者篡改数据带来了可能。在数据篡改的攻击中,一个未授
39、权的攻击者对传输中的数据进行拦截、篡改后,再把数据继续进行传输。比如一个攻击者把银行交易的金额从100元改为1000元,导致交易错误。数据被窃取数据必须能够安全地存储和传输,因此敏感信息诸如信用卡号、密码等不会被窃取。但在大多数网络中,即使通信通道全部是有线链路,未授权用户也可以用workstation 或者PC 设法接入网络以窃听网络上的传输数据。对于所有类型的网络,包括局域网和广域网这种数据窃听都有可能。用户身份被伪造你必须能够在网络上确认登录到系统的用户就是他本人,而不是冒名顶替者。在分布式环境中,攻击者很容易伪造身份获取到敏感重要的信息。你怎么知道从客户机B连到服务器A上的用户Pat是
40、真正的Pat?并且,攻击者还可以劫持连接。你怎么能够确认声称的客户机B和声称的服务器A就是真正的客户机B和服务器A? 伪造身份现已成为网络安全的最大威胁之一。密码潜在的问题在大型的系统中,用户必须记住不同应用和不同服务的多个密码,他们通常选择易于猜测的密码,如姓名、字典里的一个单词等以方便记住。这些密码对于攻击来说是很脆弱的;即使用户使用了复杂的密码,他们也会把密码记下来,使攻击者容易通过其他途径找到;并且,由于不同的应用都需要密码,用户往往把密码标准化,不同的应用的密码略有不同,从一个应用的密码可以推知另外一个应用的密码,这样方便记住。所有这些问题都给安全带来了威胁。再者,大量用户账号和密码
41、的管理都是复杂、耗时、昂贵的。未经授权对表、列存取数据库可能含有机密的表,或者表里可能含有机密的列,这些机密数据不应该不加区分地被所有用户访问。所以应该在列这个更细的级别对数据进行保护。未经授权对行存取有一些数据行可能含有机密的信息,这些机密的数据行不应该不加区分地被能访问该表的所有用户访问,应该有更细粒度的安全控制保证数据的机密性。比如说在一个共享的业务环境中,用户应该只能够存取他自己的信息:每个客户只能看到他自己的订单记录,你可以看到所有的订单记录。这些限制可以通过应用强加上去,但是如果用户绕过应用,直接访问数据库,就会有数据机密性的风险。所以需要在数据这一层加上访问安全策略的控制。缺乏有
42、效的跟踪、监控机制如果系统管理员不能跟踪用户的行为,则用户对他们的行为不会负责任。所以必须有可靠的机制来监控用户对数据的操作。复杂的用户管理系统经常需要支持数以百计或数以千计的用户,必须能够很方便地扩展。在这种环境中,你需要知道用户是不是真正的用户,在各个应用层上有没有可靠的安全控制,用户账号和密码管理的沉重负担将使得系统变得脆弱、容易受到攻击。多系统在单个系统上管理数以千计的用户已经很困难了,在多个系统上就更为复杂。为了应对安全管理上的用户的扩展性,应该采用基于工业标准的目录,对多个应用和数据库的用户和权限进行集中管理,这样可以减少系统管理成本,提高效率。另外,对ASP来说为多个应用预定者创
43、建不同的数据库不是一个节省成本的方法,这种分散的数据库模型既使技术可行,但很快就变得不可管理,有效的办法是一次应用和数据库安装可以为多个公司提供服务,集中管理。4.1.3 业界采用的安全技术面临数据库应用数据安全的挑战,业界通常采用以下技术对安全进行控制:l 身份验证l 访问控制l 权限管理l 审计l 加密l 数据完整性l 网络安全技术等4.1.4 Oracle9i的安全解决之道针对数据库应用的数据安全风险,Oracle9i 使用业界居于领导地位的产品和特性提供完整的安全控制解决之道。以下是各种安全风险需使用的安全技术Oracle提供的产品和特征的对应矩阵:安全风险解决之道安全技术Oracle
44、提供的产品和特征未验证用户确认用户身份验证技术Oracle9i Standard Edition, and Oracle9i Enterprise Edition:密码及密码管理Oracle Advanced Security: Tokens, 智能卡, Kerberos,等PKI: X.509 Certificates未授权的数据存取限制数据存取访问控制技术Oracle9i Standard Edition Oracle9i Enterprise Edition: Virtual Private Database feature动态查询修改细粒度的访问控制技术Oracle9i Enterpr
45、ise Edition: Virtual Private Database feature限制存取数据行和列基于标签的访问控制技术Oracle Label Security加密存储数据存储数据加密技术Oracle9i Standard Edition, and Oracle9i Enterprise Edition限制权限权限管理技术Oracle9i Standard Edition: 角色,权限Oracle9i Enterprise Edition: Secure Application RolesOracle Advanced Security: Enterprise Roles网络数据侦听、窃取保护网络网络加密技术Oracle Advan