|
任何服務(wù)器,安全與性能是兩個(gè)永恒的主題。作為企業(yè)的信息化安全人員,其主要任務(wù)就是如何在保障服務(wù)器性能的前提下提高服務(wù)器的安全性。而要做到這一點(diǎn),服務(wù)器的訪問權(quán)限控制策略無疑是其中的一個(gè)重要環(huán)節(jié)。筆者企業(yè)最近上了一臺新的數(shù)據(jù)庫服務(wù)器,我為他設(shè)計(jì)了一些權(quán)限控制手段。這些方法雖然不能夠百分之百的保證數(shù)據(jù)庫服務(wù)器的安全性,但是,這些仍然是數(shù)據(jù)庫服務(wù)器安全策略中必不可少的因素。他對提高數(shù)據(jù)庫服務(wù)器的安全性有著不可磨滅的作用。
其實(shí),這些控制策略,不但對數(shù)據(jù)庫服務(wù)器有效;對其他的應(yīng)用服務(wù)器仍然具有參考價(jià)值。
一、給用戶授予其所需要的最小權(quán)限
不要給數(shù)據(jù)庫用戶提供比其需要的還要多的權(quán)限。換句話說,只給用戶真正需要的、為高效和簡潔地完成工作所需要的權(quán)限。這個(gè)道理很容易理解。這就好像防止職業(yè)貪污一樣。你若只給某個(gè)員工其完成工作所必需的費(fèi)用,一分都不多給,那其從哪里貪污呢?
如從數(shù)據(jù)庫服務(wù)器的角度來考慮這個(gè)問題,這就要求數(shù)據(jù)庫管理員在設(shè)置用戶訪問權(quán)限的時(shí)候,注意如下幾個(gè)方面的問題。
一是要限制數(shù)據(jù)庫管理員用戶的數(shù)量。在任何一個(gè)服務(wù)器中,管理員具有最高的權(quán)限。為了讓數(shù)據(jù)庫維持正常的運(yùn)轉(zhuǎn),必須給數(shù)據(jù)庫配置管理員賬戶。否則的話,當(dāng)數(shù)據(jù)庫出現(xiàn)故障的時(shí)候,就沒有合適的用戶對其進(jìn)行維護(hù)了。但是,這個(gè)管理員賬戶的數(shù)量要嚴(yán)格進(jìn)行限制。不能為了貪圖方便,把各個(gè)用戶都設(shè)置成為管理員。如筆者企業(yè),在一臺數(shù)據(jù)庫服務(wù)器中運(yùn)行著兩個(gè)實(shí)例,但是,只有一個(gè)數(shù)據(jù)庫管理員負(fù)責(zé)數(shù)據(jù)庫的日常維護(hù)。所以,就只有一個(gè)管理員賬戶。
二是選擇合適的賬戶連接到數(shù)據(jù)庫。一般數(shù)據(jù)庫的訪問權(quán)限可以通過兩種方式進(jìn)行控制。一是通過前臺應(yīng)用程序。也就是說,其連接到數(shù)據(jù)庫是一個(gè)統(tǒng)一的賬戶,如管理員賬戶;但是,在前臺應(yīng)用程序中設(shè)置了一些關(guān)卡,來控制用戶的訪問權(quán)限。這種方式雖然可以減少前臺程序開發(fā)的工作量,但是,對于數(shù)據(jù)庫服務(wù)器的安全是不利的。二是在前臺程序中,就直接利用員工賬戶的賬號登陸到數(shù)據(jù)庫系統(tǒng)。這種做法雖然可以提高數(shù)據(jù)庫的安全性,但是,其前臺配置的工作量會比較繁瑣。而筆者往往采用折中的方法。在數(shù)據(jù)庫中有兩類賬戶,一類是管理員賬戶,只有前臺系統(tǒng)管理員才可以利用這類賬戶登陸到數(shù)據(jù)庫系統(tǒng)。另外一類是普通賬戶,其雖然可以訪問數(shù)據(jù)庫中的所有非系統(tǒng)對象,但是,他們不能夠?qū)?shù)據(jù)庫系統(tǒng)的運(yùn)行參數(shù)進(jìn)行修改。然后具體數(shù)據(jù)對象的訪問,則通過前臺應(yīng)用程序控制。如此,前臺應(yīng)用程序普通員工只需要通過同一個(gè)賬戶連接到數(shù)據(jù)庫系統(tǒng)。而系統(tǒng)管理員若需要進(jìn)行系統(tǒng)維護(hù),如數(shù)據(jù)庫系統(tǒng)備份與還原,則可以通過數(shù)據(jù)庫管理員賬戶連接到數(shù)據(jù)庫系統(tǒng)。則即方便了前臺應(yīng)用程序的配置效率,又提高了數(shù)據(jù)庫服務(wù)器的安全性。總之,我們的目的就是要限制以數(shù)據(jù)庫管理員身份連接到數(shù)據(jù)庫的用戶數(shù)量。
在其他應(yīng)用服務(wù)器中,也有管理員賬戶與普通賬戶之分。在權(quán)限分配的時(shí)候,也最好只給用戶授予其需要的最小權(quán)限,以保障數(shù)據(jù)庫服務(wù)器的安全。
二、取消默認(rèn)賬戶不需要的權(quán)限
在建立賬戶的時(shí)候,服務(wù)器往往給給其一些默認(rèn)的權(quán)限。如在數(shù)據(jù)庫中,Public是授予每個(gè)用戶的默認(rèn)角色。任何用戶,只要沒有指定具體的角色,則其都可以授予Public組的權(quán)限。這其中,還包括執(zhí)行各種SQL語句的權(quán)限。如此,用戶就有可能利用這個(gè)管理漏洞,去訪問那些不允許他們直接訪問的包。因?yàn)檫@個(gè)默認(rèn)權(quán)限,對于那些需要他們并且需要合適配置和使用他們的應(yīng)用來說,是非常有用的,所以,系統(tǒng)默認(rèn)情況下,并沒有禁止。但是,這些包可能不適合與其他應(yīng)用。故,除非絕對的需要,否則就應(yīng)該從默認(rèn)缺陷中刪除。
也就是說,通常某個(gè)賬戶的默認(rèn)權(quán)限,其是比較大的。如對于數(shù)據(jù)庫來說,其賬戶的默認(rèn)權(quán)限就是可以訪問所有的非系統(tǒng)對象表。數(shù)據(jù)庫設(shè)計(jì)的時(shí)候,主要是為了考慮新建用戶的方便。而且,新建用戶的時(shí)候,數(shù)據(jù)庫確實(shí)也無法識別這個(gè)用戶到底能夠訪問哪些用戶對象。但是,對于企業(yè)應(yīng)用系統(tǒng)來說,若給每個(gè)員工都默認(rèn)具有這么大的訪問權(quán)限,那則是很不安全的。
筆者的做法是,會把應(yīng)用系統(tǒng)的默認(rèn)用戶權(quán)限設(shè)置為最小,有些甚至把默認(rèn)用戶權(quán)限全部取消掉。這就迫使服務(wù)器管理員在建立賬戶的時(shí)候,給賬戶指定管理員預(yù)先設(shè)定的角色。這就可以有效的防止管理員“偷懶”。在建立賬戶的時(shí)候,不指定角色。 |
|
【收藏】【打印】【進(jìn)入論壇】 |
|
|
|
|
|
|
|