許興義 王國強 陶明慧
(中國人民解放軍西藏77635部隊,西藏 錯那 856700)
數(shù)據(jù)庫管理系統(tǒng)設(shè)計首先要考慮的一個因素是系統(tǒng)的安全性。安全性措施旨在保護數(shù)據(jù),以免遭非法窺探或蓄意破壞。
目前很多MIS系統(tǒng)(管理信息系統(tǒng))采用的是Access數(shù)據(jù)庫,尤其是部隊MIS多涉及到軍事命令、軍事情報等涉密信息,因此,數(shù)據(jù)庫安全性顯得尤為重要。為此,本文對Access數(shù)據(jù)庫安全研討如下。
Access數(shù)據(jù)庫系統(tǒng)的安全機制將安全性管理分為三個階段[1],如圖1所示。

圖1 Access數(shù)據(jù)庫安全機制
確認階段,檢查用戶的登錄帳號以及用戶連接數(shù)據(jù)庫的密碼是否正確;
許可階段,檢查進入數(shù)據(jù)庫的用戶名是否正確以及此用戶具有何種用戶權(quán)限;
跟蹤用戶活動階段,通過加入跟蹤審計模塊,以備安全性分析。
打開的數(shù)據(jù)庫設(shè)置密碼,對于在某個用戶組中共享的數(shù)據(jù)庫或是單機上的數(shù)據(jù)庫,設(shè)置密碼通常就足夠了。如果要復制數(shù)據(jù)庫,則不要使用數(shù)據(jù)庫密碼。如果設(shè)置了密碼,復制的數(shù)據(jù)庫將不能同步。
這個方法是安全的,但只應(yīng)用于打開數(shù)據(jù)庫。在數(shù)據(jù)庫打開后,數(shù)據(jù)庫中的所有對象對用戶都將是可用的。
設(shè)置數(shù)據(jù)庫安全最靈活最廣泛的方法是設(shè)置用戶級安全管理(包括用戶管理和存取控制)。
用戶管理要求用戶在啟動Access時確認自己的身份并鍵入密碼。存取控制為用戶授予權(quán)限,規(guī)定他們?nèi)绾问褂脭?shù)據(jù)庫中的對象。例如,普通用戶只允許查看包含武裝巡邏數(shù)據(jù)的表,而不能訪問“敵情處置表”。系統(tǒng)管理員則對數(shù)據(jù)庫中的所有對象都具有完全的權(quán)限。
對于邊防武裝巡邏管理信息系統(tǒng),跟蹤的主要任務(wù)是對系統(tǒng)或用戶使用系統(tǒng)的情況進行記錄,以便系統(tǒng)管理員進行審計和安全性分析,從而保證數(shù)據(jù)的安全。
添加數(shù)據(jù)庫口令保護數(shù)據(jù)庫,用“獨占”方式打開數(shù)據(jù)庫,單擊“工具”菜單“安全”子菜單上的“設(shè)置數(shù)據(jù)庫密碼”命令,即可在密碼框中鍵入自己的口令。下一次打開數(shù)據(jù)庫時,將顯示要求輸入口令的對話框。
注意:如果已定義數(shù)據(jù)庫的用戶級安全對數(shù)據(jù)庫不具有管理員權(quán)限,就不能設(shè)置數(shù)據(jù)庫口令。而且,定義的數(shù)據(jù)庫口令是添加到用戶級安全上的。
設(shè)置用戶級安全,Access對象包括:表、查詢、窗體、報表、宏和模塊。對其所有對象均能設(shè)置用戶級的許可權(quán)限。
設(shè)置用戶級安全的流程如下:
①要求用戶登錄到Microsoft Access:啟動Microsoft Access,打開數(shù)據(jù)庫,在“更改登錄密碼”選項卡上鍵入新口令。
②創(chuàng)建和刪除 “管理員”帳號:“工具”菜單“安全”子菜單中的“用戶與組帳號”命令可用來增加或刪除用戶帳號,并改變其口令。
③改變數(shù)據(jù)庫及其對象的所有者(使用“用戶級安全向?qū)А保盒陆ㄒ粋€數(shù)據(jù)庫并將所有的對象導入其中,然后通過取消用戶組對新數(shù)據(jù)庫對象的所有權(quán)限,為選定對象類型設(shè)置安全,然后加密數(shù)據(jù)庫。
④創(chuàng)建、設(shè)置用戶的權(quán)限并設(shè)置登錄口令:先為組指定權(quán)限,然后通過將用戶添加到組中或從組中刪除的方式來更改單個用戶的權(quán)限。
加密或解密數(shù)據(jù)庫,啟動Microsoft Access→單擊“工具”菜單“安全”子菜單中的“加密/解密數(shù)據(jù)庫”→指定要加密或解密的數(shù)據(jù)庫→指定加密或解密之后的數(shù)據(jù)庫名稱、驅(qū)動器及文件夾。注意:在數(shù)據(jù)庫打開時不能對其進行加密或解密。在多用戶環(huán)境下,若其他用戶打開了數(shù)據(jù)庫,也無法執(zhí)行加密或解密操作;如果使用原有的數(shù)據(jù)庫名稱、驅(qū)動器和文件夾,在加密或解密成功后,Access會自動將原有的數(shù)據(jù)庫替換為加密或解密后的版本,但若出現(xiàn)錯誤,Access將保留原有的數(shù)據(jù)庫文件。
2.2.1 創(chuàng)建和連接新的Access工作組信息文件
Access數(shù)據(jù)庫的Jet引擎就是一個數(shù)據(jù)庫管理系統(tǒng),其作用是在用戶和系統(tǒng)信息庫中檢索和保存數(shù)據(jù),也叫數(shù)據(jù)管理部件,利用它可以創(chuàng)建其它數(shù)據(jù)訪問系統(tǒng),例如VB及Microsoft Jet。而Microsoft Access數(shù)據(jù)庫的用戶級安全機制是通過一個系統(tǒng)數(shù)據(jù)庫(System.mdw)來管理的。此數(shù)據(jù)庫一般在“C:WindowsSystem”的路徑下,而用戶名、用戶密碼、組名、用戶權(quán)限均在此數(shù)據(jù)庫中保存,一般的軟件不能打開和修改它。
安裝Access2003時創(chuàng)建的工作組信息文件所定義的默認工作組信息文件,這些信息通常很容易確定,使不具有授權(quán)的用戶也很可能創(chuàng)建該工作組信息文件的其它版本,并獲得該工作組信息文件中定義的工作組管理員帳號(管理員組的成員)的各種不可撤消的權(quán)限。要預防這一點,應(yīng)通過Microsoft Access Workgroup Administrator來新建一個工作組信息文件并為其指定工作組ID(WID)。新建Access工作組信息文件的步驟如下:
啟動“C:WINDOWSSYSTEMWrkgadm.exe”(工作組管理員)。 單擊“工作組管理員”對話框中的“創(chuàng)建”按鈕,鍵入相應(yīng)的名稱和組織名。在“工作組所有權(quán)信息”對話框中鍵入一個最多為20個字符、數(shù)字和字母組合。在創(chuàng)建了新的Access工作組信息文件后,就可以單擊“聯(lián)接”按鈕,用瀏覽的方式找到新建的Access工作組信息文件后,單擊“確定”退出即可。
2.2.2 用戶控制只有Access數(shù)據(jù)庫的系統(tǒng)管理員才能操作用戶及為其分配管理權(quán)限。用戶控制操作包括對用戶和更改登錄系統(tǒng)數(shù)據(jù)庫密碼等兩部分管理。
用戶管理:對用戶的管理一般包括添加/刪除用戶、修改/刪除用戶密碼等控制。“添加/刪除用戶”是系統(tǒng)管理員向系統(tǒng)數(shù)據(jù)庫添加合法用戶(包括用戶名和密碼)/刪除已存在的合法用戶;“修改/刪除用戶密碼”是系統(tǒng)管理員修改/刪除合法用戶的密碼。
添加用戶,模塊主要負責添加數(shù)據(jù)庫的合法用戶,并依據(jù)合法用戶的姓名及密碼轉(zhuǎn)換成一個唯一的PID值存入系統(tǒng)數(shù)據(jù)庫中。注意:密碼最大長度是14位。創(chuàng)建新用戶并添加到工作組中去的代碼如下:

刪除用戶,模塊主要負責從系統(tǒng)數(shù)據(jù)庫中刪除用戶的代碼如下:


修改用戶密碼,實現(xiàn)系統(tǒng)管理員修改用戶密碼操作的主要代碼如下:刪除用戶密碼,實現(xiàn)系統(tǒng)管理員刪除用戶密碼操作的主要代碼:Change Password sOldPassword,″″′設(shè)置用戶的新密碼為空字符更改登錄系統(tǒng)數(shù)據(jù)庫密碼,實現(xiàn)更改登錄系統(tǒng)數(shù)據(jù)庫密碼的主要代碼:
DBEngine.Workspaces(0).Users(″用戶名″)NewPassword 舊密碼,新密碼
2.2.3 用戶的權(quán)限控制
用戶的權(quán)限控制包括為用戶授予權(quán)限和更改用戶的所有權(quán)限兩部分。
為用戶授予權(quán)限,實現(xiàn)過程是把界面上選定的權(quán)限合成一個權(quán)限代碼,并將其保存于系統(tǒng)數(shù)據(jù)庫中:


更改用戶的所有權(quán)限:

2.2.4 加密、解密數(shù)據(jù)庫
DBEngine.CompactData(當前數(shù)據(jù)庫,新數(shù)據(jù)庫,加密或解密)
2.2.5 修復數(shù)據(jù)庫
DBEngine.RepairDatabase(數(shù)據(jù)庫的名稱)
分為系統(tǒng)級審計(對系統(tǒng)管理員的操作和具有不同的數(shù)據(jù)庫級權(quán)限的用戶設(shè)置)、表級審計(對每個基表都可以指定不同級別的審計,由表級審計設(shè)置語句指定對某一特定表的哪些操作應(yīng)予以審計)、用戶級審計(對系統(tǒng)的任一用戶均可設(shè)置審計,審計一旦設(shè)置,該用戶在系統(tǒng)內(nèi)的任何操作均被記錄在審計表中)。審計記錄了基表的使用、刪除,數(shù)據(jù)庫管理員和數(shù)據(jù)庫安全員的操作。對于每一個記錄下來的事件,審計記錄標識出事件發(fā)生的日期和時間,操作的用戶,事件類型及事件是成功還是失敗,請求的來源、客體名稱和安全級。值得注意的是:跟蹤與審計的信息只能由數(shù)據(jù)庫審計員獨立使用。
[1]劉獨玉.Access數(shù)據(jù)庫系統(tǒng)安全性的設(shè)計與實現(xiàn)[J].計算機應(yīng)用,2001,21(8):50-52.
[2]羅彬,劉獨玉.用VB6.0設(shè)計Access數(shù)據(jù)庫的安全性[J].四川輕化工學院學報,2000,13(2):64-67.
[3]何建國.Visual Basic 5.0和 MicrosoftAccess97數(shù)據(jù)庫的安全性接口[J].計算機工程,2000,26(1):104.
[4]金尊和.軟件工程實踐導論:有關(guān)方法、設(shè)計、實現(xiàn)、管理之三十六計[M].清華大學出版社,2005.