了解MicrosoftAccess安全性

字號:

簡介
    在早期版本的 Microsoft® Access(Microsoft Access 2000 以前)中,有關(guān)安全性的知識有時被認為是無法為任何人所掌握和應(yīng)用的。您需要按順序執(zhí)行很多步驟,一旦遺漏某個步驟或者顛倒了順序就會帶來災(zāi)難性的后果。隨著 Microsoft Access for Microsoft Windows® 95 的 Security Wizard 出現(xiàn),以及 Microsoft Access 2000 的 Security Wizard 的不斷改進,在 Access 中實現(xiàn)安全性已變得非常簡單。但是,即使有了這些幫助,您也必須清楚自己的安全選項,并掌握在數(shù)據(jù)庫中保護數(shù)據(jù)和對象的操作。否則,輕者會帶來數(shù)據(jù)安全隱患,重者會將您鎖在自己的數(shù)據(jù)庫之外。
    有很多方法可以保護您的 Access 數(shù)據(jù)庫以及其中包含的數(shù)據(jù)。在本文中,我們將討論用于保護組成數(shù)據(jù)庫的各個對象(包含數(shù)據(jù))、包含諸如窗體和報表等元素的對象以及代碼(可能是數(shù)據(jù)庫中最有價值的部分)的方法。本文中討論的安全技巧只適用于 Microsoft Access 數(shù)據(jù)庫 (.mdb) 文件。
    需要了解的有關(guān)保護敏感數(shù)據(jù)的知識
    您應(yīng)該知道,有很多工具和第三方實用程序可以用于探測任何類型的數(shù)據(jù)庫的密碼,以及來自任何工作組信息文件的用戶名和密碼(本文后面將詳細介紹工作組信息文件)。如果需要保護敏感數(shù)據(jù)免受非法訪問,的安全措施就是使用計算機操作系統(tǒng)提供的文件級安全性和文件共享安全性。文件級安全性涉及在數(shù)據(jù)文件上設(shè)置權(quán)限。文件共享安全性涉及限制對數(shù)據(jù)文件存儲位置的訪問。文件共享安全性的一個示例是在存儲數(shù)據(jù)文件的文件夾(位于本地計算機或網(wǎng)絡(luò)服務(wù)器上)上設(shè)置用戶權(quán)限。為此,可以將數(shù)據(jù)拆分到多個文件中,在這些文件上設(shè)置用戶權(quán)限,再將這些文件放置到受保護的文件共享空間中。然后可以從具有安全設(shè)置的 Access 數(shù)據(jù)庫鏈接到這些文件。
    Access 安全性概述
    以下各節(jié)介紹了幾種保護 Access 數(shù)據(jù)庫的方法。
    加密或解密數(shù)據(jù)庫
    最簡單(也是安全性最低)的保護方法是對數(shù)據(jù)庫進行加密。加密數(shù)據(jù)庫就是將數(shù)據(jù)庫文件壓縮,從而使某些實用程序(如字處理器)不能解讀這些文件。加密一個不具有安全設(shè)置的數(shù)據(jù)庫并不能保證數(shù)據(jù)庫的安全,因為任何人都可以打開數(shù)據(jù)庫并完全訪問數(shù)據(jù)庫中的所有對象。有關(guān)對數(shù)據(jù)庫進行安全設(shè)置的詳細內(nèi)容,請參閱本文后面的使用 Security Wizard 設(shè)置 Access 數(shù)據(jù)庫的安全性。
    加密可以避免在以電子方式傳輸數(shù)據(jù)庫或者將其存儲在軟盤、磁帶或光盤上時,其他用戶偶然訪問數(shù)據(jù)庫中的信息。然而 Jet(Access 使用的數(shù)據(jù)庫引擎)使用的加密方法非常薄弱,因此絕不能用于保護敏感數(shù)據(jù)。“加密/解密數(shù)據(jù)庫”命令位于“工具”菜單的“安全”子菜單中。解密數(shù)據(jù)庫是對加密過程的逆運算。
    使用自定義界面
    另一種相對簡單的保護方案是使用自定義界面代替 Access 標(biāo)準(zhǔn)界面。與加密一樣,它也不能保護數(shù)據(jù)庫中的對象和敏感數(shù)據(jù)的安全。通過選擇“工具”菜單中的“啟動”選項,您可以指定自定義的啟動窗體、菜單,甚至自定義的標(biāo)題和圖標(biāo)。還可以選擇取消 Database 窗口,從而對缺乏相應(yīng)技術(shù)的應(yīng)用程序用戶隱藏這些對象?!皢印睂υ捒虻母黜椆δ芤部梢酝ㄟ^編程實現(xiàn)。有關(guān)如何從“啟動”對話框設(shè)置啟動選項的詳細信息,請參閱 Access 幫助中的“關(guān)于啟動選項”。有關(guān)如何通過編程設(shè)置啟動選項的詳細信息,請參閱 Access 幫助 Microsoft Visual Basic® 編輯器的“設(shè)置‘啟動’選項和編碼中的選項”。
    設(shè)置數(shù)據(jù)庫密碼
    您可以在數(shù)據(jù)庫上設(shè)置密碼,從而要求用戶在訪問數(shù)據(jù)和數(shù)據(jù)庫對象時輸入密碼。
    注意:使用密碼保護數(shù)據(jù)庫或其中的對象的安全性也稱為共享級安全性。
    您不能使用此選項為用戶或組分配權(quán)限,因此任何掌握密碼的人都可以無限制地訪問所有 Access 數(shù)據(jù)和數(shù)據(jù)庫對象?!霸O(shè)置數(shù)據(jù)庫密碼”命令位于“工具”菜單的“安全”子菜單中。
    用戶級安全性
    除共享級安全性外,您還可以使用用戶級安全性,它提供了最嚴(yán)格的訪問限制,使您能夠限度地控制數(shù)據(jù)庫及其中包含的對象。這是我們所推薦的數(shù)據(jù)庫保護措施的一部分(當(dāng)和操作系統(tǒng)提供的文件級和共享級安全性結(jié)合使用時),因此我們將在本文后面對用戶級安全性做詳細介紹。
    同樣,我們也將討論用于保護數(shù)據(jù)庫中包含的 Visual Basic for Applications (VBA) 代碼的各種方法。
    警告:用戶級安全性(在單獨使用時)主要用于保護數(shù)據(jù)庫中的代碼和對象,以免用戶不小心進行了修改或更改。如果不希望用戶非法訪問窗體、報表或模塊中的代碼,則必須將 .mdb 文件轉(zhuǎn)換為 MDE 文件(本文后面將詳細介紹)。要避免用戶修改數(shù)據(jù)庫中的查詢、宏或數(shù)據(jù)訪問頁,的方法就是將數(shù)據(jù)庫文件放在一個受保護的文件共享區(qū)域中。此外,在 Access 中不可能既允許用戶修改表中的數(shù)據(jù),同時又禁止其修改表的設(shè)計或刪除表。要提供這樣一種功能,需要使用一個基于服務(wù)器的數(shù)據(jù)庫產(chǎn)品,例如 Microsoft SQL Server™。
    設(shè)置模塊密碼
    使用密碼可以保護所有標(biāo)準(zhǔn)模塊和類模塊(例如窗體和報表中包含的代碼)以免用戶不小心修改或查看 VBA 代碼。設(shè)置密碼后,您只需在每次會話時輸入一次密碼,以便在 Visual Basic 編輯器中查看或修改代碼。除查看和編輯外,在剪切、復(fù)制、粘貼、導(dǎo)出或刪除任何模塊時也都需要密碼。但應(yīng)該清楚的是,使用這種方法保護代碼不能防止您或其他用戶運行代碼,也不能防止其他用戶使用第三方實用程序(如 16 進制編輯器)來查看代碼。要完全保護代碼,必須將 .mdb 文件轉(zhuǎn)換為 MDE 文件。
    要為項目中的模塊設(shè)置密碼: 為該項目從 Visual Basic 編輯器的“工具”菜單中選擇“屬性”命令。 在“項目屬性”對話框中,單擊“保護”選項卡。 選中“查看時鎖定工程”復(fù)選框并鍵入密碼。 在“確認密碼”框中,重新鍵入密碼,然后單擊“確定”。 使用 MDE 文件
    通過將數(shù)據(jù)庫文件轉(zhuǎn)換為 MDE 文件,可以完全保護 Access 中的代碼免受非法訪問。將 .mdb 文件轉(zhuǎn)換為 MDE 文件時,Access 將編譯所有模塊,刪除所有可編輯的源代碼,然后壓縮目標(biāo)數(shù)據(jù)庫。原始的 .mdb 文件不會受到影響。新數(shù)據(jù)庫中的 VBA 代碼仍然能運行,但不能查看或編輯。數(shù)據(jù)庫將繼續(xù)正常工作,您仍然可以升級數(shù)據(jù)和運行報表。尤其是,將 Access 數(shù)據(jù)庫保存為 MDE 文件可以防止以下操作: 在設(shè)計視圖中查看、修改或創(chuàng)建窗體、報表或模塊。 添加、刪除或更改對對象庫或數(shù)據(jù)庫的引用。 使用 Access 或 VBA 對象模型的屬性或方法更改代碼 - MDE 文件不包含可編輯代碼。 導(dǎo)入或?qū)С龃绑w、報表或模塊。而表、查詢、數(shù)據(jù)訪問頁和宏可以導(dǎo)入非 MDE 數(shù)據(jù)庫,或從中導(dǎo)出。