论文部分内容阅读
[摘 要]组和安全性在操作系统下建立用户组是保证数据库安全性的一种有效方法。Oracle程序为了安全性目的一般分为两类:一类所有的用户都可执行,另一类只有数据库管理员组DBA可执行。本文主要探讨基于Oracle数据库的网络安全访问机制。
[关键词]Oracle数据库;网络安全;访问机制
中图分类号:F224-39 文献标识码:A 文章编号:1009-914X(2013)09-0145-01
随着计算机的普及以及网络的发展,数据库已经不再仅仅是那些程序员所专有的话题。Oracle数据库更是凭借其性能卓越、操作方便灵活的特点,在数据库的市场中已经占据了一席之地。以下将基于Oracle数据库的网络安全访问机制。
1 Oracle数据库的一些基本常识
(1)Oracle所包含的组件。Oracle数据库是指整个Oracle RDBMS环境,它包括以下组件:①Oracle数据库进程和缓冲(实例)。②SYSTEM表空间包含一个集中系统类目,它可以由一个或多个数据文件构成。③其他由数据库管理员(DBA)(可选)定义的表空间,每个都由一个或多个数据文件构成。④两个以上的联机恢复日志。⑤归档恢复日志(可选)。⑥其他文件(控制文件、Init. ora、Config. ora等)。每个Oracle数据库都在一个中央系统类目和数据字典上运行,它位于SYSTEM表空间[1]。
(2)关于“日志”。Oracle数据库使用几种结构来保护数据:数据库后备、日志、回滚段和控制文件。下面将大体上了解一下作为主要结构之一的“日志”。每一个Oracle数据库实例都提供日志,记录数据库中所作的全部修改。每一个运行的Oracle数据库实例相应地有一个在线日志,它与Oracle后台进程LGWR一起工作,立即记录该实例所作的全部修改。归档(离线)曰志是可选择的,一个Oracle数据库实例一旦在线日志填满后,可形成在线日志归档文件。归档的在线日志文件被唯一标识并合并成归档日志。
(3)物理和逻辑存储结构。Oracle RDBMS是由表空间组成的,而表空问又是由数据文件组成的。表空间数据文件被格式化为内部的块单位。块的大小,是由DBA在Oracle第一次创建的时候设置的,可以在512~8192个字节的范围内变动。当一个对象在Oracle表空间中创建的时候,用户用叫做长度的单位[初始长度(initial extent)、下一个长度(next extent)、最小长度(mine tents)以及最大长度(max extents)来标明该对象的空间大小。
2 Oracle数据库网络安全访问机制
2.1 保护默认的用户账号
在新的Oracle数据库中,初始时,一般都安装有20多个的默认模式(实际的数目可能略有不同,因为在数据库的创建过程中需要有选择地安装这些模式)。当利用Google对“默认Oracle用户(Default Oracle Users)”进行搜索时可以发现,其中的用户名、密码以及这些账号的权限都是公开的。这些账号经常用来存储元数据(metadata)以及用于专门的数据库选项的过程,例如文本选项(Text Option)以及空间选项(Spatial Option)。因此,其中的很多账号都拥有相当重要的权限,它们的密码也可能是众所周知的,有可能就列举在Oracle的产品文档中,也有可能就发布在Internet上。上述因素加起来,则对数据库形成了危险:未授权的用户可以连接到其中的某个授权账号上,并访问或修改敏感的数据。在数据库的安装过程中,可以使用数据库配置助手(Database Configuration Assistant,DBCA)选择需要安装哪些默认账号(可以直接在数据库选项中进行选择)。非常重要的一点是必须根据数据库的需要做出合适的决定,从而进行安装。安装那些不需要的账号会带来不必要的危险[2]。
(1)对数据库的访问和登录进行保护。下面将给出控制访问数据库账号的若干方法,这些方法包括从限制对账号的登录到完全删除账号等各种不同的方法。而把其中的若干方法组合在一起使用则是更好的方法,因为这体现了深度防御的思想。①改变默认密码并设定更健壮的密码。在数据库创建过程中,DBCA提供了产生初始密码的捷径,它允许所有的账号都使用相同的密码。不用选择这个选项,给每一个模式设定强壮而又各不相同的密码。②创建不可能的密码。在数据库安装后,管理数据库的账号和权限,并阻止任何希望能直接登录数据库的用户,因为密码是不可能被猜到的。③创建数据库的登录触发机制。检查不能登录数据库的用户,如果用户尝试登录则登录触发器触发失效。失效的登录触发器将能阻止用户登录数据库。这种技术对于拥有某些授权的用户不会起作用,例如SYS(SYSDBA)以及拥有“数据库触发器管理员(ADMINISTRAT OR DATABASE TRIGGER)”系统权限的用户。然而,如果仅仅只允许上述授权用户可以登录数据库也会带来某些不足,不过这是能拒绝其他所有用户登录数据库的极好的方法。④取消CREATESESSION和(或)CONNECT角色。删除登录数据库的权限是用来阻止用户登录数据库最显而易见的方法。请注意,这个方法在阻止黑客登录数据库的同时也会阻止合法用户和应用程序的登录,这与用户知道还是不知道密码没有关系,因为登录权限已经被删除了。
(2)抛弃所有陈旧的东西。有可能在经过一段时间后,用户以及应用程序不再需要访问数据库——用户可能得到了一份新的工作,从而不再需要登录数据库——至少是不需要通过合法的途径登录。在确保登录系统、网络以及数据库安全的过程中,一个良好的习惯是删除不再使用或不再需要的账号。这是一个很容易就可以完成的简单任务,但也是最普遍、最严重的安全风险以及不良习惯之一。过期的账号至少应该被锁定,当然,最好是被撤销。
2.2 Oracle密码
Oracle在数据字典中存放用户密码。对于得到数据库认证的用户,其中所存放的实际上不是密码明文本身,而是密码校验(password verifiers)。密码校验是密码明文的哈希(hash)表示。其中存放的密码校验值以十六进制表示。数据库认证的过程则是计算用户为了通过认证所提供的密码明文的密码校验,并把计算结果与数据字典中存放的某一密码校验比较,如果相符合,则表示用户提供了相同的密码,从而可以通过认证。(1)使用Oracle本地存储的密码验证密码。应用用户的认证是确保数据库应用安全非常重要的一步。可以创建、维护,以及(或)同步所存储的密码以及认证信息。其次,假设应用的用户同时也是数据库的用戶,那么应用可以把应用用户作为独立的用户与数据库进行连接,并进行认证。这是一个不可取的方法,因为仅仅为了认证而建立或撤销与数据库的连接开销较大——从认证需要的时间和性能的观点看。最后一个方法仍需要假设应用的用户同时也是数据库的用户,从而可以利用数据库存储的内部密码[3]。(2)限制数据库资源除了密码规范之外,Oracle还支持资源规范,从而限制使用昂贵的数据库资源。资源规范有助于确保应用程序或用户不会有意或无意地独占数据库和计算机系统的所有资源。可以查询DBAPROFILES视图,了解各种受管理的资源的使用情况以及被限制使用的值。注意,默认值是“不受限制”,一个良好的习惯是尽可能地设定这些值。(3)确保网络的安全对于绝大部分数据库,在用户能访问数据库之前就已产生了安全问题。把用户、应用和数据库连接在一起的网络是安全链中非常重要的一环。
参考文献
[1] 刘天华,孙阳,朱宏峰等编著.网络安全[M].科学出版社,2010.04.
[2] 祝远春.Oracle数据库网络安全研究[J].科技资讯,2008.10.
[3] 本书编委会编著.计算机网络安全[J].中国计划出版社,2007.8.
[关键词]Oracle数据库;网络安全;访问机制
中图分类号:F224-39 文献标识码:A 文章编号:1009-914X(2013)09-0145-01
随着计算机的普及以及网络的发展,数据库已经不再仅仅是那些程序员所专有的话题。Oracle数据库更是凭借其性能卓越、操作方便灵活的特点,在数据库的市场中已经占据了一席之地。以下将基于Oracle数据库的网络安全访问机制。
1 Oracle数据库的一些基本常识
(1)Oracle所包含的组件。Oracle数据库是指整个Oracle RDBMS环境,它包括以下组件:①Oracle数据库进程和缓冲(实例)。②SYSTEM表空间包含一个集中系统类目,它可以由一个或多个数据文件构成。③其他由数据库管理员(DBA)(可选)定义的表空间,每个都由一个或多个数据文件构成。④两个以上的联机恢复日志。⑤归档恢复日志(可选)。⑥其他文件(控制文件、Init. ora、Config. ora等)。每个Oracle数据库都在一个中央系统类目和数据字典上运行,它位于SYSTEM表空间[1]。
(2)关于“日志”。Oracle数据库使用几种结构来保护数据:数据库后备、日志、回滚段和控制文件。下面将大体上了解一下作为主要结构之一的“日志”。每一个Oracle数据库实例都提供日志,记录数据库中所作的全部修改。每一个运行的Oracle数据库实例相应地有一个在线日志,它与Oracle后台进程LGWR一起工作,立即记录该实例所作的全部修改。归档(离线)曰志是可选择的,一个Oracle数据库实例一旦在线日志填满后,可形成在线日志归档文件。归档的在线日志文件被唯一标识并合并成归档日志。
(3)物理和逻辑存储结构。Oracle RDBMS是由表空间组成的,而表空问又是由数据文件组成的。表空间数据文件被格式化为内部的块单位。块的大小,是由DBA在Oracle第一次创建的时候设置的,可以在512~8192个字节的范围内变动。当一个对象在Oracle表空间中创建的时候,用户用叫做长度的单位[初始长度(initial extent)、下一个长度(next extent)、最小长度(mine tents)以及最大长度(max extents)来标明该对象的空间大小。
2 Oracle数据库网络安全访问机制
2.1 保护默认的用户账号
在新的Oracle数据库中,初始时,一般都安装有20多个的默认模式(实际的数目可能略有不同,因为在数据库的创建过程中需要有选择地安装这些模式)。当利用Google对“默认Oracle用户(Default Oracle Users)”进行搜索时可以发现,其中的用户名、密码以及这些账号的权限都是公开的。这些账号经常用来存储元数据(metadata)以及用于专门的数据库选项的过程,例如文本选项(Text Option)以及空间选项(Spatial Option)。因此,其中的很多账号都拥有相当重要的权限,它们的密码也可能是众所周知的,有可能就列举在Oracle的产品文档中,也有可能就发布在Internet上。上述因素加起来,则对数据库形成了危险:未授权的用户可以连接到其中的某个授权账号上,并访问或修改敏感的数据。在数据库的安装过程中,可以使用数据库配置助手(Database Configuration Assistant,DBCA)选择需要安装哪些默认账号(可以直接在数据库选项中进行选择)。非常重要的一点是必须根据数据库的需要做出合适的决定,从而进行安装。安装那些不需要的账号会带来不必要的危险[2]。
(1)对数据库的访问和登录进行保护。下面将给出控制访问数据库账号的若干方法,这些方法包括从限制对账号的登录到完全删除账号等各种不同的方法。而把其中的若干方法组合在一起使用则是更好的方法,因为这体现了深度防御的思想。①改变默认密码并设定更健壮的密码。在数据库创建过程中,DBCA提供了产生初始密码的捷径,它允许所有的账号都使用相同的密码。不用选择这个选项,给每一个模式设定强壮而又各不相同的密码。②创建不可能的密码。在数据库安装后,管理数据库的账号和权限,并阻止任何希望能直接登录数据库的用户,因为密码是不可能被猜到的。③创建数据库的登录触发机制。检查不能登录数据库的用户,如果用户尝试登录则登录触发器触发失效。失效的登录触发器将能阻止用户登录数据库。这种技术对于拥有某些授权的用户不会起作用,例如SYS(SYSDBA)以及拥有“数据库触发器管理员(ADMINISTRAT OR DATABASE TRIGGER)”系统权限的用户。然而,如果仅仅只允许上述授权用户可以登录数据库也会带来某些不足,不过这是能拒绝其他所有用户登录数据库的极好的方法。④取消CREATESESSION和(或)CONNECT角色。删除登录数据库的权限是用来阻止用户登录数据库最显而易见的方法。请注意,这个方法在阻止黑客登录数据库的同时也会阻止合法用户和应用程序的登录,这与用户知道还是不知道密码没有关系,因为登录权限已经被删除了。
(2)抛弃所有陈旧的东西。有可能在经过一段时间后,用户以及应用程序不再需要访问数据库——用户可能得到了一份新的工作,从而不再需要登录数据库——至少是不需要通过合法的途径登录。在确保登录系统、网络以及数据库安全的过程中,一个良好的习惯是删除不再使用或不再需要的账号。这是一个很容易就可以完成的简单任务,但也是最普遍、最严重的安全风险以及不良习惯之一。过期的账号至少应该被锁定,当然,最好是被撤销。
2.2 Oracle密码
Oracle在数据字典中存放用户密码。对于得到数据库认证的用户,其中所存放的实际上不是密码明文本身,而是密码校验(password verifiers)。密码校验是密码明文的哈希(hash)表示。其中存放的密码校验值以十六进制表示。数据库认证的过程则是计算用户为了通过认证所提供的密码明文的密码校验,并把计算结果与数据字典中存放的某一密码校验比较,如果相符合,则表示用户提供了相同的密码,从而可以通过认证。(1)使用Oracle本地存储的密码验证密码。应用用户的认证是确保数据库应用安全非常重要的一步。可以创建、维护,以及(或)同步所存储的密码以及认证信息。其次,假设应用的用户同时也是数据库的用戶,那么应用可以把应用用户作为独立的用户与数据库进行连接,并进行认证。这是一个不可取的方法,因为仅仅为了认证而建立或撤销与数据库的连接开销较大——从认证需要的时间和性能的观点看。最后一个方法仍需要假设应用的用户同时也是数据库的用户,从而可以利用数据库存储的内部密码[3]。(2)限制数据库资源除了密码规范之外,Oracle还支持资源规范,从而限制使用昂贵的数据库资源。资源规范有助于确保应用程序或用户不会有意或无意地独占数据库和计算机系统的所有资源。可以查询DBAPROFILES视图,了解各种受管理的资源的使用情况以及被限制使用的值。注意,默认值是“不受限制”,一个良好的习惯是尽可能地设定这些值。(3)确保网络的安全对于绝大部分数据库,在用户能访问数据库之前就已产生了安全问题。把用户、应用和数据库连接在一起的网络是安全链中非常重要的一环。
参考文献
[1] 刘天华,孙阳,朱宏峰等编著.网络安全[M].科学出版社,2010.04.
[2] 祝远春.Oracle数据库网络安全研究[J].科技资讯,2008.10.
[3] 本书编委会编著.计算机网络安全[J].中国计划出版社,2007.8.