如果您在早期版本的 Access 中创建了一个数据库,并对该数据库应用了用户级安全机制,那么当您在 Microsoft Access 2010 中打开该文件时,这些安全设置会保持不变。另外,您还可以从 Access 2010 启动 Microsoft Office Access 2003 提供的安全工具,例如“用户级安全机制向导”和各种用户和组权限对话框。本文介绍了 Access 2003 安全功能的工作原理,以及如何在 Access 2010 中启动和使用这些功能。本文中的信息只适用于在 Access 2003 或更低版本的 Access 中创建的数据库(.mdb 文件)。用户级安全机制不能用于在 Access 2010 中创建的数据库(.accdb 文件)。此外,如果将 .mdb 文件转换为新格式(.accdb 文件),那么 Access 2010 会丢弃您的用户级安全机制设置。
[用户级安全机制在 Access 2010 中的工作原理和概述]1、用户级安全机制在 Access 2010 中的工作原理[/page]
1、Access 2010 仅为使用 Access 2003 和早期文件格式的数据库(.mdb 和 .mde 文件)提供用户级安全机制。在 Access 2010 中,如果您打开一个在较低版本的 Access 中创建的数据库,并且该数据库应用了用户级安全机制,那么该安全功能对该数据库仍然有效。例如,用户必须输入密码才能使用该数据库。另外,您还可以启动和运行 Access 2003 和更低版本的 Access 提供的各种安全工具,例如“用户级安全机制向导”和各种用户和组权限对话框。在操作过程中,请记住只有打开 .mdb 或 .mde 文件时这些工具才可用。如果将文件转换为 Access 2010 文件格式,那么 Access 会删除所有现有的用户级安全功能。
2、Access 2003 用户级安全机制概述
以下各部分提供了有关 Access 2003 和更低版本的 Access 中的用户级安全机制的背景信息。如果您已熟悉了以前的安全模型和用户级安全机制,那么可以跳过这些部分直接转到本文后面的设置用户级安全机制或删除用户级安全机制。
用户级安全机制的基本信息
Access 中的用户级安全机制类似于基于服务器的系统上的安全机制,它使用密码和权限来允许或限制个人或组对数据库中的对象进行访问。在 Access 2003 或更低版本的 Access 中,当您在 Access 数据库中实施用户级安全机制时,数据库管理员或对象所有者可以控制单个用户或用户组对数据库中的表、查询、窗体、报表和宏执行的操作。例如,一组用户可以更改数据库中的对象,另一组只能将数据输入到特定表中,还有一组则只能查看一组报表中的数据。
Access 2003 和更低版本的 Access 中的用户级安全机制使用密码和权限的组合,即用来指定用户对数据库中数据或对象的访问类型的一组属性。您可以为个人或组设置密码和权限,然后这些密码和权限的组合便会成为安全帐户,这些帐户可以用来定义允许访问数据库中对象的用户和用户组。相应地,用户和组的组合称为工作组,Access 会将该信息存储在工作组信息文件中。当 Access 启动时,它会读取工作组信息文件并根据文件中的数据来确定哪些用户和组具备相应权限。
默认情况下,Access 提供一个内置用户 ID 和两个内置组。默认用户 ID 为 Admin,默认组为 Users 和 Admins。默认情况下,Access 会将内置用户 ID 添加到 Users 组,因为所有 ID 必须至少属于一个组。相应地,Users 组对数据库中的所有对象具有完全权限。另外,Admin ID 还是 Admins 组的成员。Admins 组必须至少包含一个用户 ID(必须有一个数据库管理员),而且 Admin ID 将一直是默认数据库管理员,直到您对其进行了更改。
启动 Access 2003 或更低版本的 Access 时,Access 会为您分配 Admin 用户 ID,这样您就成为了每个默认组的成员。该 ID 和这些组(Admin 和 Users)为所有用户提供了对数据库中所有对象的完全权限,这意味着除非您实施了用户级安全机制,否则任何用户都可以打开、查看和更改所有 .mdb 文件中的所有对象。
在 Access 2003 或更低版本的 Access 中实施用户级安全机制的一种方式是:更改 Users 组的权限并向 Admins 组中添加新管理员。如果执行了此操作,Access 会自动将新用户分配给 Users 组。在执行这些步骤之后,用户必须通过密码登录后才能打开受保护的数据库。但是,如果需要实施更为详细的安全机制(例如,允许一组用户输入数据,而只允许另一组用户读取该数据),则必须创建其他用户和组,并授予他们对数据库中某些或所有对象的特定权限。实施此类用户级安全机制是一项复杂的任务。为了帮助简化此过程,Access 提供了“用户级安全机制向导”,使用该向导可以更轻松地通过一个步骤创建用户和组。
“用户级安全机制向导”可以帮助您分配权限以及创建用户帐户和组帐户。用户帐户包含用户名和唯一的个人 ID 编号 (PID),可用于管理用户查看、使用或更改 Access 工作组中的数据库对象的权限。组帐户是用户帐户的集合,因此组帐户位于工作组中。Access 使用组名和 PID 来标识每个工作组,而且分配给组的权限应用于组中的所有用户。有关使用该向导的详细信息,请参阅本文后面的设置用户级安全机制。
完成向导后,您可以手动分配、修改或删除工作组中的用户和组帐户对数据库及其现有表、查询、窗体、报表和宏的权限。您还可以设置 Access 为您或其他用户添加到数据库中的任何新表、查询、窗体、报表和宏分配的默认权限。
工作组和工作组信息文件
在 Access 2003 和更低版本的 Access 中,工作组是指在多用户环境中共享数据的一组用户。工作组信息文件包含为每个用户或用户组设置的用户和组帐户、密码和权限。当打开数据库时,Access 会读取工作组信息文件中的数据并实施该文件中包含的安全设置。相应地,用户帐户是指 Access 为管理用户权限而创建的用户名和个人 ID (PID) 的组合。组帐户是用户帐户的集合,Access 还通过组名和个人 ID (PID) 来标识这些集合。分配给组的权限适用于组中的所有用户。然后,可以为这些安全帐户分配数据库及其表、查询、窗体、报表和宏的权限。权限本身存储在启用了安全机制的数据库中。
当用户首次运行 Access 2003 或更低版本的 Access 时,Access 会自动创建 Access 工作组信息文件,该文件通过用户在安装 Access 时指定的名称和组织信息来标识。对于 Access 2003,安装程序将此工作组信息文件的相对位置添加到以下注册表项:
HKEY_CURRENT_USERSoftwareMicrosoftOffice11.0AccessJet4.0EnginesSystemDB
和
HKEY_USERS.DEFAULTSoftwareMicrosoftOffice11.0AccessJet4.0EnginesSystemDB
以后的用户将从 HKEY_USERS 注册表项中的值继承默认的工作组文件路径。因为这一信息通常很容易确定,所以未经授权的用户也可以创建该工作组信息文件的另一个版本。因此,这些用户可能会在工作组信息文件定义的工作组中获得不可撤销的管理员帐户(Admins 组中的成员)权限。为防止未经授权的用户获取这些权限,应创建一个新的工作组信息文件,并指定一个工作组 ID (WID),即由 4 到 20 个区分大小写的字母数字组成的字符串,创建新工作组信息文件时必须输入该字符串。创建新的工作组可以唯一标识该工作组文件的 Admin 组。只有知道 WID 的用户才能创建工作组信息文件的副本。要创建新的文件,可以使用“工作组管理员”工具。
除非用户通过使用“工作组管理员”工具加入了另一个工作组,否则您创建的任何用户和组帐户或密码都会保存在该工作组信息文件中。
要点 请务必写下准确的名称、组织和工作组 ID(包括这三个条目中的字母是大写还是小写),并将它们保存在安全的位置。在必须重新创建该工作组信息文件时,您必须提供完全相同的名称、组织和工作组 ID。如果您忘记或丢失了这些条目,可能无法访问您的数据库。
用户级安全机制可以识别两种类型的权限:显式权限和隐式权限。显式权限是指直接授予用户帐户的权限;不会影响其他用户。隐式权限是指授予组帐户的权限。将一个用户添加到组中便会向该用户授予该组的权限;而将一个用户从组中删除便会取消该用户具有的该组的权限。
当用户尝试对启用安全功能的数据库对象执行一项操作时,该用户的权限集合即为其显示和隐式权限的交集。用户的安全级别通常对该用户的显式权限及该用户所属的任何和所有组的权限的限制最小。因此,管理工作组最简单的方式是创建新组并为该组分配权限,而不是为单个用户分配权限。然后,可以通过向该组添加用户或从中删除用户来更改单个用户的权限。另外,在需要授予新权限时,通过一项操作即可将该权限授予组中的所有成员。
可以更改数据库对象的权限的人员包括:
创建数据库时使用的工作组信息文件的 Admins 组成员。
对象所有者。
任何具备该对象的“管理员”权限的用户。
即使用户当前可能无法执行某项操作,但是他们可以授予自己执行此操作的权限。如果用户是 Admins 组的成员,或者是对象的所有者,便可以这样做。
创建表、查询、窗体、报表或宏的用户便是该对象的所有者。另外,可以更改数据库中权限的用户组同样可以更改这些对象的所有权或者重新创建这些对象,而这两项操作均可以更改对象的所有权。要重新创建对象,可以制作对象的副本,或者从另一个数据库导入对象或将对象导出到另一个数据库。这是转让对象(包括数据库本身)所有权的最简单的方式。
注释 复制、导入或导出不会更改将 RunPermissions 属性设置为“属于所有者”的查询的所有权。只有查询的 RunPermissions 属性设置为“属于用户的”时,才可以更改查询的所有权。
3、安全帐户
Access 2003 工作组信息文件包含下列预定义帐户。
实际上,Access 2003 和更低版本的 Access 中的安全机制始终是有效的。在您激活工作组的登录过程之前,所有用户会在 Access 启动时使用空密码的默认 Admin 用户帐户隐式登录。在后台,Access 使用 Admin 帐户作为工作组的管理员帐户。对于创建的所有数据库、表、查询、窗体、报表和宏,除了创建这些对象的所有者(组或用户)帐户外,Access 还使用 Admin 帐户。
管理员和所有者非常重要,因为他们拥有不可撤消的权限:
管理员(Admins 组成员)始终可以获得工作组中创建的对象的完全权限。
拥有表、查询、窗体、报表或宏的帐户始终可以获得该对象的完全权限。
拥有数据库的帐户始终可以打开该数据库。
因为对于 Access 的每个副本,Admin 用户帐户完全相同,所以帮助保护数据库安全的第一步是定义管理员和所有者用户帐户(或使用单个用户帐户作为管理员和所有者帐户),然后从 Admins 组删除 Admin 用户帐户。否则,所有拥有 Access 副本的用户都可以使用 Admin 帐户登录到您的工作组,并具备对工作组的表、查询、窗体、报表和宏的完全权限。
您可以根据需要向 Admins 组分配任意数量的用户帐户,但是只有一个用户帐户可以拥有数据库,拥有数据库的帐户是指在执行以下操作时活动的用户帐户:创建数据库,或通过创建新数据库并将一个数据库的所有对象导入到该新数据库来转让所有权。但是,组帐户也可以拥有数据库中的表、查询、窗体、报表和宏。
组织安全帐户时需要注意的事项
只有用户帐户可以登录到 Access;您无法使用组帐户来登录。
为数据库用户创建的帐户必须存储在这些用户使用该数据库时将加入的工作组信息文件中。如果使用不同的文件创建数据库,那么应在创建帐户前更改该文件。
确保为管理员和用户帐户创建唯一密码。可以使用管理员帐户登录的用户始终可以获得在工作组中创建的所有表、查询、窗体、报表和宏的完全权限。可以使用所有者帐户登录的用户始终可以获得所拥有对象的完全权限。
创建了用户和组帐户后,可以查看和打印它们之间的关系。Access 可以打印工作组中帐户的报表,其中显示每个用户所属的组以及属于每个组的用户。
如果使用的是在 Microsoft Access 2.0 中创建的工作组信息文件,则必须以 Admins 组成员的身份登录才能打印用户和组信息。如果工作组信息文件是在 Microsoft Access 97 或更高版本的 Access 中创建的,那么工作组中的所有用户都可以打印用户和组信息。
设置启动/删除用户级安全机制
本部分中的步骤介绍了如何启动和运行“用户级安全机制向导”。请记住,这些步骤只适用于具有 Access 2003 文件格式或早期文件格式并在 Access 2010 中打开的数据库。
启动“用户级安全机制向导”
打开要管理的 .mdb 或 .mde 文件。
在“数据库工具”选项卡上的“管理”组中,单击“用户和权限”下的箭头,然后单击“用户级安全机制向导”。
按照每页上的步骤完成该向导。 “用户级安全机制向导”会用相同名称和 .bak 文件扩展名创建当前 Access 数据库的备份副本,然后对当前数据库中的所选对象应用安全措施。
如果当前 Access 数据库是通过密码帮助保护 VBA 代码的,该向导会提示您输入密码,而且只有输入该密码后向导才能成功完成其操作。
通过向导创建的所有密码都会打印在完成该向导时打印的“用户级安全机制向导”报告中。应将该报告保存在安全位置。在工作组文件丢失或损坏时,您可以使用该报告重新创建该工作组文件。
删除用户级安全机制
要在使用 Access 2010 期间删除用户级安全机制,请将 .mdb 文件另存为 .accdb 文件。
以 Access 2007 格式保存该文件的副本
单击“文件”选项卡。将打开 Backstage 视图。
在左侧单击“共享”。
在右侧单击“将数据库另存为”,然后单击“Access 数据库(*.accdb)”。
将显示“另存为”对话框。
使用“保存位置”列表查找要保存转换后的数据库的位置。
在“保存类型”列表中,选择“Microsoft Office Access 2007 数据库(*.accdb)”。
单击“保存”。
对象权限参考
下表列出了可以为数据库及数据库中的对象设置的权限,并介绍了使用每个权限设置的效果或结果。