荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: zzt (我命由我不由天), 信区: Database
标  题: [转载]数据共享中的数据库安全性设计
发信站: BBS 荔园晨风站 (Sun May 30 12:46:21 1999), 转信


发信人: stonec (Adong), 信区: Programme
标  题: [转载]数据共享中的数据库安全性设计
发信站: 网日情怀 (Thu Dec  3 13:32:48 1998) , 转信


       数据共享中的数据库安全性设计

                                             刘创 汪祖云 赵晓华

    在很多面向对象设计中,面向对象的数据库设计是基础,它比应用程序更重
要、更复杂。

    由应用对象模型映射而来的面向对象的关系数据库,从结构上保证了数据库
表和应用程序有较强的可维护性,而且便于实现从数据库功能设计出发的数据库结
构设计。但是,结构再好的数据库,倘若没有确保其中数据安全可靠的体制和措
施,即使只有一两个数据不真实,用户也有理由认为整个数据库不可信。因为一般
用户不会直接关心数据库是如何优化的,特别是经过信息隐蔽处理,把应用程序中
的某些静态数据(包括与它们封装在一起的服务器端处理程序)也放在服务器数据
库中以后,数据库安全性问题还将影响到客户端应用程序是否正常运行。

    在数据库性能设计中,安全性设计是最重要的课题,是数据库基础设计的一
部分。

                   一、 数据库安全性设计的误区

    在我国,数据库应用系统还很年轻,普及率不很高,没有形成社会依赖性,
缺乏国外因数据库安全性事故而导致整个系统失效的惨痛教训,所以对安全性设计
缺乏较深刻的认识,其表现大致可以列举如下:

    1.亡羊补牢式的安全性设计

    数据库安全性保障是基于结构的、体制的,是数据库设计中的上层设计。

    但是,常常见到一些数据库应用系统开发人员,直到数据录入程序且已进入
调试,才开始追加数据库用户管理设计,或者全部将其扔给服务器端的 DBMS 去
管理。这是程序级系统设计的典型实例之一。

    2.安全性设计是 DBMS 的任务

    随着 DBMS 的发展,原来 DBMS 用户程序的一些共同处理越来越多地被
DBMS 所代替。80年代初期的数据库管理系统支持安全性、可靠性功能很弱,诸如
用户管理、日志管理、数据库镜像、用户审计等完全由应用程序自己来完成。

    目前,以 DBMS 为统领的各种数据库管理系统一般都有支持安全性功能。但
是,这些功能大多需要在 DBMS 使用者的指示下工作。也就是说它需要数据库设
计者进行安全性体系设计,然后把这个设计中 DBMS 可以完成的部分通知它,由
DBMS 去执行。在做安全性设计之前,有必要弄清以下一些问题:哪些功能是
DBMS 无条件为用户做的?哪些功能是DBMS 在用户的指示下做的?哪些功能需要
用户与DBMS合作完成?哪些功能需要用户独立去完成?

    事实上,绝大部分的安全性设计都是需要开发者去实现或参与实现的。即使
DBMS 具有很好的支持安全性功能,倘若在设计中忽略了它,它也只能做个“睡美
人”。

    3.安全性措施不等于安全性体制

    安全性措施是安全性体制的一部分,只讲安全性措施不讲安全性体制是不能
从根本上保证数据库安全性的。安全性体制即数据库安全性系统(包括与数据库安
全性有关的数据库结构和相关处理程序),这些程序由 DBMS 和驻在服务器端的
数据库用户程序及客户器端的应用程序两部分构成。这里的安全性措施是指安全性
体制中非结构性的处理,即不涉及数据库结构的一些孤立措施,例如客户器端的输
入检验、用户资格审查、服务器端的 DBMS 用户定义等。

                二、 数据库安全性设计的思路与实践

    数据库安全性设计步骤大致如下:安全性系统总体结构与功能设计;结合整
体数据库表设计的安全性系统数据库表设计;DBMS 系统管理表一致性设计;面向
数据库管理员的安全性管理功能设计。
?
    下面结合北京市公路局系统,谈谈从体制上实现数据库安全性的一些经验和
体会。

    1.确保进入数据库的数据正确无误

    输入数据检验是将错误数据阻挡在数据库之外的一般措施。

    静态表是重要的输入支持,它使用户不可能输入有逻辑错误的数据,如性别
只有男女之分,不可能有其他输入。

    对通用输入检验采用公用函数,可以消灭程序员的经验差异,统一保证程序
检验的完备性,统一测试。

    也可以使用 DBMS 对数据类型、格式乃至内容的限制和检验功能,以保证数
据库内数据的可信度。但是这使系统的容错性下降,有时给程序调试或数据录入方
式带来不便,不是理想的办法。

    2.双重用户管理

    在公路局系统中,我们既使用了 Oracle 提供的用户管理功能,又设计了该系
统独立的用户管理系统。有关的设计包括:

    (1) 在数据库中定义了系统专用的用户管理表体系,包括用户基本表、角色
基本表及其他关系表 (如下图所示)。



    图1 系统用户管理表体系

    (2) 为了方便日常数据库管理,公路局的数据库管理系统设计在数据库管理
员专用的客户机上,而不是在服务器端。

    (3)依据系统专用的用户管理表进行用户资格审查。如果用户管理表上记录
有权访问,而DBMS 用户管理表上记录为无权,则DBMS 会报错并拒绝访问;反
之则由系统报错并拒绝访问。只有两者都记录有效,用户才能访问数据库。

    (4) 系统用户管理优先于DBMS 系统用户管理表。由于服务器上的Oracle
支持多个系统,可能造成对系统用户管理表误操作的因素较多,所以我们对从服务
器端输入的用户管理信息,采取一律不予承认的设计方针。也就是当系统用户管理
表与Oracle 系统用户管理表出现不一致时,依据前者去修正后者,以保持数据一致
性,保证用户管理的唯一权威性。

    3.基于数据安全性的应用对象表头设计

    我们对每个应用对象表都统一设计了表头,通过公用程序(行触发器) 适时地
写入相应的内容。表头由如下字段构成:

    新建时间

    最终修改时间
    最终修改程序ID
    最终修改机器号
    最终修改用户ID
    有效位
    用这个表头可以实现以下一些功能:


    (1) 用“有效位”实现误删除时的恢复,即每次删除时并不真正删除,只将
有效位置为“假”。

    (2)追踪某用户、某终端、某程序、某时间所修改的全部库表内容,即用户
审计。

    (3)追踪某个库表的全部修改内容,即数据库审计。

    显然,以上功能都是以数据库安全性为主题的。此外,还可以进行各种统
计,以作为数据库升级扩充时的设计参考,例如数据库修改率、追加率、追加增长
率、各部门更新数据库比率等。

    仅从审计而言,也可以使用 Oracle 的审计功能,用它的 Audit-Trail 表对各种
数据库对象及其活动进行审计。但这样就要维护 Audit-Trail表,因为它会无休止地
增长,需要适时清空,而且以前的审计信息清空后得不到保留。随着硬件能力的迅
速增强,只要没有数据完整性和潜在的数据不一致等逻辑问题,多一个表头并不会
加大多少系统开销。相反,记录下每个数据库数据的动态变化,对数据库整体安全
性及对今后扩充发展的意义都是不可限量的。

    4.面向角色的动态功能组合

    阻止不合法访问的一个最好方法是将用户不拥有访问权限的功能隐蔽起来,
使之不知道系统的全貌,不给他做恶意试探的机会。这是按角色拥有权限动态生成
面向指定用户系统界面设计的主要思路。

             三、 数据库管理子系统的用户是数据库管理员

    基于数据库的管理信息系统实现后,派生出一个新的职业即数据库管理员,
这是导入计算机系统之前所没有的。对于这一点,第一次导入计算机系统的计算机
用户可以不理解,但是数据库应用系统的设计者不能有丝毫疏忽。这个问题也是要
与数据库安全性设计一起考虑的。

    首先,开发者是不可能承担系统交付使用后数据库管理者的日常工作的。用
户登录、角色分配、数据库静态表维护、数据库定期备份及审计等,这些和数据库
系统生存期并存的数据库管理工作,虽然对用户是新的领域,但是却与应用功能密
不可分,只能由用户承担。

    其次,数据库管理工作绝大多数是重复性的,对非计算机专业用户来说,主
要是入门难。所以应该大量使用信息隐蔽性设计,把一些复杂的内部逻辑关系隐蔽
起来。例如:哪个功能模块对象对应哪些动态表和静态表,这些对非计算机专业的
数据库管理员来说,还是隐蔽起来为好。交给数据库管理员的数据库概念模型应该
与用户原有系统的概念模型相一致。

    此外,采用和其他数据库应用相同的、操作性强的、可自学习的友好界面,
在客户端而不是服务器端进行数据库管理操作,也是解决入门难的有效途径。操作
越简便越容易入门,越不易出错,数据库也就越安全。

    一些国内的数据库应用系统设计者,由于没有站在系统的高度进行设计,常
常到编程阶段才意识到一些本该在基本设计、上层设计中考虑的问题。数据库管理
员也是系统的用户,必须事先做好面向数据库管理员的系统功能设计,这一点常常
被一些国内软件开发人员忽略。结果是:或者由他们自己来承担数据库管理员的日
常工作,或者建议用户单位调进一个计算机专业技术人员。然而,数据库管理员工
作虽然入门难,但是随着系统进入稳定运行期,工作越来越简单,面对软件人材不
足的计算机业界现状,很少有专业软件人员能够长期专职于特定应用系统的数据库
管理员工作。

转载来源 计算机世界
年号: 1998   期号: 31
版别: 技 术 专 题 版
栏目: 专 题 报 道
--
2mKeep It Simple and Stupid 金融电脑之家7;40m0m
提供金融电脑的AS/400,程序/数据库设计,Y2K,汉字处理,自助产品等信息
5mhttp://netease.com/~stonec =stonec.yeah.net
5mhttp://zg169.net/~stonec    =stonec.kstar.com
5mgnet http://person.mm.gnet.gd.cn/b/stonec
5minet http://ftp.maoming.gd.cn/b/stonec7;40m0m

;36m※ 修改: stonec 於 Dec  3 13:36:15 修改本文 [FROM: 172.21.79.27]m
m;31m※ 来源: 网日情怀 bbs.mm.gnet.gd.cn [FROM: 172.21.79.27]m
--
m;33m※ 转寄:.网日情怀 bbs.maoming.gd.cn.[FROM: bbs.hz.gnet.gd.c]m


--



日出东方,唯我不败;
    天上地下,唯我独尊。

※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.143]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店