Access是MicroSoft公司始于1994年發(fā)表的微機(jī)數(shù)據(jù)庫(kù)管理系統(tǒng)。作為一種功能強(qiáng)大的MIS系統(tǒng)開(kāi)發(fā)工具,它具有界面友好,易學(xué)易用,開(kāi)發(fā)簡(jiǎn)單,接口靈活等特點(diǎn),是一個(gè)典型的新一代數(shù)據(jù)管理和信息系統(tǒng)開(kāi)發(fā)工具。與Microsoft的其他數(shù)據(jù)庫(kù)產(chǎn)品如FOXPRO等相比,Access具有較獨(dú)特的優(yōu)勢(shì)-提供了更強(qiáng)大的數(shù)據(jù)組織,用戶(hù)管理,安全檢查等功能。在一個(gè)工作組級(jí)別的網(wǎng)絡(luò)環(huán)境中,使用Access開(kāi)發(fā)的多用戶(hù)數(shù)據(jù)庫(kù)管理系統(tǒng)具有傳統(tǒng)的XBASE數(shù)據(jù)庫(kù)系統(tǒng)所無(wú)法比擬的客戶(hù)服務(wù)器(Cient/Server)結(jié)構(gòu)和相應(yīng)的數(shù)據(jù)庫(kù)安全機(jī)制。本文擬就Access數(shù)據(jù)庫(kù)系統(tǒng)的網(wǎng)絡(luò)應(yīng)用及安全機(jī)制做較深入的探討。
建立Access的安全系統(tǒng)
1.創(chuàng)建Access工作組
一個(gè)Access工作組定義為一組用戶(hù),他們共享一個(gè)或多個(gè)Access應(yīng)用程序,并且在他們的Access副本中附加公共的SYSTEM.MDA庫(kù)。由Access的系統(tǒng)管理員(Admin用戶(hù))來(lái)給這些用戶(hù)授予對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的相應(yīng)的操作權(quán)限,這樣,不同的用戶(hù)就能以不同的權(quán)限訪(fǎng)問(wèn)相關(guān)的數(shù)據(jù)庫(kù)資源,而在XBASE系統(tǒng)中,要實(shí)現(xiàn)這樣的功能需要數(shù)據(jù)庫(kù)開(kāi)發(fā)人員在編程中實(shí)施控制,且不十分完善。
Access提供了一個(gè)新的應(yīng)用程序MicrosoftAccessWorkgroupAdministrator,它能自動(dòng)完成Access工作組的創(chuàng)建工作。對(duì)一個(gè)工作組而言,Access系統(tǒng)管理員需要用這個(gè)程序創(chuàng)建一個(gè)新的SYSTEM.MDA(或用其他任意的文件名:*.MDA)庫(kù),并把工作組中的每個(gè)用戶(hù)的Access指向這個(gè)新的SYSTEM.MDA??梢赃@樣理解,一個(gè)系統(tǒng)數(shù)據(jù)庫(kù)*.MDA對(duì)應(yīng)一個(gè)工作組。
2.創(chuàng)建工作組中的Access帳戶(hù)
Access帳戶(hù)包括Access組與Access用戶(hù)。一個(gè)Access組由一個(gè)或多個(gè)Access用戶(hù)成員構(gòu)成。在A(yíng)ccess的安裝過(guò)程中,Access自動(dòng)默認(rèn)建立了兩個(gè)用戶(hù)組(Admins與Users)和一個(gè)用戶(hù)(Admin),這兩個(gè)用戶(hù)組與ADMIN用戶(hù)是不允許刪除的。以Admins用戶(hù)組中的用戶(hù)(如:Admin)登錄(LOGON)進(jìn)入Access后,可以創(chuàng)建新的Access組與用戶(hù),并將新用戶(hù)放置到相應(yīng)的組中。
Admins組是Access的管理員組,缺省時(shí)只包括Admin用戶(hù),該組中的用戶(hù)默認(rèn)對(duì)數(shù)據(jù)庫(kù)具有全權(quán),并且可以管理其他的用戶(hù)和用戶(hù)組。Users組是Access的缺省用戶(hù)組,每個(gè)用戶(hù),包括Admin及新建用戶(hù)都屬于該組,缺省時(shí),Users組中的用戶(hù)對(duì)數(shù)據(jù)庫(kù)也具有全權(quán)。
3.設(shè)置Admin用戶(hù)的登錄口令
Admin用戶(hù)的登錄口令是整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的安全入口,為什么這樣說(shuō)呢?因?yàn)槿绻麤](méi)有Admin登錄口令,所有用戶(hù)的Access副本均以Admin用戶(hù)的身份登錄數(shù)據(jù)庫(kù),而不是以Access管理員所創(chuàng)建的用戶(hù)名進(jìn)行登錄,只有設(shè)置了Admin的登錄口令,Access才啟動(dòng)它的安全系統(tǒng),這也就是為什么無(wú)法刪除Admin用戶(hù)的原因。
4.分配數(shù)據(jù)庫(kù)權(quán)限
數(shù)據(jù)庫(kù)權(quán)限是針對(duì)某個(gè)具體的數(shù)據(jù)庫(kù)而言的。Access系統(tǒng)管理員(Admins組中的一個(gè)用戶(hù))在打開(kāi)一個(gè)需要工作組共享的數(shù)據(jù)庫(kù)之后,就可以根據(jù)具體情況對(duì)工作組中的Access組與Access用戶(hù)進(jìn)行權(quán)限的分配了。不同的Access數(shù)據(jù)庫(kù)對(duì)象具有不同的權(quán)限集合,Access的數(shù)據(jù)庫(kù)對(duì)象包括六種,分別是表、查詢(xún)、表單、報(bào)表、宏和模塊,必須分別予以授權(quán)。對(duì)Access組的授權(quán)適用于該組中的每一個(gè)用戶(hù)。
在這里需要強(qiáng)調(diào)指出的是:必須首先屏蔽Users組對(duì)數(shù)據(jù)庫(kù)的所有權(quán)限,前面講過(guò),所有Access用戶(hù)都屬于Users組,而Users組缺省是對(duì)數(shù)據(jù)庫(kù)對(duì)象是具有全權(quán)的,所以在做具體數(shù)據(jù)庫(kù)的權(quán)限之前,必須首先將它的所有權(quán)限屏蔽掉。我們不理解為什么微軟要給Users組對(duì)數(shù)據(jù)庫(kù)的全部許可權(quán),從工作實(shí)踐中我們認(rèn)為這是一個(gè)錯(cuò)誤,它毫無(wú)意義的增加了Access管理員的工作強(qiáng)度與難度(因?yàn)榻?jīng)常會(huì)有忘記屏蔽Users組權(quán)限而使整個(gè)安全系統(tǒng)形同虛設(shè)的事情發(fā)生)。我們認(rèn)為Users組對(duì)數(shù)據(jù)庫(kù)對(duì)象應(yīng)缺省為具有最低的權(quán)限,這樣是的和安全的。
至此,整個(gè)Access數(shù)據(jù)庫(kù)系統(tǒng)的安全機(jī)制已基本建立起來(lái)了。但是,這樣的數(shù)據(jù)庫(kù)系統(tǒng)就是真正安全的嗎?還不是,因?yàn)锳ccess安全系統(tǒng)本身有一個(gè)很大的漏洞,如果不設(shè)法堵住這個(gè)漏洞,在某些情況下,Access系統(tǒng)管理員精心建立起來(lái)的安全系統(tǒng)將變得毫無(wú)意義。下面,我們將具體討論Access安全系統(tǒng)漏洞產(chǎn)生的原因以及相應(yīng)的解決辦法。
建立Access的安全系統(tǒng)
1.創(chuàng)建Access工作組
一個(gè)Access工作組定義為一組用戶(hù),他們共享一個(gè)或多個(gè)Access應(yīng)用程序,并且在他們的Access副本中附加公共的SYSTEM.MDA庫(kù)。由Access的系統(tǒng)管理員(Admin用戶(hù))來(lái)給這些用戶(hù)授予對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的相應(yīng)的操作權(quán)限,這樣,不同的用戶(hù)就能以不同的權(quán)限訪(fǎng)問(wèn)相關(guān)的數(shù)據(jù)庫(kù)資源,而在XBASE系統(tǒng)中,要實(shí)現(xiàn)這樣的功能需要數(shù)據(jù)庫(kù)開(kāi)發(fā)人員在編程中實(shí)施控制,且不十分完善。
Access提供了一個(gè)新的應(yīng)用程序MicrosoftAccessWorkgroupAdministrator,它能自動(dòng)完成Access工作組的創(chuàng)建工作。對(duì)一個(gè)工作組而言,Access系統(tǒng)管理員需要用這個(gè)程序創(chuàng)建一個(gè)新的SYSTEM.MDA(或用其他任意的文件名:*.MDA)庫(kù),并把工作組中的每個(gè)用戶(hù)的Access指向這個(gè)新的SYSTEM.MDA??梢赃@樣理解,一個(gè)系統(tǒng)數(shù)據(jù)庫(kù)*.MDA對(duì)應(yīng)一個(gè)工作組。
2.創(chuàng)建工作組中的Access帳戶(hù)
Access帳戶(hù)包括Access組與Access用戶(hù)。一個(gè)Access組由一個(gè)或多個(gè)Access用戶(hù)成員構(gòu)成。在A(yíng)ccess的安裝過(guò)程中,Access自動(dòng)默認(rèn)建立了兩個(gè)用戶(hù)組(Admins與Users)和一個(gè)用戶(hù)(Admin),這兩個(gè)用戶(hù)組與ADMIN用戶(hù)是不允許刪除的。以Admins用戶(hù)組中的用戶(hù)(如:Admin)登錄(LOGON)進(jìn)入Access后,可以創(chuàng)建新的Access組與用戶(hù),并將新用戶(hù)放置到相應(yīng)的組中。
Admins組是Access的管理員組,缺省時(shí)只包括Admin用戶(hù),該組中的用戶(hù)默認(rèn)對(duì)數(shù)據(jù)庫(kù)具有全權(quán),并且可以管理其他的用戶(hù)和用戶(hù)組。Users組是Access的缺省用戶(hù)組,每個(gè)用戶(hù),包括Admin及新建用戶(hù)都屬于該組,缺省時(shí),Users組中的用戶(hù)對(duì)數(shù)據(jù)庫(kù)也具有全權(quán)。
3.設(shè)置Admin用戶(hù)的登錄口令
Admin用戶(hù)的登錄口令是整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的安全入口,為什么這樣說(shuō)呢?因?yàn)槿绻麤](méi)有Admin登錄口令,所有用戶(hù)的Access副本均以Admin用戶(hù)的身份登錄數(shù)據(jù)庫(kù),而不是以Access管理員所創(chuàng)建的用戶(hù)名進(jìn)行登錄,只有設(shè)置了Admin的登錄口令,Access才啟動(dòng)它的安全系統(tǒng),這也就是為什么無(wú)法刪除Admin用戶(hù)的原因。
4.分配數(shù)據(jù)庫(kù)權(quán)限
數(shù)據(jù)庫(kù)權(quán)限是針對(duì)某個(gè)具體的數(shù)據(jù)庫(kù)而言的。Access系統(tǒng)管理員(Admins組中的一個(gè)用戶(hù))在打開(kāi)一個(gè)需要工作組共享的數(shù)據(jù)庫(kù)之后,就可以根據(jù)具體情況對(duì)工作組中的Access組與Access用戶(hù)進(jìn)行權(quán)限的分配了。不同的Access數(shù)據(jù)庫(kù)對(duì)象具有不同的權(quán)限集合,Access的數(shù)據(jù)庫(kù)對(duì)象包括六種,分別是表、查詢(xún)、表單、報(bào)表、宏和模塊,必須分別予以授權(quán)。對(duì)Access組的授權(quán)適用于該組中的每一個(gè)用戶(hù)。
在這里需要強(qiáng)調(diào)指出的是:必須首先屏蔽Users組對(duì)數(shù)據(jù)庫(kù)的所有權(quán)限,前面講過(guò),所有Access用戶(hù)都屬于Users組,而Users組缺省是對(duì)數(shù)據(jù)庫(kù)對(duì)象是具有全權(quán)的,所以在做具體數(shù)據(jù)庫(kù)的權(quán)限之前,必須首先將它的所有權(quán)限屏蔽掉。我們不理解為什么微軟要給Users組對(duì)數(shù)據(jù)庫(kù)的全部許可權(quán),從工作實(shí)踐中我們認(rèn)為這是一個(gè)錯(cuò)誤,它毫無(wú)意義的增加了Access管理員的工作強(qiáng)度與難度(因?yàn)榻?jīng)常會(huì)有忘記屏蔽Users組權(quán)限而使整個(gè)安全系統(tǒng)形同虛設(shè)的事情發(fā)生)。我們認(rèn)為Users組對(duì)數(shù)據(jù)庫(kù)對(duì)象應(yīng)缺省為具有最低的權(quán)限,這樣是的和安全的。
至此,整個(gè)Access數(shù)據(jù)庫(kù)系統(tǒng)的安全機(jī)制已基本建立起來(lái)了。但是,這樣的數(shù)據(jù)庫(kù)系統(tǒng)就是真正安全的嗎?還不是,因?yàn)锳ccess安全系統(tǒng)本身有一個(gè)很大的漏洞,如果不設(shè)法堵住這個(gè)漏洞,在某些情況下,Access系統(tǒng)管理員精心建立起來(lái)的安全系統(tǒng)將變得毫無(wú)意義。下面,我們將具體討論Access安全系統(tǒng)漏洞產(chǎn)生的原因以及相應(yīng)的解決辦法。

