Access是MicroSoft公司始於1994年發表的微機數據庫管理系統。作為一種功能強大的MIS系統開發工具,它具有界面友好,易學易用,開發簡單,接口靈活等特點,是一個典型的新一代數據管理和信息系統開發工具。與Microsoft的其他數據庫產品如FOXPRO等相比,Access具有較獨特的優勢-提供了更強大的數據組織,用戶管理,安全檢查等功能。在一個工作組級別的網絡環境中,使用Access開發的多用戶數據庫管理系統具有傳統的XBASE數據庫系統所無法比擬的客戶服務器(Cient/Server)結構和相應的數據庫安全機制。本文擬就Access數據庫系統的網絡應用及安全機制做較深入的探討。
建立Access的安全系統
1.創建Access工作組
一個Access工作組定義為一組用戶,他們共享一個或多個Access應用程序,並且在他們的Access副本中附加公共的
SYSTEM.MDA庫。由Access的系統管理員(Admin用戶)來給這些用戶授予對數據庫系統的相應的操作權限,這樣,不同的用戶就能以不同的權限訪問相關的數據庫資源,而在XBASE系統中,要實現這樣的功能需要數據庫開發人員在編程中實施控制,且不十分完善。
Access提供了一個新的應用程序MicrosoftAccessWorkgroupAdministrator,它能自動完成Access工作組的創建工作。對一個工作組而言,Access系統管理員需要用這個程序創建一個新的SYSTEM.MDA(或用其他任意的文件名:*.MDA)庫,並把工作組中的每個用戶的Access指向這個新的SYSTEM.MDA。可以這樣理解,一個系統數據庫*.MDA對應一個工作組。
2.創建工作組中的Access帳戶
Access帳戶包括Access組與Access用戶。一個Access組由一個或多個Access用戶成員構成。在Access的安裝過程中,Access自動默認建立了兩個用戶組(Admins與Users)和一個用戶(Admin),這兩個用戶組與ADMIN用戶是不允許刪除的。以Admins用戶組中的用戶(如:Admin)登錄(LogoN)進入Access後,可以創建新的Access組與用戶,並將新用戶放置到相應的組中。
Admins組是Access的管理員組,缺省時只包括Admin用戶,該組中的用戶默認對數據庫具有全權,並且可以管理其他的用戶和用戶組。Users組是Access的缺省用戶組,每個用戶,包括Admin及新建用戶都屬於該組,缺省時,Users組中的用戶對數據庫也具有全權。
3.設置Admin用戶的登錄口令
Admin用戶的登錄口令是整個數據庫系統的安全入口,為什麼這樣說呢?因為如果沒有Admin登錄口令,所有用戶的Access副本均以Admin用戶的身份登錄數據庫,而不是以Access管理員所創建的用戶名進行登錄,只有設置了Admin的登錄口令,Access才啟動它的安全系統,這也就是為什麼無法刪除Admin用戶的原因。
4.分配數據庫權限
數據庫權限是針對某個具體的數據庫而言的。Access系統管理員(Admins組中的一個用戶)在打開一個需要工作組共享的數據庫之後,就可以根據具體情況對工作組中的Access組與Access用戶進行權限的分配了。不同的Access數據庫對象具有不同的權限集合,Access的數據庫對象包括六種,分別是表、查詢、表單、報表、宏和模塊,必須分別予以授權。對Access組的授權適用於該組中的每一個用戶。
在這裡需要強調指出的是:必須首先屏蔽Users組對數據庫的所有權限,前面講過,所有Access用戶都屬於Users組,而Users組缺省是對數據庫對象是具有全權的,所以在做具體數據庫的權限之前,必須首先將它的所有權限屏蔽掉。我們不理解為什麼微軟要給Users組對數據庫的全部許可權,從工作實踐中我們認為這是一個錯誤,它毫無意義的增加了Access管理員的工作強度與難度(因為經常會有忘記屏蔽Users組權限而使整個安全系統形同虛設的事情發生)。我們認為Users組對數據庫對象應缺省為具有最低的權限,這樣是最有效的和安全的。
至此,整個Access數據庫系統的安全機制已基本建立起來了(工作流程詳見附圖1,2)。但是,這樣的數據庫系統就是真正安全的嗎?還不是,因為Access安全系統本身有一個很大的漏洞,如果不設法堵住這個漏洞,在某些情況下,Access系統管理員精心建立起來的安全系統將變得毫無意義。下面,我們將具體討論Access安全系統漏洞產生的原因以及相應的解決辦法。
消除Access的安全漏洞
1.由Admin用戶引發的安全漏洞
為什麼Access系統存在安全漏洞呢?這要從Admin用戶說起。我們知道,Admin用戶是Access系統的缺省用戶,也就是說,除非你的Access系統在安裝後已經重新鏈接到了某個新的工作組安全系統上,你將以默認的Admin用戶登錄Access。而微軟將其用於標記該Admin帳戶的用戶ID號設成了一個固定值,這就意味著全世界的Access系統的Admin用戶在Access中都是同一個用戶。這樣,問題就出現了----如果一個未鏈入你的工作組安全系統的用戶在網絡文件系統級別上可以獲得對你的數據庫系統文件的Admin權,他將以Admin用戶的身份擁有對該數據庫系統的所有權利!由Access本身建立起來的第二級安全機制將不起任何作用.這種情況實在太容易發生----工作組用戶只要在他的計算機上重新安裝一次Access軟件,他將會輕而易舉地避開你設置的安全系統的防護,而做為默認的admin用戶簦錄並操作工作組中任何數據庫系統。
2.解決方案
如何解決由Admin用戶所引發的安全漏洞呢?在市面上有關Access的參考書籍中很難找出答案。實踐中,我們總結出了一套行之有效的解決方案,現提出來供大家參考。
我們的基本思路就是屏蔽Admin用戶對數據庫的所有權限,首先,在Admins用戶組中增加一個新的與Admin用戶等同的新用戶,例如為 www",然後以這個新用戶登錄Access,從Admins用戶組將Admin用戶撤出,並屏蔽掉Admin用戶對數據庫的所有權限,這樣,Admin用戶就成為了一個普通用戶,實際的數據庫系統管理員則變為新用戶(www),而你的數據庫安全系統就對所有的用戶起安全防護作用了。
結束語
盡管Access系統存在著某些安全漏洞,但它仍不失為微機平台上一個優秀的數據庫管理系統,在工作組級或部門級的數據庫應用領域,采用Access開發的數據庫系統將會真正實現以往只有用大型數據庫管理系統如Oracle等才能開發出的客戶/服務器模式的數據庫應用程序,同時,經過修正的Access安全系統也會使數據庫管理員在數據庫的網絡安全方面高枕無憂。
由於國內對Access的應用起步較晚,有關的技術資料也比較缺乏,這在一定程度上制約了Access這樣一個優秀的數據庫產品的應用,我們希望通過本文能夠拋磚引玉,使國內用戶能進一步的認識、了解和使用Access,使國內微機平台上出現更多的用Access開發的數據庫產品。