ACCESS安全性_第1页
ACCESS安全性_第2页
ACCESS安全性_第3页
ACCESS安全性_第4页
ACCESS安全性_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、加密或解密数据库最简单(也是安全性最低)的保护方法是对数据库进行加密。加密数据库就是将数据库文件压缩,从而使某些实用程序(如字处理器)不能解读这些文件。加密一个不具有安全设置的数据库并不能保证数据库的安全,因为任何人都可以打开数据库并完全访问数据库中的所有对象。有关对数据库进行安全设置的详细内容,请参阅本文后面的使用SecurityWizard设置Access数据库的安全性。加密可以避免在以电子方式传输数据库或者将其存储在软盘、磁带或光盘上时,其他用户偶然访问数据库中的信息。然而Jet(Access使用的数据库引擎)使用的加密方法非常薄弱,因此绝不能用于保护敏感数据。“加密/解密数据库”命令位

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

3、oftVisualBasic?编辑器的“设置启动选项和编码中的选项”。设置数据库密码您可以在数据库上设置密码,从而要求用户在访问数据和数据库对象时输入密码。注意:使用密码保护数据库或其中的对象的安全性也称为共享级安全性。您不能使用此选项为用户或组分配权限,因此任何掌握密码的人都可以无限制地访问所有Access数据和数据库对象。“设置数据库密码”命令位于“工具”菜单的“安全”子菜单中。用户级安全性除共享级安全性外,您还可以使用用户级安全性,它提供了最严格的访问限制,使您能够最大限度地控制数据库及其中包含的对象。这是我们所推荐的数据库保护措施的一部分(当和操作系统提供的文件级和共享级安全性结合使用

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

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

6、编辑器的“工具”菜单中选择“属性”命令。2 .在“项目属性”对话框中,单击“保护”选项卡。3 .选中“查看时锁定工程”复选框并键入密码。4 .在“确认密码”框中,重新键入密码,然后单击“确定”。使用MDE文件通过将数据库文件转换为MDE文件,可以完全保护Access中的代码免受非法访问。将.mdb文件转换为MDE文件时,Access将编译所有模块,删除所有可编辑的源代码,然后压缩目标数据库。原始的.mdb文件不会受到影响。新数据库中的VBA代码仍然能运行,但不能查看或编辑。数据库将继续正常工作,您仍然可以升级数据和运行报表。尤其是,将Access数据库保存为MDE文件可以防止以下操作:?在设计

7、视图中查看、修改或创建窗体、报表或模块。?添加、删除或更改对对象库或数据库的引用。?使用Access或VBA对象模型的属性或方法更改代码-MDE文件不包含可编辑代码。?导入或导出窗体、报表或模块。而表、查询、数据访问页和宏可以导入非MDE数据库,或从中导出。要将.mdb文件转换为MDE文件:1 .关闭数据库。2 .单击“工具”菜单中的“数据库实用工具”。3 .单击“生成MDE文件”。4 .在“保存数据库为MDE'对话框中,找到.mdb文件,然后单击“生成MDE'。注意:在Access2002中创建的数据库使用默认的Access2000文件格式。Access2000文件格式的数据

8、库只能在Access2000中转换为MDE格式。要在Access2002中将以默认的Access2000格式创建的.mdb文件转换为MDE文件,必须先将文件转换为Access2002文件格式。为此,可以首先以独占方式打开数据库(要以独占方式打开数据库,请参阅本文后面的手动设置数据库密码一节)。接下来,指向“工具”菜单中的“数据库实用工具”,指向“转换数据库”,然后单击“转为Access2002文件格式”。数据库即可转换为MDE文件。关于Access用户级安全性Access使用MicrosoftJet数据库引擎来存储和检索数据库中的对象。Jet数据库引擎使用基于工作组的安全模型(也称为用户级安全

9、性)来判断谁可以打开数据库,并保护数据库所包含对象的安全。无论是否明确设置了数据库的安全性,用户级安全性对所有Access数据库始终处于打开状态。您可以通过操纵用户和组帐户的权限和成员身份来更改Access中的默认安全级别。下面将对此进行介绍。无论何时启动Access,Jet数据库引擎都要查找工作组信息文件(默认名称为system.mdw,也可以使用扩展名.mdw任意命名)。工作组信息文件包含组和用户信息(包括密码),这些信息决定了谁可以打开数据库,以及他们对数据库中的对象的权限。对单个对象的权限存储在数据库中。这样,例如,就可以赋予一个组的用户(而不是其他用户)使用特定表的权限,而赋予另一个

10、组查看报表的权限,但不能修改报表的设计。工作组信息文件包括内置组(Admins和Users)以及一个通用用户帐户(Admin),该帐户具有管理数据库及其包含的对象的权限(无限制)。您也可以使用菜单命令(“工具”菜单中的“安全”子菜单)或者通过VBA代码添加新的组和用户。注意:安装Access时,安装程序会自动创建工作组信息文件,并使用您指定的名称和单位信息来命名。因为这一信息通常很容易被判断出来,因而未经授权的用户很可能会创建另一个版本的工作组信息文件,从而在由该工作组信息文件定义的工作组中,为自己设定一个不可撤消的管理员帐户(Admins组的成员)权限。为防止发生这种情况,应创建一个新的工作

11、组信息文件,并指定唯一的工作组ID(WID)o这样,只有知道WID的用户才能创建该工作组信息文件的副本。本文后面将讨论使用User-levelSecurityWizard创建新的工作组信息文件。Admins组不能被删除,其成员具有不可撤消的管理权限。您可以通过菜单或代码删除Admins组的权限,但Admins组的任何成员都可以重新添加权限。此外,Admins组中必须始终至少有一个管理数据库的成员。对于没有进行安全设置的数据库,Admins组始终包含默认的Admin用户帐户,它也是所有用户默认登录的帐户。所有用户必须属于默认的Users组,不管他们是否还属于其他组。您可以在VBA中创建用户帐户,

12、而并不将新的用户帐户添加到Admins组中。然而,如果不同时将该用户帐户添加到Admins组中,该用户将无法成功启动Access,因为Access内部使用的用于管理数据库的很多表都映射到Users组的权限。使用以下步骤进行Access数据库的安全设置:1 .将新用户帐户添加到Admins组中。该用户对数据库中的对象具有管理权限。2 .从Admins组中删除默认的Admin用户帐户。3 .从Admin用户和Users组中删除权限。4 .为所创建的任何自定义组分配权限。在默认Admin用户帐户上设置密码会激活登录对话框,从而每次启动Access时都会提示用户输入用户名和密码。如果您没有在Admin

13、帐户上设置密码,用户将自动作为Admin用户登录,无需密码,也不会出现登录对话框。对数据库中对象的权限可以是显式的(直接分配给用户帐户)或隐式的(从用户所属的组继承),也可以是两者的Z合。Access在权限问题上使用“最少限制”规则,即用户的权限包括其显式和隐式权限的总和。例如,如果用户A的帐户具有限制权限,而用户A属于一个具有限制权限的组,同时也属于另一个具有管理(所有)权限的组,那么用户A将具有管理权限。有鉴于此,通常最好不要为用户帐户分配显式权限。而应创建具有不同权限的组,然后将用户分配给具有适当权限的组,这会减少数据库管理方面的麻烦。在以下各节中,我们将展示如何通过用户界面和编程手段来

14、保护数据库及其包含的对象。首先,我们来看看几种设置数据库密码的不同方法。手动设置数据库密码您可以为数据库设置密码,从而要求用户在访问数据库时输入密码。然而,一旦用户登录后,便可以不受限制地访问数据库中的数据和对象。注意:在设置数据库密码之前,建议备份数据库并将其存储在一个安全的位置。在设置数据库密码之前,需要以独占方式打开数据库。要以独占方式打开数据库:1 .如果数据库处于打开状态,关闭数据库。2 .单击“文件”菜单中的“打开”重新打开数据库。3 .在“打开”对话框中,找到数据库,单击“打开”按钮旁边的箭头,然后单击“以独占方式打开”。要手动设置数据库密码:1 .在“工具”菜单中,指向“安全”

15、,然后单击“设置数据库密码”。2 .在“密码”框中,键入密码。注意:密码区分大小写。3 .在“验证”框中,重新键入密码以确认,然后单击“确定”。现在就设置了数据库密码。下次您或其他用户打开数据库时,会出现一个对话框要求输入密码。下面我们来看看如何通过编程设置数据库密码。通过编程设置数据库密码按以下语法使用关键字ALTERDATABASE您可以编程设置、修改或删除数据库密码。ALTERDATABASEPASSWORDNewPasswordOldPassword在这个语句中,密码由方括号()分隔的String值表示,但下述情况例外。第一次设置数据库密码时,使用NULL关键字作为ALTERDATAB

16、ASE句中的OldPassword参数。要删除数据库密码,请使用NULL关键字作为ALTERDATABASES句的NewPassword参数。在这些情况下,关键字NULL不应出现在方框中。在使用以下过程之前,可能需要设置对MicrosoftADOExt2.5forDDLandSecurity库的引用(如果尚未设置):1 .在VisualBasic编辑器中,指向“工具”菜单中的“引用”。将显示“引用”对话框。2 .选中MicrosoftADOExt2.5forDDLandSecurity复选框。请看以下第一次设置密码时的代码:PrivateFunctionCreateDBPassword(ByV

17、alPasswordAsString,_ByValPathAsString)AsBooleanDimobjConnasADODB.ConnectionDimstrAlterPasswordasStringOnErrorGoToCreateDBPassword_Err'创建SQL串以初始化一个数据库密码。strAlterPassword="ALTERDATABASEPASSWORDPasswordNULL;"打开不具有安全设置的数据库。SetobjConn=NewADODB.ConnectionWithobjConn.Mode=adModeShareExclusive

18、.Open"Provider=Microsoft.Jet.OLEDB.4.0;Data"&_"Source=Path;"执行SQL语句对数据库进行安全设置。.Execute(strAlterPassword)EndWith'清除对象。objConn.CloseSetobjConn=Nothing如果成功,返回true。CreateDBPassword=TrueCreateDBPassword_Err:MsgboxErr.Number&":"&Err.DescriptionCreateDBPassword

19、=FalseEndFunction此过程接受用户的密码以及.mdb文件的路径。首先,我们声明一个变量,代表对不具有安全设置的数据库的连接,同时声明一个String变量以包含我们用于更改密码的SQL语句。下一步,我们将strAlterPassword设置给使用ALTERDATABASEPASSWORD1字的JetSQL语句。请注意,因为我们不是要替换密码,因而第二个参数被设置为NULL。下一步,我们打开一个到该数据库的连接。要设置密码,必须以独占方式打开数据库,因此要设置Mode属性。然后执行SQL语句。您通常可以从一个数据库运行此过程,以便在一个单独的不具有安全设置的数据库中设置密码。如果一切

20、正常,函数返回True。如果要更改具有安全设置的数据库的密码,首先需要使用旧密码登录数据库,然后再更改密码。以下过程显示了这一技术。在使用以下过程之前,可能需要设置对MicrosoftADOExt2.5forDDLandSecurity库的引用(如果尚未设置):1.在VisualBasic编辑器中,指向“工具”菜单中的“引用”。将显示“引用”对话框。PrivateFunctionChangeDBPassword(ByValOldPasswordAsString,_ByValNewPasswordAsString,ByValPathAsString)AsBooleanDimobjConnasAD

21、ODB.ConnectionDimstrAlterPasswordasStringOnErrorGoToChangeDBPassword_Err'创建SQL串以更改数据库密码。strAlterPassword="ALTERDATABASEPASSWORDNewPasswordOldPassword;"打开具有安全设置的数据库。SetobjConn=NewADODB.ConnectionWithobjConn.Mode=adModeShareExclusive.Provider="Microsoft.Jet.OLEDB.4.0”.Properties(&qu

22、ot;JetOLEDB:DatabasePassword")="OldPassword".Open"DataSource=Path;"'执行SQL语句以更改密码。.Execute(strAlterPassword)EndWith'清除对象。objConn.CloseSetobjConn=NothingChangeDBPassword=TrueChangeDBPassword_Err:MsgboxErr.Number&":"&Err.DescriptionChangeDBPassword=Fal

23、seEndFunction此过程与前面的子例程类似,只是在登录具有安全设置的数据库时,需要使用更改之前的旧密码。为此,针对要更改的数据库,我们设置了Connection对象的DatabasePassword属性。这是Connection对象的扩展属性之一,所以我们使用了如上所示的特殊语法。要从具有安全设置的数据库中删除密码,也可以使用此过程,只需将ALTERDATABASES句的第一个参数替换为NULL关键字即可。下面我们来看看如何实现比在数据库中设置密码更强大的保护手段。使用SecurityWizard设置Access数据库的安全性可以使用SecurityWizard设置数据库的安全性。为此

24、,请执行以下步骤:1 .打开要设置安全性的数据库。2 .在“工具”菜单中,指向“安全”,然后单击“设置安全机制向导”。将显示“设置安全机制向导”对话框。3 .因为我们要创建一个新的工作组信息文件,因此请确保选中此选项,然后单击“下一步”。4 .在“设置安全机制向导”对话框的第二个屏幕中(见图1),为工作组信息文件键入一个新名称,或者接受默认名称。键入一个工作组ID(WID)。WID唯一标识了此工作组文件的Admins组。下一步,在相应的文本框中键入您的姓名和单位。虽然这些输入是可选的,但最好还是填入,因为只有知道这些信息的人才能重新创建工作组信息文件。图15 .您也可以选择是否使用此工作组信息文件作为所有数据库的默认文件,或者只是用于这个特定的数据库。单击“创建快捷方式,打开设置了安全机制的数据库”选项,然后单击“下一步”。6 .在下一个屏幕中(见图2),可以选择希望向导设置其

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论