了解 MICROSOFT ACCESS 安全性数据库教程 电脑资料.docx
- 文档编号:18349097
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:13
- 大小:23.96KB
了解 MICROSOFT ACCESS 安全性数据库教程 电脑资料.docx
《了解 MICROSOFT ACCESS 安全性数据库教程 电脑资料.docx》由会员分享,可在线阅读,更多相关《了解 MICROSOFT ACCESS 安全性数据库教程 电脑资料.docx(13页珍藏版)》请在冰点文库上搜索。
了解MICROSOFTACCESS安全性数据库教程电脑资料
了解MicrosoftAccess平安性数据库教程电脑资料
aess|平安|平安性
在早期版本的Microsoft?
Aess(MicrosoftAess2000以前)中,有关平安性的知识有时被认为是无法为任何人所掌握和应用的,
有很多方法可以保护您的Aess数据库以及其中包含的数据。
在本文中,我们将讨论用于保护组成数据库的各个对象(包含数据)、包含诸如窗体和报表等元素的对象以及代码(可能是数据库中最有价值的局部)的方法。
本文中讨论的平安技巧只适用于MicrosoftAess数据库(.mdb)文件。
需要了解的有关保护敏感数据的知识
您应该知道,有很多工具和第三方实用程序可以用于探测任何类型的数据库的密码,以及任何工作组信息文件的用户名和密码(本文后面将详细介绍工作组信息文件)。
如果需要保护敏感数据免受非法访问,最好的平安措施就是使用计算机操作系统提供的文件级平安性和文件共享平安性。
文件级平安性涉及在数据文件上设置权限。
文件共享平安性涉及限制对数据文件存储位置的访问。
文件共享平安性的一个例如是在存储数据文件的文件夹(位于本地计算机或网络效劳器上)上设置用户权限。
为此,可以将数据拆分到多个文件中,在这些文件上设置用户权限,再将这些文件放置到受保护的文件共享空间中。
然后可以从具有平安设置的Aess数据库链接到这些文件。
Aess平安性概述
以下各节介绍了几种保护Aess数据库的方法。
加密或解密数据库
最简单(也是平安性最低)的保护方法是对数据库进行加密。
加密数据库就是将数据库文件压缩,从而使某些实用程序(如字处理器)不能解读这些文件。
加密一个不具有平安设置的数据库并不能保证数据库的平安,因为任何人都可以翻开数据库并完全访问数据库中的所有对象。
有关对数据库进行平安设置的详细内容,请参阅本文后面的使用SecurityWizard设置Aess数据库的平安性。
加密可以防止在以电子方式传输数据库或者将其存储在软盘、磁带或光盘上时,其他用户偶然访问数据库中的信息。
然而Jet(Aess使用的数据库引擎)使用的加密方法非常薄弱,因此绝不能用于保护敏感数据。
“加密/解密数据库”命令位于“工具”菜单的“平安”子菜单中。
解密数据库是对加密过程的逆运算。
使用自定义界面
另一种相对简单的保护方案是使用自定义界面代替Aess标准界面。
与加密一样,它也不能保护数据库中的对象和敏感数据的平安。
通过选择“工具”菜单中的“启动”选项,您可以指定自定义的启动窗体、菜单,甚至自定义的标题和图标。
还可以选择取消Database窗口,从而对缺乏相应技术的应用程序用户隐藏这些对象。
“启动”对话框的各项功能也可以通过编程实现。
有关如何从“启动”对话框设置启动选项的详细信息,请参阅Aess帮助中的“关于启动选项”。
有关如何通过编程设置启动选项的详细信息,请参阅Aess帮助MicrosoftVisualBasic?
器的“设置‘启动’选项和编码中的选项”。
设置数据库密码
您可以在数据库上设置密码,从而要求用户在访问数据和数据库对象时输入密码。
注意:
使用密码保护数据库或其中的对象的平安性也称为共享级平安性。
您不能使用此选项为用户或组分配权限,因此任何掌握密码的人都可以无限制地访问所有Aess数据和数据库对象。
“设置数据库密码”命令位于“工具”菜单的“平安”子菜单中。
用户级平安性
除共享级平安性外,您还可以使用用户级平安性,它提供了最严格的访问限制,使您能够最大限度地控制数据库及其中包含的对象。
这是我们所推荐的数据库保护措施的一局部(当和操作系统提供的文件级和共享级平安性结合使用时),因此我们将在本文后面对用户级平安性做详细介绍。
同样,我们也将讨论用于保护数据库中包含的VisualBasicforApplications(VBA)代码的各种方法。
警告:
用户级平安性(在单独使用时)主要用于保护数据库中的代码和对象,以免用户不小心进行了修改或更改。
如果不希望用户非法访问窗体、报表或模块中的代码,那么必须将.mdb文件转换为MDE文件(本文后面将详细介绍)。
要防止用户修改数据库中的查询、宏或数据访问页,唯一的方法就是将数据库文件放在一个受保护的文件共享区域中。
此外,在Aess中不可能既允许用户修改表中的数据,同时又禁止其修改表的设计或删除表。
要提供这样一种功能,需要使用一个基于效劳器的数据库产品,例如MicrosoftSQLServer?
。
设置模块密码
使用密码可以保护所有标准模块和类模块(例如窗体和报表中包含的代码)以免用户不小心修改或查看VBA代码。
设置密码后,您只需在每次会话时输入一次密码,以便在VisualBasic器中查看或修改代码。
除查看和外,在剪切、复制、粘贴、导出或删除任何模块时也都需要密码。
但应该清楚的是,使用这种方法保护代码不能防止您或其他用户运行代码,也不能防止其他用户使用第三方实用程序(如16进制器)来查看代码。
要完全保护代码,必须将.mdb文件转换为MDE文件。
要为工程中的模块设置密码:
为该工程从VisualBasic器的“工具”菜单中选择“属性”命令。
在“工程属性”对话框中,单击“保护”选项卡。
选中“查看时锁定工程”复选框并键入密码。
在“确认密码”框中,重新键入密码,然后单击“确定”。
使用MDE文件
通过将数据库文件转换为MDE文件,可以完全保护Aess中的代码免受非法访问。
将.mdb文件转换为MDE文件时,Aess将编译所有模块,删除所有可的源代码,然后压缩目标数据库。
原始的.mdb文件不会受到影响。
新数据库中的VBA代码仍然能运行,但不能查看或。
数据库将继续正常工作,您仍然可以升级数据和运行报表。
尤其是,将Aess数据库保存为MDE文件可以防止以下操作:
在设计视图中查看、修改或创立窗体、报表或模块。
添加、删除或更改对对象库或数据库的引用。
使用Aess或VBA对象模型的属性或方法更改代码-MDE文件不包含可代码。
导入或导出窗体、报表或模块。
而表、查询、数据访问页和宏可以导入非MDE数据库,或从中导出。
要将.mdb文件转换为MDE文件:
关闭数据库。
单击“工具”菜单中的“数据库实用工具”。
单击“生成MDE文件”。
在“保存数据库为MDE”对话框中,找到.mdb文件,然后单击“生成MDE”。
注意:
在Aessxx中创立的数据库使用默认的Aess2000文件格式。
Aess2000文件格式的数据库只能在Aess2000中转换为MDE格式。
要在Aessxx中将以默认的Aess2000格式创立的.mdb文件转换为MDE文件,必须先将文件转换为Aessxx文件格式。
为此,可以首先以独占方式翻开数据库(要以独占方式翻开数据库,请参阅本文后面的手动设置数据库密码一节)。
接下来,指向“工具”菜单中的“数据库实用工具”,指向“转换数据库”,然后单击“转为Aessxx文件格式”。
数据库即可转换为MDE文件。
有关将.mdb文件转换为MDE文件的更多要求,请参阅Aess帮助中的“保护Aess数据库中的VisualBasicforApplications代码”。
下面我们来看看用户级平安性。
关于Aess用户级平安性
Aess使用MicrosoftJet数据库引擎来存储和检索数据库中的对象。
Jet数据库引擎使用基于工作组的平安模型(也称为用户级平安性)来判断谁可以翻开数据库,并保护数据库所包含对象的平安。
无论是否明确设置了数据库的平安性,用户级平安性对所有Aess数据库始终处于翻开状态。
您可以通过操纵用户和组帐户的权限和成员身份来更改Aess中的默认平安级别。
下面将对此进行介绍。
无论何时启动Aess,Jet数据库引擎都要查找工作组信息文件(默认名称为system.mdw,也可以使用扩展名.mdw任意命名)。
工作组信息文件包含组和用户信息(包括密码),这些信息决定了谁可以翻开数据库,以及他们对数据库中的对象的权限。
对单个对象的权限存储在数据库中。
这样,例如,就可以赋予一个组的用户(而不是其他用户)使用特定表的权限,而赋予另一个组查看报表的权限,但不能修改报表的设计。
工作组信息文件包括内置组(Admins和Users)以及一个通用用户帐户(Admin),该帐户具有数据库及其包含的对象的权限(无限制)。
您也可以使用菜单命令(“工具”菜单中的“平安”子菜单)或者通过VBA代码添加新的组和用户。
注意:
安装Aess时,安装程序会自动创立工作组信息文件,并使用您指定的名称和单位信息来命名。
因为这一信息通常很容易被判断出来,因而XX的用户很可能会创立另一个版本的工作组信息文件,从而在由该工作组信息文件定义的工作组中,为自己设定一个不可撤消的管理员帐户(Admins组的成员)权限。
为防止发生这种情况,应创立一个新的工作组信息文件,并指定唯一的工作组ID(WID)。
这样,只有知道WID的用户才能创立该工作组信息文件的副本。
本文后面将讨论使用User-levelSecurityWizard创立新的工作组信息文件。
Admins组不能被删除,其成员具有不可撤消的管理权限。
您可以通过菜单或代码删除Admins组的权限,但Admins组的任何成员都可以重新添加权限。
此外,Admins组中必须始终至少有一个管理数据库的成员。
对于没有进行平安设置的数据库,Admins组始终包含默认的Admin用户帐户,它也是所有用户默认的帐户。
所有用户必须属于默认的Users组,不管他们是否还属于其他组。
您可以在VBA中创立用户帐户,而并不将新的用户帐户添加到Admins组中。
然而,如果不同时将该用户帐户添加到Admins组中,该用户将无法成功启动Aess,因为Aess内部使用的用于管理数据库的很多表都映射到Users组的权限。
使用以下步骤进行Aess数据库的平安设置:
将新用户帐户添加到Admins组中。
该用户对数据库中的对象具有管理权限。
从Admins组中删除默认的Admin用户帐户。
从Admin用户和Users组中删除权限。
为所创立的任何自定义组分配权限。
在默认Admin用户帐户上设置密码会激活对话框,从而每次启动Aess时都会提示用户输入用户名和密码。
如果您没有在Admin帐户上设置密码,用户将自动作为Admin用户,无需密码,也不会出现对话框。
对数据库中对象的权限可以是显式的(直接分配给用户帐户)或隐式的(从用户所属的组继承),也可以是两者的结合。
Aess在权限问题上使用“最少限制”规那么,即用户的权限包括其显式和隐式权限的总和。
例如,如果用户A的帐户具有限制权限,而用户A属于一个具有限制权限的组,同时也属于另一个具有管理(所有)权限的组,那么用户A将具有管理权限。
有鉴于此,通常最好不要为用户帐户分配显式权限。
而应创立具有不同权限的组,然后将用户分配给具有适当权限的组,这会减少数据库管理方面的麻烦。
在以下各节中,我们将展示如何通过用户界面和编程手段来保护数据库及其包含的对象。
首先,我们来看看几种设置数据库密码的不同方法。
手动设置数据库密码
您可以为数据库设置密码,从而要求用户在访问数据库时输入密码。
然而,一旦用户后,便可以不受限制地访问数据库中的数据和对象。
注意:
在设置数据库密码之前,建议备份数据库并将其存储在一个平安的位置。
在设置数据库密码之前,需要以独占方式翻开数据库。
要以独占方式翻开数据库:
如果数据库处于翻开状态,关闭数据库。
单击“文件”菜单中的“翻开”重新翻开数据库。
在“翻开”对话框中,找到数据库,单击“翻开”按钮旁边的箭头,然后单击“以独占方式翻开”。
要手动设置数据库密码:
在“工具”菜单中,指向“平安”,然后单击“设置数据库密码”。
在“密码”框中,键入密码。
注意:
密码区分大小写。
在“验证”框中,重新键入密码以确认,然后单击“确定”。
现在就设置了数据库密码。
下次您或其他用户翻开数据库时,会出现一个对话框要求输入密码。
下面我们来看看如何通过编程设置数据库密码。
通过编程设置数据库密码
按以下语法使用关键字ALTERDATABASE,您可以编程设置、修改或删除数据库密码。
ALTERDATABASEPASSWORDNewPasswordOldPassword
在这个语句中,密码由方括号([])分隔的String值表示,但下述情况例外。
第一次设置数据库密码时,使用NULL关键字作为ALTERDATABASE语句中的OldPassword参数。
要删除数据库密码,请使用NULL关键字作为ALTERDATABASE语句的NewPassword参数。
在这些情况下,关键字NULL不应出现在方框中。
在使用以下过程之前,可能需要设置对MicrosoftADOExt2.5forDDLandSecurity库的引用(如果尚未设置):
在VisualBasic器中,指向“工具”菜单中的“引用”。
将显示“引用”对话框。
选中MicrosoftADOExt2.5forDDLandSecurity复选框。
请看以下第一次设置密码时的代码:
PrivateFunctionCreateDBPassword(ByValPasswordAsString,ByValPathAsString)AsBooleanDimobjConnasADODB.ConnectionDimstrAlterPasswordasStringOnErrorGoToCreateDBPasswordErr'创立SQL串以初始化一个数据库密码。
strAlterPassword="ALTERDATABASEPASSWORD[Password]NULL;"'翻开不具有平安设置的数据库。
SetbjConn=NewADODB.ConnectionWithobjConn.Mode=adModeShareExclusive.Open"Provider=Microsoft.Jet.OLEDB.4.0;Data"&"Source=Path;"'执行SQL语句对数据库进行平安设置。
.Execute(strAlterPassword)EndWith'去除对象。
objConn.CloseSetbjConn=Nothing'如果成功,返回true。
CreateDBPassword=TrueCreateDBPasswordErr:
MsgboxErr.Number&":
"&Err.DescriptionCreateDBPassword=FalseEndFunction
此过程接受用户的密码以及.mdb文件的路径。
首先,我们声明一个变量,代表对不具有平安设置的数据库的连接,同时声明一个String变量以包含我们用于更改密码的SQL语句。
下一步,我们将strAlterPassword设置给使用ALTERDATABASEPASSWORD关键字的JetSQL语句。
请注意,因为我们不是要替换密码,因而第二个参数被设置为NULL。
下一步,我们翻开一个到该数据库的连接。
要设置密码,必须以独占方式翻开数据库,因此要设置Mode属性。
然后执行SQL语句。
您通常可以从一个数据库运行此过程,以便在一个单独的不具有平安设置的数据库中设置密码。
如果一切正常,函数返回True,
如果要更改具有平安设置的数据库的密码,首先需要使用旧密码数据库,然后再更改密码。
以下过程显示了这一技术。
在使用以下过程之前,可能需要设置对MicrosoftADOExt2.5forDDLandSecurity库的引用(如果尚未设置):
在VisualBasic器中,指向“工具”菜单中的“引用”。
将显示“引用”对话框。
选中MicrosoftADOExt2.5forDDLandSecurity复选框。
请看以下过程:
PrivateFunctionChangeDBPassword(ByValOldPasswordAsString,ByValNewPasswordAsString,ByValPathAsString)AsBooleanDimobjConnasADODB.ConnectionDimstrAlterPasswordasStringOnErrorGoToChangeDBPasswordErr'创立SQL串以更改数据库密码。
strAlterPassword="ALTERDATABASEPASSWORD[NewPassword][OldPassword];"'翻开具有平安设置的数据库。
SetbjConn=NewADODB.ConnectionWithobjConn.Mode=adModeShareExclusive.Provider="Microsoft.Jet.OLEDB.4.0".Properties("JetOLEDB:
DatabasePassword")="OldPassword".Open"DataSource=Path;"'执行SQL语句以更改密码。
.Execute(strAlterPassword)EndWith'去除对象。
objConn.CloseSetbjConn=NothingChangeDBPassword=TrueChangeDBPasswordErr:
MsgboxErr.Number&":
"&Err.DescriptionChangeDBPassword=FalseEndFunction
此过程与前面的子例程类似,只是在具有平安设置的数据库时,需要使用更改之前的旧密码。
为此,针对要更改的数据库,我们设置了Connection对象的DatabasePassword属性。
这是Connection对象的扩展属性之一,所以我们使用了如上所示的特殊语法。
要从具有平安设置的数据库中删除密码,也可以使用此过程,只需将ALTERDATABASE语句的第一个参数替换为NULL关键字即可。
下面我们来看看如何实现比在数据库中设置密码更强大的保护手段。
使用SecurityWizard设置Aess数据库的平安性
可以使用SecurityWizard设置数据库的平安性。
为此,请执行以下步骤:
翻开要设置平安性的数据库。
在“工具”菜单中,指向“平安”,然后单击“设置平安机制向导”。
将显示“设置平安机制向导”对话框。
因为我们要创立一个新的工作组信息文件,因此请确保选中此选项,然后单击“下一步”。
在“设置平安机制向导”对话框的第二个屏幕中(见图1),为工作组信息文件键入一个新名称,或者接受默认名称。
键入一个工作组ID(WID)。
WID唯一标识了此工作组文件的Admins组。
下一步,在相应的文本框中键入您的姓名和单位。
虽然这些输入是可选的,但最好还是填入,因为只有知道这些信息的人才能重新创立工作组信息文件。
图1:
“设置平安机制向导”对话框的第二个屏幕
您也可以选择是否使用此工作组信息文件作为所有数据库的默认文件,或者只是用于这个特定的数据库。
单击“创立快捷方式,翻开设置了平安机制的数据库”选项,然后单击“下一步”。
在下一个屏幕中(见图2),可以选择希望向导设置其平安机制的对象。
默认情况下,向导将为所有现有对象和所有新创立的对象设置平安机制。
单击“下一步”。
图2:
“设置平安机制向导”对话框的第三个屏幕
在下一个屏幕中(见图3),您可以选择可选的具有特定权限的平安组。
我们强烈建议您使用组来管理用户的访问权限,而不是赋予每个用户特定的权限。
选择任何其他组帐户,然后单击“下一步”。
图3:
“设置平安机制向导”对话框的第四个屏幕
在此屏幕中(见图4),您可以为Users组设置特定的权限。
因为所有用户都自动成为Users组的成员,在此选择的任何权限都会应用于所有用户,所以最好限制该组的权限,或者保存默认设置-没有任何权限。
单击“下一步”。
图4:
“设置平安机制向导”对话框的第五个屏幕
在下一个屏幕中(见图5),您可以向工作组信息文件中添加用户。
还可以为每个用户选择密码和个人ID(PID)。
Aess使用PID和帐户名为工作组标识唯一的用户。
添加用户并单击“下一步”。
注意:
个人标识符(PID)不是密码。
它被加密并与名称一起创立了一个唯一的系统标识符(SID),用于标识用户。
图5:
“设置平安机制向导”对话框的第六个屏幕
在此屏幕中(见图6),您可以向工作组信息文件中的组添加用户。
进行您的选择后单击“下一步”。
图6:
“设置平安机制向导”对话框的第七个屏幕
在最后一个屏幕中,为不具有平安设置的数据库的备份选择一个名称。
保护好此原始数据库的备份是很有必要的,以防万一丧失或损坏了具有平安设置的数据库。
单击“完成”。
原始数据库将用.bak扩展名保存。
警告:
当创立工作组信息文件后,SecurityWizard将创立一个报表,其中包含重新创立工作组信息文件所需的所有信息。
您必须保存好此信息,以便在原始文件丧失或损坏时重新创立文件。
单击“完成”后,SecurityWizard将加密数据库,然后要求您使用新的工作组信息文件重新翻开进行了平安设置的数据库。
下面我们来看看几种编程使用用户和组的方法。
通过编程添加和删除用户和组
为数据库设置了平安性后,您可能需要使用用户和组。
以下各节展示了其中的一些技巧。
在使用以下各节介绍的过程之前,可能需要设置对MicrosoftADOExt2.5forDDLandSecurity库的引用(如果尚未设置):
在VisualBasic器中,指向“工具”菜单中的“引用”。
将显示“引用”对话框。
选中MicrosoftADOExt2.5forDDLandSecurity复选框。
添加和删除用户
以下过程将创立一个新的用户帐户,然后将其追加到用于当前数据库的工作组信息文件中的默认Users组。
注意:
要在Aess中使用下面的例如,您需要作为Admins组的成员并翻开一个数据库。
在下面的过程中,您要确保工作组信息文件不包含在strUser中指定了其名称的用户。
例如,您可以先调用DeleteUser子例程来确保这一点。
请看以下代码:
PrivateFunctionAddUser(ByValstrUserAsString,ByValstrPIDAsString,OptionalByValstrPwdAsString)AsBooleanDimcatDBAsADOX.CatalogOnErrorGoToAddUserErr'实例化Catalog对象。
SetcatDB=NewAD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 了解 MICROSOFT ACCESS 安全性数据库教程 电脑资料 安全性 数据库 教程 电脑 资料