Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

全面掌握MS ACCESS SQL(53)

时 间:2018-02-02 10:02:25
作 者:Big Young   ID:252  城市:襄阳
摘 要:    用户级安全机制的基础知识。
正 文:

第十六章 用SQL管理ACCESS安全性

MS ACCESS数据库默认是以共享方式打开的,也就是说它支持多用户共享使用同一个数据库。在多用户环境中数据库的安全就显得非常重要,鉴于些早期的ACCESS版本,即2003版及以前的版本提供了用户级安全特性,这一特性可以让我们设定赋予各个数据库用户的访问权限的功能。用户级安全功能相当强大,使我们能够控制不同的用户可以访问的数据类型(例如,禁止销售人员查看财会数据)以及他们可以对数据库采取的行为(例如,只允许人力资源部门修改人事档案记录)。

第一节 ACCESS用户级安全性概述

一、关于用户级安全机制

MS ACCESS用户级安全机制非常类似于在基于服务器的系统上看到的用户级安全机制。使用密码和权限,可以允许或限制个人、组(由个人组成)对数据库中对象的访问。安全帐户定义了哪些个人和哪些组可以访问数据库中的对象。这一信息称为工作组,存储在工作组信息文件中。

使用用户级安全机制的两个主要原因是:一是防止用户不小心更改应用程序所依赖的表、查询、窗体和宏而破坏应用程序。二是帮助保护数据库中的敏感数据。

在用户级安全机制下,当用户启动MS ACCESS时要键入一个密码。然后ACCESS开始读取工作组信息文件,在该文件中每个用户都由唯一标识代码标识。在工作组信息文件中,通过用户的个人标识码(PID)和密码将用户标识为已授权的单个用户,同时还标识为指定组的成员。MS ACCESS提供两个默认组:管理员(命名为管理员组)和用户(命名为用户组),但也可定义其他组。

尽管在很多数据库上设置用户级安全机制将是一个令人发怵的工作,但在早期(2003及以前的版本)的ACCESS系统中提供了一系列的命令菜单工具及创建向导工具帮助用户完成这项工作。“设置安全机制向导”使这一过程变得容易,它可以通过一步一步的操作来为ACCESS数据库采用全新的安全功能。此外,通过执行普通的安全方案,设置安全机制向导甚至可以消除使用工具菜单中的安全命令的需要。

“设置安全机制向导”可以帮助用户指定权限,创建用户帐户和组帐户。在运行该向导后,可以针对某个数据库及其中已有的表、查询、窗体、报表和宏,手动在工作组中指定、修改或删除用户帐户和组帐户的权限。也可以设置MS ACCESS分配给用户在数据库中新建表、查询、窗体、报表和宏的默认权限。

可以为组和用户授予权限,规定他们如何使用数据库中的表、查询、窗体、报表和宏。例如,可以允许“用户”组的成员在“客户”表中查看、输入或修改数据,但不能更改表的设计。“用户”组的成员只可以查看包含订单数据的表,而绝不能访问“工资”表。“管理员组”的成员则对数据库中的所有表、查询、窗体、报表和宏都具有完全的权限。如果要进行更细致的控制,可以创建自己的组帐户,为其指定适当的权限,然后将用户添加到组中。

若考虑安全性时只需要管理员组和用户组,则无需创建其他组;可使用默认的“管理员组”和“用户组”。此时,只需为默认的“用户组”指定适当的权限,为默认的“管理员组”添加其他的管理员。添加的任何新用户都会自动被添加到“用户组”中。“用户组”的典型权限可包括对表和查询的“读取数据”和“更新数据”,对窗体和报表的“打开/运行

若需对各个不同的用户组进行更细致的控制,可创建自己的组,为不同的组指定不同的权限,并将用户添加到适当的组中。为简化对权限的管理,建议只向组授权(而非用户),然后将用户添加到适当的组中。

例如,为了帮助保护“订单”数据库,可以为经理建立一个“经理”组,为销售员建立一个“销售员”组以及为雇员建立一个“雇员”组。然后可以将具有最少限制的权限赋给“经理”组,将具有较多限制的权限赋给“销售员”组,而将具有最多限制的权限赋给“雇员”组。当为新雇员创建用户帐户时,可将其添加到适当的组中,以使该雇员拥有与该组相关的权限。

二、关于工作组和工作组信息文件

MS ACCESS工作组是在多用户环境下共享数据的一组用户。如果定义了用户级安全机制,工作组的成员将记录在用户帐户和组帐户中,这些帐户则存储在MS ACCESS工作组信息文件中。用户的密码也存储在工作组信息文件中。可以为这些安全帐户指定对数据库及其表、查询、窗体、报表和宏的权限。权限本身将存储在启用安全功能的数据库中。

当用户在安装Microsoft Office后首次运行ACCESS时,ACCESS会自动创建工作组信息文件,该文件是以用户指定的名称和组织信息标识的。然后该工作组信息文件的相对位置添加到注册表键值中:

HKEY_CURRENT_USERSoftwareMicrosoftOffice11.0AccessJet4.0EnginesSystemDBHKEY_USERS.DEFAULTSoftwareMicrosoftOffice11.0AccessJet4.0EnginesSystemDB

后来的用户会从HKEY_USERS注册表键值中继承默认的工作组文件的路径。因为这一信息通常很容易确定,所以未经授权的用户也很可能创建该工作组信息文件的其他版本,并因而获得该工作组信息文件定义的工作组中的管理员帐户(管理员组的成员)的各种不可撤消的权限。为预防这一点,应新建一个工作组信息文件并为其指定工作组标识符(WID)。这样只有知道WID的人才可以创建工作组信息文件的副本。

用户创建的任何用户帐户和组帐户或相应的密码都保存在该工作组信息文件中,除非用户使用“工作组管理员”加入另一个工作组。(注释:在Access 20022003版本中,可以从工具菜单上的安全子菜单运行工作组管理员。)

应确保记下正确的名称、组织和工作组标识符,包括字母的大小写(对全部三项而言),并将其放置在安全的地方。如果要重新创建工作组信息文件,必须使用相同的名称、组织和工作组标识符。如果遗忘或丢失这些输入项,则不可恢复,因而也就无法访问数据库。

三、关于权限的工作方式及可以授权者

有两种类型的权限:显式的和隐式的。显式的权限是指直接授予某一用户帐户的权限,该权限对其他用户没有影响。隐式的权限是指授予组帐户的权限。将用户添加到组中也就同时授予了用户该组的权限,而将用户从组中删除则取消用户的组权限。

当用户要对使用了安全功能的数据库对象执行操作时,该用户所具有的权限基于他的显式和隐式权限的交集。用户的安全级别总是取决于用户的显式权限与用户所属组的权限中限制最苛刻的权限。因此,管理工作组最简单的方法就是创建新组并为组指定权限,而不是为单个用户指定权限。然后通过将用户添加到组中或从组中删除的方式来更改单个用户的权限。而且,如果要授予新的权限,使用一个操作即可对一个组中的所有成员授予权限。

以下人员可以更改对数据库对象的权限:

1、创建数据库时所使用的工作组信息文件的管理员组成员。

2、对象的所有者。

3、对对象拥有“管理员”权限的用户。

当用户为管理员组的成员或对象的所有者时,即使自己当前不能执行某个操作,也可以授予自己执行该操作的权限。

创建某个对象(表、查询、窗体、报表或宏)的用户即为该对象的所有者。此外,可以更改数据库中权限的用户组还可以更改这些对象的所有权,也可重新创建这些对象,这是另一种更改对象所有权的方法。若要重新创建某个对象,可以制作该对象的副本,或者将其导入或导出到其他数据库中。若要转移对象的所有权(包括数据库本身),这是最容易的方法。(注释:复制、导入或导出并不更改“运行权限”属性设置为“所有者的”的查询的所有权。只有当查询的“运行权限”属性设置为“用户的”时才可以更改其所有权。)

四、关于组织安全帐户

MS ACCESS工作组信息文件包含以下预定义帐户:

帐户

功能

管理员

默认的用户帐户。该帐户对所用的ACCESS副本和其他可以使用Jet数据库引擎的应用程序,如VBAEXCEL等都是完全一样的。

管理员组

管理员的组帐户。该帐户对每个工作组信息文件是唯一的。默认情况下,管理员用户位于管理员组中。在任何时刻管理员组中都必须至少要有一个用户。

用户组

包含所有用户帐户的组帐户。当管理员组的成员创建用户帐户时,ACCESS会自动将用户帐户添加到用户组中。该帐户对所有工作组信息文件都是相同的,但它只包含由该工作组的管理员组成员所创建的用户帐户。在默认情况下,该帐户对所有新建对象都拥有完全权限。要删除用户组中的用户帐户,只能由管理员组的成员进行。

实际上,MS ACCESS中的安全机制通常都处于活动状态。ACCESS在启动时会自动使用不带密码的管理员用户帐户以不可见的方式登录所有用户,除非激活某个工作组的登录过程。ACCESS在后台使用管理员帐户作为工作组的管理员帐户,和所创建的任意数据库、表、查询、窗体、报表及宏的所有者。

管理员和所有者非常重要,因为他们具有无法撤消的权限:

管理员(“管理员”组成员)可以对工作组中创建的对象始终具有完全权限。

作为对象所有者的帐户可以对其所拥有的对象始终具有完全权限,这些对象包括表、查询、窗体、报表或宏。作为数据库所有者的帐户始终有权打开其所拥有的数据库。

因为“管理员”用户帐户对ACCESS的每份副本而言都是完全相同的,所以为数据库设置安全性的第一步就是定义管理员和所有者用户帐户(或者以一个用户帐户同时作为管理员和所有者帐户),然后将管理员用户帐户从管理员组删除。否则,任何一个拥有ACCESS副本的用户都可以使用管理员帐户登录到工作组中并对工作组中的表、查询、窗体、报表和宏具有完全的权限。

对管理员组可以添加任意多的用户帐户,但只有一个用户帐户可以拥有数据库本身,即数据库创建时处于活动状态的用户帐户,或者以新建数据库并将其他数据库中的所有对象导入其中的方式转移数据库所有权时处于活动状态的帐户。不过,组帐户可以拥有数据库中的表、查询、窗体、报表和宏。

组织安全帐户时的注意事项:

只有以用户帐户才能登录到ACCESS,而不能使用组帐户进行登录。

为数据库用户创建的帐户必须存储在用户使用数据库时所联接到的工作组信息文件中。如果要使用其他文件创建数据库,应在创建帐户之前先更改该文件。

确保为管理员和用户帐户创建的密码是唯一的。以管理员帐户登录的用户对工作组中的所有表、查询、窗体、报表和宏具有完全权限。而以所有者帐户登录的用户则对其所拥有的对象具有完全权限。

在创建用户帐户和组帐户后,可以查看和打印各帐户之间的关系。MS ACCESS将打印有关该工作组中所有帐户的报表,显示每个用户从属的组和每个组包含的用户。(注释:如果使用由Microsoft Access 2.0版创建的工作组信息文件,必须以管理员组成员的身份登录到数据库中以打印用户和组信息。如果工作组信息文件是由Microsoft Access 7.0或其后续版本创建的,则工作组中的所有用户都可以打印用户和组信息。)

需要说明的是,用户级安全只适用于ACCESS 2003和以前的版本,从ACCESS 2007开始,引入了新的安全机制,对于新版本的数据库文件(扩展名为.accdb)不再支持用户级安全特性。Access 2007和更高版本提供了仅对使用Access 2003或早期文件格式(.mdb.mde文件)的数据库的用户级安全机制。在更高版本中,如果我们打开在早期版本的访问权限,创建数据库,并且该数据库中包含用户级安全机制应用,该安全功能将正常工作对该数据库。例如,用户必须输入要使用数据库的密码。



Access软件网官方交流QQ群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助