Oracle 10g数据库安全策略分析与设计

时间:2022-06-17 01:23:29

Oracle 10g数据库安全策略分析与设计

摘要:Oracle数据库占据了目前世界主流商用数据库系统市场80%以上的份额,该文详细分析了Oracle 10g数据库的安全体系结构,提出了一种较为完备的Oracle数据库应用系统的安全策略。

关键词:Oracle数据库;安全性;策略

中图分类号:TP311文献标识码:A 文章编号:1009-3044(2010)21-6058-02

随着社会信息化进程的加速,数据库系统得到了广泛应用,它们担负着存储和管理信息的任务,集中存放了大量数据,因此数据库的安全性受到人们的广泛关注。

所谓数据库的安全性是指数据库的任何部分都不允许受到恶意侵害或未经授权的存取或修改。其主要内涵包括三个方面:1) 保密性,即不允许未授权的用户存取信息。2) 完整性,即只允许被授权用户修改数据。3) 可用性,即不应拒绝已授权用户对数据的存取访问。

数据库系统受到的威胁主要有:对数据库的不正确访问,引起数据库数据的错误;为了某种目的,故意破坏数据库,使其不能恢复;非法访问不该访问的数据库信息,且又不留痕迹;用户通过网络进行数据库访问时,有可能受到各种技术的攻击;未经授权非法修改数据库数据,使其失去真实性;硬件毁坏;自然灾害;磁干扰等。为了保护数据库的安全,目前常用的数据库安全技术主要有用户认证、访问控制、信息流控制、推理控制、数据库加密等,其中应用最广也最为有效的是访问控制技术。

1 Oracle 10g数据库的安全体系结构

Oracle数据库的安全级别为C2级,其安全原理基于最小特权,此原则认为用户只应该具有完成其任务所必需的特权,而不应该具有更多的特权。Oracle 10g数据库的安全性可以被分为3个层次:

1)系统安全性:指在系统级上控制访问和使用数据库的机制。包括有效的用户名及其口令、用户是否被授权连接到数据库、用户是否有足够的磁盘空间来存放用户模式对象、用户的资源限制、是否启动了数据库的审计功能、用户可以进行那些系统操作等。

2)数据库安全性:指在实体级上控制访问和使用数据库的机制。包括用户可以存取的方案对象及在该对象上可以进行那些操作等,即用户必须具备存取该实体的权限。

3)网络安全性:Oracle 10g数据库主要是面向网络提供服务的。其网络传输的安全至关重要,包括登陆助手、目录管理、标签安全性等集成工具。Oracle通过分发Wallet、数字证书、SSL安全套接字和数字密钥的办法来确保网络数据传输的安全性。

在Oracle的安全体系结构中,连接到数据库的用户有普通用户和数据库管理员用户两类。普通用户主要是通过各种应用程序和查询工具连接,使用数据库账户和口令来验证,必要时可实施Oracle高级数据加密技术;数据库管理员用户用sys、system或具有dba权限的账户连接,登录系统时需采用口令文件验证或操作系统验证。

作为连接到数据库的账户,必须首先是数据库中的用户,该用户只有在数据库中拥有必要的角色和权限,才能被数据库认可并可在数据库中进行相应的活动。在每个模式下,存储的核心是数据库的表。对于常规表,Oracle支持三个级别的安全性:表级、行级和列级。表级的安全性由表的拥有者通过表级授权来控制其他用户;行级的安全性可通过视图来实现;列级的安全性可直接定义在表上,也可以通过视图定义表的垂直投影子集来实现。在很多情况下,一个表中存储了分别属于多个部门或个人的不同安全级别的数据,此时单纯使用视图很难从根本上解决此类安全问题,同时,用户也可使用特殊工具绕过视图直接去访问表。对此,Oracle采用了虚拟私有数据库VPD和标签安全OLS两项技术来实现有关行级数据的保护。这样一来,不论用户采用何种工具访问数据库,均受到VPD和OLS的制约,从而达到了按行访问的目的。

当用户连接数据库时还需要通过系统概要文件对用户所使用的资源进行限制,如访问时间、登陆次数、占用CPU时间等。

2 Oracle 10g数据库应用系统的安全策略设计

数据库安全十分重要,但安全管理需要成本,过分的安全还会影响效率,因此,很多时候需要数据库管理员在性能、时间和安全之间进行折中,从而制定出一个适合特定应用的、灵活的安全策略。在设计Oracle10g数据库应用系统的安全策略时应从以下几个方面着手:

2.1 建立Oracle 10g数据库的安全机制及实施计划

在设计数据库过程中,首先规划表空间和数据库的模式,包括表和子程序对象、用户的类型、这些用户需要使用哪些数据以及需要什么样的权限。然后,通过由表和用户构成的对象/用户权限CRUD关联矩阵来明确与对象权限以及表与表空间的对应关系。

根据上述规划,可以在数据库中按照下列顺序创建模式及对象并授权:

1)创建用于存储用户及其所属对象的表空间。

2)在相应的表空间上创建用户,指定其默认的表空间并授予用户相应的角色和系统权限。

3)由用户创建各种所需要的数据库对象,并按照对象/用户权限CRUD关联矩阵为不同的用户授予对象权限。

4)尽可能地使用同义词和视图来存取数据,以减少用户对表的直接存取。

2.2 Oracle 10g数据库内部的管理策略

Oracle数据库系统安全管理的首要任务就是为每一个用户创建相应的数据库账号,任何用户对数据库的任何操作都必须强制通过系统安全设置检查后方能实施。在创建用户时,必须使用安全参数对用户进行限制,数据库用户的安全参数包括用户名和口令、用户默认表空间、临时表空间、用户存储空间限制以及用户资源文件限制等。

1)口令管理。数据库系统安全依赖于口令,应使用较复杂的口令,系统以加密方式将口令存储在数据字典中。Oracle 10g通过概要文件对口令进行管理,通常可在概要文件中启用口令复杂性函数来校验口令,该函数脚本在文件utlpwdmg.sql中,也可根据需要创建口令规则更为复杂的函数。

2)权限管理。Oracle数据库安全管理机制主要是通过权限进行设置,通过权限设置防止非授权的数据库存取、非授权的对具体对象的存取,只有通过权限的认证才可以存取数据库中的数据。

对用户授予权限时应本着授予最少权限的原则,特别是要谨慎授予带有with admin option的权限。同时要限制授予数据库对象用户使用对象权限和system权限的数量以及使用具有sys权限的连接。特别不能授予一般用户具有any的权限。

3)角色管理。Oracle 10g通过角色大大简化了权限的管理,减轻了系统管理的开销,减少了系统的安全漏洞。在实际应用中,根据部门和企业的安全政策、操作规则划分出不同的数据库角色。在创建角色时,可以为角色设置安全性。角色的安全性通过为角色设置口令字进行保护,只有提供正确的口令字才允许修改或设置角色;通过设置角色的生效或失效实现系统权限的可用或不可用,从而弥补了系统的权限没有失效或生效的属性。

4)资源管理

可通过使用概要文件限制每个用户登录的次数、限制连接会话、CPU使用时间和逻辑读等,可通过使用默认的概要文件,也可通过create profile命令单独创建自己的概要文件来实现。

5)审计策略

Oracle 10g数据库审计具有审计发生在数据库内部的所有操作的能力,有三种不同的审计类型:权限审计、语句审计和方案对象审计。

在默认情况下,数据库的审计功能是关闭的。在必要的时候,数据库管理员可以有选择地灵活使用这些审计方法,对用户监视,防止用户对数据库进行非法操作,以确保数据库的安全;同时尽可能将审计事件的数量控制在合理的范围内,以节省系统资源。

审计记录可以写入SYS.AUD$表或操作系统的审计跟踪中。要注意保护审计记录,否则,用户可通过非法操作来删除其审计踪迹。Oracle 10g提供了两个SQL脚本来管理与审计有关的数据字典视图:CATAUDIT.SQL和CATNDAUD.SQL。数据字典包含与审计有关的两类视图:第一类确定哪些项目被审计,第二类建立在审计表上,表示从各种角度的审计记录。

2.3 网络数据通信的管理

1)采取各种措施保证网络的安全,如避免未经授权的网络访问,包括保护网络中的软件以及路由器等;对网络传输的数据进行加密;使用防火墙,将数据库服务器置于防火墙保护之下;检查网络有效的IP地址。

2)检查SSL。SSL是互联网安全通信的标准协议,它提供了数据集成数据机密的机制,支持安全认证和加密。在检查SSL时应注意以下几点:应确保配置文件使用正确的SSL端口号;应确保SSL模式下通信双方的一致性;要保证为tnsnames.ora和listener.ora文件中ADDRESS参数的protocol值指定tcp;服务器应支持客户端密码和证书密钥算法。

3)sqlnet.ora文件。在服务器端的sqlnet.ora文件中添加tcp.invited.nodes和tcp.uninvited.nodes参数可决定哪些客户机允许和不允许与服务器连接:

tcp.validnode_checking=yes

tcp.invited_nodes=(|name, |name)

tcp.excluded_nodes=(|name, |name)

4)监听器的使用。在默认情况下,监听器没有设置口令。此时,远程客户机可以通过监听控制器获得监听器的状态信息。因此,应设置监听器的口令,并限制其权限,使其不能在数据库或Oracle服务器地址空间中读写文件。

在listener.ora参数文件中,让admin_restrictions_=on可阻止在运行期间其他任何连接所做的有关监听器的修改。

除了设置口令外,还应更改数据库的端口号,对默认的端口号1521或不使用的端口应全部封锁住。

5)在数据库初始化参数文件init.中添加参数:remote_os_authent=false,以此严格限制远程客户端的连接。另外,不允许操作系统用户或Oracle数据库用户更改默认文件和目录的权限。

2.4 其他安全措施

Oracle数据库除上述基本的安全控制外,还另外提供了一些高级的安全性特性,如虚拟专用数据库(VPD)、标签安全、数据库加密、精细粒度审计(FGA)、N-tier用户验证支持等。它们分别用于加强数据库安全的不同部分,其中虚拟专用数据库和标签安全用于控制用户仅仅存取数据库中数据的某一个子集。数据库加密是一种主动的信息安全防范措施,只对数据库中机密程度较高的数据进行加密,可使用Oracle提供的系统包dbms_obfuscation_toolkit对其进行加密。精细粒度审计(FGA)特性用于监控/追踪用户的各种数据库操作,N-tier用户验证支持则使数据库可以通过诸如Kerberos或令牌卡等外部机制来取得第三方认证授权。

在Oracle_Home\bin目录下的wrap.exe封装程序可加密PL/SQL源代码,加密后的应用程序不能编辑也不能被实施逆向工程。此外,定期进行数据库备份工作,以便在意外情况发生后,可以利用备份数据来恢复数据库,也是保证Oracle数据库系统安全的一个重要措施。

参考文献:

[1] 萨师煊,王珊.数据库系统概论[M].高等教育出版社,2000.

[2] 贾代平.Oracle DBA核心技术解析[M].电子工业出版社,2006.

[3] 任树华.Oracle 10g应用指导与案例精讲[M].机械工业出版社,2007.

[4] 黄健泉.Oracle数据库安全解决方案探讨[J].广东通信技术.2005(8).

上一篇:一种基于能量感知无线传感器网络多路径路由机... 下一篇:信息技术与课程整合存在的问题及解决策略