欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

深入了解MicrosoftAccess安全性

程序员文章站 2022-05-05 18:05:46
...

简介 在早期版本的 Microsoft Access(Microsoft Access 2000 以前)中,有关 安全性 的知识有时被认为是无法为任何人所掌握和应用的。您需要按顺序执行很多步骤,一旦遗漏某个步骤或者颠倒了顺序就会带来灾难性的后果。随着 Microsoft Access for Microsoft

简介

在早期版本的 Microsoft® Access(Microsoft Access 2000 以前)中,有关安全性的知识有时被认为是无法为任何人所掌握和应用的。您需要按顺序执行很多步骤,一旦遗漏某个步骤或者颠倒了顺序就会带来灾难性的后果。随着 Microsoft Access for Microsoft Windows® 95 的 Security Wizard 出现,以及 Microsoft Access 2000 的 Security Wizard 的不断改进,在 Access 中实现安全性已变得非常简单。但是,即使有了这些帮助,您也必须清楚自己的安全选项,并掌握在数据库中保护数据和对象的操作。否则,轻者会带来数据安全隐患,重者会将您锁在自己的数据库之外。

有很多方法可以保护您的 Access 数据库以及其中包含的数据。在本文中,我们将讨论用于保护组成数据库的各个对象(包含数据)、包含诸如窗体和报表等元素的对象以及代码(可能是数据库中最有价值的部分)的方法。本文中讨论的安全技巧只适用于 Microsoft Access 数据库 (.mdb) 文件。

需要了解的有关保护敏感数据的知识

您应该知道,有很多工具和第三方实用程序可以用于探测任何类型的数据库的密码,以及来自任何工作组信息文件的用户名和密码(本文后面将详细介绍工作组信息文件)。如果需要保护敏感数据免受非法访问,最好的安全措施就是使用计算机操作系统提供的文件级安全性和文件共享安全性。文件级安全性涉及在数据文件上设置权限。文件共享安全性涉及限制对数据文件存储位置的访问。文件共享安全性的一个示例是在存储数据文件的文件夹(位于本地计算机或网络服务器上)上设置用户权限。为此,可以将数据拆分到多个文件中,在这些文件上设置用户权限,再将这些文件放置到受保护的文件共享空间中。然后可以从具有安全设置的 Access 数据库链接到这些文件。

Access 安全性概述

以下各节介绍了几种保护 Access 数据库的方法。

加密或解密数据库

最简单(也是安全性最低)的保护方法是对数据库进行加密。加密数据库就是将数据库文件压缩,从而使某些实用程序(如字处理器)不能解读这些文件。加密一个不具有安全设置的数据库并不能保证数据库的安全,因为任何人都可以打开数据库并完全访问数据库中的所有对象。有关对数据库进行安全设置的详细内容,请参阅本文后面的使用 Security Wizard 设置 Access 数据库的安全性

加密可以避免在以电子方式传输数据库或者将其存储在软盘、磁带或光盘上时,其他用户偶然访问数据库中的信息。然而 Jet(Access 使用的数据库引擎)使用的加密方法非常薄弱,因此绝不能用于保护敏感数据。“加密/解密数据库”命令位于“工具”菜单的“安全”子菜单中。解密数据库是对加密过程的逆运算。

使用自定义界面

另一种相对简单的保护方案是使用自定义界面代替 Access 标准界面。与加密一样,它也不能保护数据库中的对象和敏感数据的安全。通过选择“工具”菜单中的“启动”选项,您可以指定自定义的启动窗体、菜单,甚至自定义的标题和图标。还可以选择取消 Database 窗口,从而对缺乏相应技术的应用程序用户隐藏这些对象。“启动”对话框的各项功能也可以通过编程实现。有关如何从“启动”对话框设置启动选项的详细信息,请参阅 Access 帮助中的“关于启动选项”。有关如何通过编程设置启动选项的详细信息,请参阅 Access 帮助 Microsoft Visual Basic® 编辑器的“设置‘启动’选项和编码中的选项”。

设置数据库密码

您可以在数据库上设置密码,从而要求用户在访问数据和数据库对象时输入密码。

注意:使用密码保护数据库或其中的对象的安全性也称为共享级安全性

您不能使用此选项为用户或组分配权限,因此任何掌握密码的人都可以无限制地访问所有 Access 数据和数据库对象。“设置数据库密码”命令位于“工具”菜单的“安全”子菜单中。

用户级安全性

除共享级安全性外,您还可以使用用户级安全性,它提供了最严格的访问限制,使您能够最大限度地控制数据库及其中包含的对象。这是我们所推荐的数据库保护措施的一部分(当和操作系统提供的文件级和共享级安全性结合使用时),因此我们将在本文后面对用户级安全性做详细介绍。

同样,我们也将讨论用于保护数据库中包含的 Visual Basic for Applications (VBA) 代码的各种方法。

警告:用户级安全性(在单独使用时)主要用于保护数据库中的代码和对象,以免用户不小心进行了修改或更改。如果不希望用户非法访问窗体、报表或模块中的代码,则必须将 .mdb 文件转换为 MDE 文件(本文后面将详细介绍)。要避免用户修改数据库中的查询、宏或数据访问页,唯一的方法就是将数据库文件放在一个受保护的文件共享区域中。此外,在 Access 中不可能既允许用户修改表中的数据,同时又禁止其修改表的设计或删除表。要提供这样一种功能,需要使用一个基于服务器的数据库产品,例如 Microsoft SQL Server™。

设置模块密码

使用密码可以保护所有标准模块和类模块(例如窗体和报表中包含的代码)以免用户不小心修改或查看 VBA 代码。设置密码后,您只需在每次会话时输入一次密码,以便在 Visual Basic 编辑器中查看或修改代码。除查看和编辑外,在剪切、复制、粘贴、导出或删除任何模块时也都需要密码。但应该清楚的是,使用这种方法保护代码不能防止您或其他用户运行代码,也不能防止其他用户使用第三方实用程序(如 16 进制编辑器)来查看代码。要完全保护代码,必须将 .mdb 文件转换为 MDE 文件。

要为项目中的模块设置密码:

为该项目从 Visual Basic 编辑器的“工具”菜单中选择“属性”命令。

在“项目属性”对话框中,单击“保护”选项卡。

选中“查看时锁定工程”复选框并键入密码。

在“确认密码”框中,重新键入密码,然后单击“确定”。

使用 MDE 文件

通过将数据库文件转换为 MDE 文件,可以完全保护 Access 中的代码免受非法访问。将 .mdb 文件转换为 MDE 文件时,Access 将编译所有模块,删除所有可编辑的源代码,然后压缩目标数据库。原始的 .mdb 文件不会受到影响。新数据库中的 VBA 代码仍然能运行,但不能查看或编辑。数据库将继续正常工作,您仍然可以升级数据和运行报表。尤其是,将 Access 数据库保存为 MDE 文件可以防止以下操作:

在设计视图中查看、修改或创建窗体、报表或模块。

添加、删除或更改对对象库或数据库的引用。

使用 Access 或 VBA 对象模型的属性或方法更改代码 - MDE 文件不包含可编辑代码。

导入或导出窗体、报表或模块。而表、查询、数据访问页和宏可以导入非 MDE 数据库,或从中导出。

要将 .mdb 文件转换为 MDE 文件:

关闭数据库。

单击“工具”菜单中的“数据库实用工具”。

单击“生成 MDE 文件”。

在“保存数据库为 MDE”对话框中,找到 .mdb 文件,然后单击“生成 MDE”。

注意:在 Access 2002 中创建的数据库使用默认的 Access 2000 文件格式。Access 2000 文件格式的数据库只能在 Access 2000 中转换为 MDE 格式。要在 Access 2002 中将以默认的 Access 2000 格式创建的 .mdb 文件转换为 MDE 文件,必须先将文件转换为 Access 2002 文件格式。为此,可以首先以独占方式打开数据库(要以独占方式打开数据库,请参阅本文后面的手动设置数据库密码一节)。接下来,指向“工具”菜单中的“数据库实用工具”,指向“转换数据库”,然后单击“转为 Access 2002 文件格式”。数据库即可转换为 MDE 文件。

有关将 .mdb 文件转换为 MDE 文件的更多要求,请参阅 Access 帮助中的“保护 Access 数据库中的 Visual Basic for Applications 代码”。

下面我们来看看用户级安全性

关于 Access 用户级安全性

Access 使用 Microsoft Jet 数据库引擎来存储和检索数据库中的对象。Jet 数据库引擎使用基于工作组的安全模型(也称为用户级安全性)来判断谁可以打开数据库,并保护数据库所包含对象的安全。无论是否明确设置了数据库的安全性,用户级安全性对所有 Access 数据库始终处于打开状态。您可以通过操纵用户和组帐户的权限和成员身份来更改 Access 中的默认安全级别。下面将对此进行介绍。

无论何时启动 Access,Jet 数据库引擎都要查找工作组信息文件(默认名称为 system.mdw,也可以使用扩展名 .mdw 任意命名)。工作组信息文件包含组和用户信息(包括密码),这些信息决定了谁可以打开数据库,以及他们对数据库中的对象的权限。对单个对象的权限存储在数据库中。这样,例如,就可以赋予一个组的用户(而不是其他用户)使用特定表的权限,而赋予另一个组查看报表的权限,但不能修改报表的设计。

工作组信息文件包括内置组(Admins 和 Users)以及一个通用用户帐户 (Admin),该帐户具有管理数据库及其包含的对象的权限(无限制)。您也可以使用菜单命令(“工具”菜单中的“安全”子菜单)或者通过 VBA 代码添加新的组和用户。

注意:安装 Access 时,安装程序会自动创建工作组信息文件,并使用您指定的名称和单位信息来命名。因为这一信息通常很容易被判断出来,因而未经授权的用户很可能会创建另一个版本的工作组信息文件,从而在由该工作组信息文件定义的工作组中,为自己设定一个不可撤消的管理员帐户(Admins 组的成员)权限。为防止发生这种情况,应创建一个新的工作组信息文件,并指定唯一的工作组 ID (WID)。这样,只有知道 WID 的用户才能创建该工作组信息文件的