APP下载

基于虚拟用户管理的数据库安全策略设计

2012-09-17王锋张新建

网络安全技术与应用 2012年7期
关键词:应用层用户名口令

王锋 张新建

中国电子科技集团公司第二十八研究所 江苏 210007

0 引言

数据库系统作为各类信息系统中的数据支撑软件发挥着越来越重要的作用。随着大型信息系统建设中数据共享程度的不断提高,数据访问的安全成为一个比较突出的问题摆在我们的面前。虽然各种数据库管理系统本身提供了一整套的信息安全管理策略,但在某些保密要求高的特殊信息系统建设环境下,仅仅单纯利用这些安全管理策略是不够的;另一方面,作为特殊的信息系统,如何防止应用以及系统管理人员(包括数据库管理人员)对数据库中信息的随意访问也是至关重要的。本文基于虚拟用户管理的概念介绍了一种有效解决以上问题的数据库系统口令安全解决方案的设计。

1 数据库系统的安全管理策略概述

创建和实施安全的过程有助于保护工程中最重要的财富---数据。数据安全性是信息系统建设中数据库使用范畴要考虑的重要因素。数据安全的含义包括信息不应该透露给未经授权的用户、只允许授权用户可以修改数据、用户不允许存取不必要的数据。这三个方面在建立数据库安全系统时是最基本的考虑因素。

1.1 数据的安全性策略

(1) 数据安全包括在对象级控制数据库访问和使用的机制;

(2) 数据安全策略主要由你想要为你的数据库数据建立的安全等级决定;

(3) 数据的安全性考虑应该基于数据的重要性;

(4) 数据安全的一些实现方法包括系统对象特权以及角色管理;

(5) 细粒度存取控制。细粒度存取控制最简单的情况是在SQL语句中加了一个WHERE条件,用它来限制用户对表和视图里面的行数据的存取;

(6) 应用程序上下文控制。应用程序上下文是一个安全数据缓冲,用来存储存取控制决定的信息。

1.2 用户安全性策略

用户安全策略指一般用户、最终用户、管理员、应用程序开发员和应用程序管理员的安全策略。

(1) 一般用户的安全性。如果用户是通过数据库进行用户身份验证,那么建议使用口令加密的方式与数据库进行连接。为了更好地保护口令的机密性,可以为客户/服务器和服务器/服务器连接配置加密口令;

(2) 最终用户的安全性。可以使用“角色”对最终用户进行特权管理;

(3) 数据库管理员安全性策略。保护作为 sys和 system用户的连接;保护管理员与数据库的连接;使用角色对管理员特权进行管理;

(4) 应用程序开发者的安全性策略。安全管理员可以授权应用程序开发者建立所需要的对象,或只将建立对象的特权授予某个数据库管理员,让他负责建立对象。这要依赖于应用程序所遵循的模式是自由开发还是受控开发;管理员通过建立角色,给角色授权来管理典型应用程序开发者所需要的特权,但同时应注意到对象权限很少授予应用程序开发者。

1.3 口令管理策略

数据库安全系统依赖于口令,要求口令任何时候都保持秘密。但口令经常遭到偷窃、伪造和误用。一般采用的安全策略是概要文件控制。概要文件是一个规定了资源限度的数据库实体,它可以控制数据库和系统资源的使用。

1.4 审计策略

数据库审计与操作系统审计的功能一样。审计跟踪记录操作、登录、非法请求并分析它们。同时它也检测错误的违反和补偿。数据库具有审计发生在其内部的所有操作的能力。它使得数据库能够记录何时发生的操作以及是谁在使用该操作等信息。利用这些信息,可以跟踪是谁在破坏数据库,是谁的误操作以及是谁对数据库进行操作。数据库具有审计发生在其内部的所有操作---包括注册企图、对象访问和数据库操作的能力,审计的结果存储在数据库的审计表中。

2 基于虚拟用户管理的口令管理策略

在上面的介绍中不难发现商用数据库管理系统一整套的安全管理策略中,口令管理策略实际上处于核心地位,因为如果口令管理不好的话,任何人可以以任何身份访问系统的数据库,从而造成信息的泄露;另一方面,从数据库系统管理本身而言,无法防止应用开发人员访问不必要的数据。

纵观现有主流商用数据库管理系统本身的口令管理方式,基本上是在数据库中创建一个schema/user时指定对应的口令,这种口令将会以加密的形式存储在数据库的数据字典目录中,以后如果需要修改,只能通过底层SQL语句进行。这种口令存储与管理机制可以理解为“死口令”或者“静态口令”。在应用程序访问数据时,需要预先知道对应模式/用户的口令,如果没有动态获取口令的方法,只能在程序中人为写死,如果以后数据库口令发生变化,应用程序则需要重新编译,给软件维护带来一定的不便,更无法达到具有某些特殊应用的系统对数据库信息安全要求的高度,因为口令有可能会被创建 schema/user的系统管理人员无意或者有意的泄露。基于此,在数据库原有口令管理策略的基础上引入虚拟用户管理的概念来实现更高级别的口令安全和应用访问的灵活性。

2.1 虚拟用户管理软件设计思路

虚拟用户设计的初衷是为了隐蔽数据库用户,使应用层数据库程序访问数据库时使用的用户(姑且称为“伪用户或者应用层用户”)与数据库用户分离,通过创建映射表建立数据库真实用户与虚拟用户之间的对应关系。在使用数据库应用访问数据库时,只需给出应用层用户,然后由虚拟用户代理软件根据提供的应用层用户去“动态获取”由守护进程虚拟用户服务管理的滞留在内存中的动态的数据库用户与口令以及相应的连接字符串信息。

应用层用户与数据库用户(代理用户)的映射关系及其管理由虚拟用户管理软件实现。应用层用户与代理用户映射关系的修改通过编制特定的软件调用虚拟用户管理软件的API接口实现,应用层用户对代理用户的用户名和口令一无所知,在生成新的应用层用户的同时在数据库中生成一代理用户并建立两者之间的映射关系,通过虚拟用户管理软件API接口将映射关系写入映射表。代理用户的用户名和口令由虚拟用户软件通过特定的算法随机生成并通过特定加密算法进行加密,其用户名和口令均长达 30位,由于应用层用户并不直接接触数据库,也不知道对应的代理用户的用户名和口令,因此杜绝了应用层用户直接登录数据库的可能性,同时屏蔽了数据库的真实用户名和口令。

基于虚拟用户管理的用见图1。

图1 基于虚拟用户管理的应用示例

如图1所示,应用程序在访问数据库之前,通过虚拟用户服务程序获取存储在映射表中的代理用户及其相应的连接信息,在这个过程中,连接信息的细节对应用层是透明的。

2.2 虚拟用户管理软件的体系结构

虚拟用户管理软件分为三部分:一部分为虚拟用户管理服务,其以守护进程的方式驻留在数据库服务器上运行,主要任务是接收来自于虚拟用户管理服务代理接口的请求,对映射表进行操作,并将执行结果返回虚拟用户管理服务代理接口;一部分为虚拟用户管理代理API,由应用开发人员调用,主要任务是接收来自客户端的请求并转发至虚拟用户管理服务,同时将结果返回至客户端;另一部分是虚拟用户初始化模块,主要完成虚拟用户的初始化创建,构建映射表,再生成映射关系以及口令管理。虚拟用户管理代理接口与虚拟用户管理服务之间通过SOCKET进行通信。

虚拟用户管理软件的组成见图2。

图2 虚拟用户管理软件的组成

2.2.1 虚拟用户管理服务

由于映射表中存放有虚拟用户的用户名和口令,因此,其密级比较高,对于它的管理也非常严格。映射表应集中存放在数据库服务器上,在操作系统级对该文件的存取权限进行控制,保证只有超级用户对该文件具有读写权限。映射表采用加密方式存放。映射表中存放的基本信息应包含应用层用户、代理用户(数据库用户)、口令、网络服务名称以及其他的一些连接信息。虚拟用户管理服务的处理流程见图3。

图3 虚拟用户管理服务的处理流程

内部接口及描述(如表1):

调用方:虚拟用户管理服务

接口格式(函数接口):

表1 虚拟用户管理服务的内部处理接口

2.2.2 虚拟用户管理代理API

虚拟用户管理代理API提供一套访问虚拟用户服务的函数接口,主要由应用程序在每次连接数据库之前调用以便获取必要的连接信息。管理代理API被调用后试图通过socket与数据库服务器上驻留的虚拟用户管理服务建立连接,并将相关应用层用户名传给虚拟用户管理服务进程,虚拟用户服务进程根据获得的应用层用户名搜寻映射表找出对应的映射关系条目,然后将该条目下对应的数据库用户的真实用户名、口令、网络服务名以及其他的一些连接信息返回给虚拟用户管理代理API,进而返回给应用调用者。

虚拟用户管理代理API的处理流程见图4。

图4 用户管理代理API处理流程

接口及描述:

在虚拟用户管理代理API提供的接口中,最核心的就是获取连接信息的接口。

int GetDBConnInfo(char *keyvalue,char *username,char*agentuser,char *password,char *netservice )。

该接口在windows和unix环境上依赖不同的库都可以运行。为了进一步加强该接口的调用安全,在参数中增加注册码验证参数,确保调用此接口的应用已获得安全授权。

2.2.3 虚拟用户初始化

虚拟用户初始化模块主要完成虚拟用户与真实用户映射关系的生成及再生成。该模块的运行结果将会生成虚拟用户管理服务运行时所需读取的映射表文件。另外,该模块也可以定期重新生成映射关系从而定期更改数据库用户的口令。

虚拟用户初始化的处理流程见图5。

图5 虚拟用户初始化

以上详细介绍了基于虚拟用户服务以及虚拟用户代理API的数据库连接信息获取机制,这种方式使数据库用户的口令完全由虚拟用户服务管理与维护,对应用开发人员透明。应用开发人员在开发数据库应用时,只需调用提供的虚拟用户代理API来获取连接信息即可。口令被映射关系储存与管理,使用人员无法获取口令,无法使用SQL*PLUS等数据库访问软件从底层访问数据库。映射关系及口令可由系统维护人员定期运行映射表初始化软件更新,在此过程中,由于系统维护人员使用的是模块化的维护工具,所以他们也无法获取映射关系与口令信息。保证获取口令(以及其它必要的连接信息)的惟一途径是基于虚拟用户管理服务的虚拟用户代理API。

3 总结

基于虚拟用户思想的数据库用户/口令管理机制可以很好的实现数据库底层用户与应用层用户的分离,实现了对数据库口令进行动态管理,为很多数据库应用在连库环节提供了更高的安全性和更好的灵活性,同时也能杜绝一般用户试图通过SQL*PLUS或者Toad等第三方商用软件随意访问数据库的可能性,为大型信息系统建设中数据库的安全访问提供了比较可靠的解决方案。

[1]Thomas Kyte著,袁勤勇,张玉魁等译.Oracle专家高级编程[M].北京:清华大学出版社.2002.

[2]Thomas Kyte著,钟鸣,郝玉洁等译.Oracle高效设计[M].北京:机械工业出版社.2006.

[3]Doug Stuns,Matthew Weishan 著,赵军锁,孙文明,邓波等译.Oracle9i DBA基础Ⅱ学习指南.北京:电子工业出版社.2002.

[4]谈竹奎,况志军著.Oracle9i数据库管理员高级技术指南.北京:中国铁道出版社.2003.

猜你喜欢

应用层用户名口令
《护士进修杂志》投稿程序
《护士进修杂志》投稿程序
《护士进修杂志》投稿程序
高矮胖瘦
口 令
机智的快递员
好玩的“反口令”游戏
基于分级保护的OA系统应用层访问控制研究
SNMP服务弱口令安全漏洞防范
新一代双向互动电力线通信技术的应用层协议研究