许兴义 王国强 陶明慧

(中国人民解放军西藏77635部队,西藏 错那 856700)

数据库管理系统设计首先要考虑的一个因素是系统的安全性。安全性措施旨在保护数据,以免遭非法窥探或蓄意破坏。

目前很多MIS系统(管理信息系统)采用的是Access数据库,尤其是部队MIS多涉及到军事命令、军事情报等涉密信息,因此,数据库安全性显得尤为重要。为此,本文对Access数据库安全研讨如下。

1 Access数据库系统的安全机制

Access数据库系统的安全机制将安全性管理分为三个阶段[1],如图1所示。

图1 Access数据库安全机制

确认阶段,检查用户的登录帐号以及用户连接数据库的密码是否正确;

许可阶段,检查进入数据库的用户名是否正确以及此用户具有何种用户权限;

跟踪用户活动阶段,通过加入跟踪审计模块,以备安全性分析。

1.1 设置确认阶段的数据库密码

打开的数据库设置密码,对于在某个用户组中共享的数据库或是单机上的数据库,设置密码通常就足够了。如果要复制数据库,则不要使用数据库密码。如果设置了密码,复制的数据库将不能同步。

这个方法是安全的,但只应用于打开数据库。在数据库打开后,数据库中的所有对象对用户都将是可用的。

1.2 设置许可阶段的用户级安全

设置数据库安全最灵活最广泛的方法是设置用户级安全管理(包括用户管理和存取控制)。

用户管理要求用户在启动Access时确认自己的身份并键入密码。存取控制为用户授予权限,规定他们如何使用数据库中的对象。例如,普通用户只允许查看包含武装巡逻数据的表,而不能访问“敌情处置表”。系统管理员则对数据库中的所有对象都具有完全的权限。

1.3 跟踪与审计

对于边防武装巡逻管理信息系统,跟踪的主要任务是对系统或用户使用系统的情况进行记录,以便系统管理员进行审计和安全性分析,从而保证数据的安全。

2 安全机制的设计

2.1 基于Access2003自身进行安全性设置[1]

添加数据库口令保护数据库,用“独占”方式打开数据库,单击“工具”菜单“安全”子菜单上的“设置数据库密码”命令,即可在密码框中键入自己的口令。下一次打开数据库时,将显示要求输入口令的对话框。

注意:如果已定义数据库的用户级安全对数据库不具有管理员权限,就不能设置数据库口令。而且,定义的数据库口令是添加到用户级安全上的。

设置用户级安全,Access对象包括:表、查询、窗体、报表、宏和模块。对其所有对象均能设置用户级的许可权限。

设置用户级安全的流程如下:

①要求用户登录到Microsoft Access:启动Microsoft Access,打开数据库,在“更改登录密码”选项卡上键入新口令。

②创建和删除 “管理员”帐号:“工具”菜单“安全”子菜单中的“用户与组帐号”命令可用来增加或删除用户帐号,并改变其口令。

③改变数据库及其对象的所有者(使用“用户级安全向导”):新建一个数据库并将所有的对象导入其中,然后通过取消用户组对新数据库对象的所有权限,为选定对象类型设置安全,然后加密数据库。

④创建、设置用户的权限并设置登录口令:先为组指定权限,然后通过将用户添加到组中或从组中删除的方式来更改单个用户的权限。

加密或解密数据库,启动Microsoft Access→单击“工具”菜单“安全”子菜单中的“加密/解密数据库”→指定要加密或解密的数据库→指定加密或解密之后的数据库名称、驱动器及文件夹。注意:在数据库打开时不能对其进行加密或解密。在多用户环境下,若其他用户打开了数据库,也无法执行加密或解密操作;如果使用原有的数据库名称、驱动器和文件夹,在加密或解密成功后,Access会自动将原有的数据库替换为加密或解密后的版本,但若出现错误,Access将保留原有的数据库文件。

2.2 通过VB语言进行Access数据库管理系统安全性设置[2-3]

2.2.1 创建和连接新的Access工作组信息文件

Access数据库的Jet引擎就是一个数据库管理系统,其作用是在用户和系统信息库中检索和保存数据,也叫数据管理部件,利用它可以创建其它数据访问系统,例如VB及Microsoft Jet。而Microsoft Access数据库的用户级安全机制是通过一个系统数据库(System.mdw)来管理的。此数据库一般在“C:WindowsSystem”的路径下,而用户名、用户密码、组名、用户权限均在此数据库中保存,一般的软件不能打开和修改它。

安装Access2003时创建的工作组信息文件所定义的默认工作组信息文件,这些信息通常很容易确定,使不具有授权的用户也很可能创建该工作组信息文件的其它版本,并获得该工作组信息文件中定义的工作组管理员帐号(管理员组的成员)的各种不可撤消的权限。要预防这一点,应通过Microsoft Access Workgroup Administrator来新建一个工作组信息文件并为其指定工作组ID(WID)。新建Access工作组信息文件的步骤如下:

启动“C:WINDOWSSYSTEMWrkgadm.exe”(工作组管理员)。 单击“工作组管理员”对话框中的“创建”按钮,键入相应的名称和组织名。在“工作组所有权信息”对话框中键入一个最多为20个字符、数字和字母组合。在创建了新的Access工作组信息文件后,就可以单击“联接”按钮,用浏览的方式找到新建的Access工作组信息文件后,单击“确定”退出即可。

2.2.2 用户控制只有Access数据库的系统管理员才能操作用户及为其分配管理权限。用户控制操作包括对用户和更改登录系统数据库密码等两部分管理。

用户管理:对用户的管理一般包括添加/删除用户、修改/删除用户密码等控制。“添加/删除用户”是系统管理员向系统数据库添加合法用户(包括用户名和密码)/删除已存在的合法用户;“修改/删除用户密码”是系统管理员修改/删除合法用户的密码。

添加用户,模块主要负责添加数据库的合法用户,并依据合法用户的姓名及密码转换成一个唯一的PID值存入系统数据库中。注意:密码最大长度是14位。创建新用户并添加到工作组中去的代码如下:

删除用户,模块主要负责从系统数据库中删除用户的代码如下:

修改用户密码,实现系统管理员修改用户密码操作的主要代码如下:删除用户密码,实现系统管理员删除用户密码操作的主要代码:Change Password sOldPassword,″″′设置用户的新密码为空字符更改登录系统数据库密码,实现更改登录系统数据库密码的主要代码:

DBEngine.Workspaces(0).Users(″用户名″)NewPassword 旧密码,新密码

2.2.3 用户的权限控制

用户的权限控制包括为用户授予权限和更改用户的所有权限两部分。

为用户授予权限,实现过程是把界面上选定的权限合成一个权限代码,并将其保存于系统数据库中:

更改用户的所有权限:

2.2.4 加密、解密数据库

DBEngine.CompactData(当前数据库,新数据库,加密或解密)

2.2.5 修复数据库

DBEngine.RepairDatabase(数据库的名称)

2.3 跟踪与审计

分为系统级审计(对系统管理员的操作和具有不同的数据库级权限的用户设置)、表级审计(对每个基表都可以指定不同级别的审计,由表级审计设置语句指定对某一特定表的哪些操作应予以审计)、用户级审计(对系统的任一用户均可设置审计,审计一旦设置,该用户在系统内的任何操作均被记录在审计表中)。审计记录了基表的使用、删除,数据库管理员和数据库安全员的操作。对于每一个记录下来的事件,审计记录标识出事件发生的日期和时间,操作的用户,事件类型及事件是成功还是失败,请求的来源、客体名称和安全级。值得注意的是:跟踪与审计的信息只能由数据库审计员独立使用。

[1]刘独玉.Access数据库系统安全性的设计与实现[J].计算机应用,2001,21(8):50-52.

[2]罗彬,刘独玉.用VB6.0设计Access数据库的安全性[J].四川轻化工学院学报,2000,13(2):64-67.

[3]何建国.Visual Basic 5.0和 MicrosoftAccess97数据库的安全性接口[J].计算机工程,2000,26(1):104.

[4]金尊和.软件工程实践导论:有关方法、设计、实现、管理之三十六计[M].清华大学出版社,2005.