數據庫服務器安全權限的控制策略
任何服務器,安全與性能是兩個永恒的主題。作為企業的信息化安全人員,其主要任務就是如何在保障服務器性能的前提下提高服務器的安全性。而要做到這一點,服務器的訪問權限控制策略無疑是其中的一個重要環節。筆者企業最近上了一臺新的數據庫服務器,我為他設計了一些權限控制手段。這些方法雖然不能夠百分之百的保證數據庫服務器的安全性,但是,這些仍然是數據庫服務器安全策略中必不可少的因素。他對提高數據庫服務器的安全性有著不可磨滅的作用。
其實,這些控制策略,不但對數據庫服務器有效;對其他的應用服務器仍然具有參考價值。
一、給用戶授予其所需要的最小權限
不要給數據庫用戶提供比其需要的還要多的權限。換句話說,只給用戶真正需要的、為高效和簡潔地完成工作所需要的權限。這個道理很容易理解。這就好像防止職業貪污一樣。你若只給某個員工其完成工作所必需的費用,一分都不多給,那其從哪里貪污呢?
如從數據庫服務器的角度來考慮這個問題,這就要求數據庫管理員在設置用戶訪問權限的時候,注意如下幾個方面的問題。
1、是要限制數據庫管理員用戶的數量。在任何一個服務器中,管理員具有最高的權限。為了讓數據庫維持正常的運轉,必須給數據庫配置管理員賬戶。否則的話,當數據庫出現故障的時候,就沒有合適的用戶對其進行維護了。但是,這個管理員賬戶的數量要嚴格進行限制。不能為了貪圖方便,把各個用戶都設置成為管理員。如筆者企業,在一臺數據庫服務器中運行著兩個實例,但是,只有一個數據庫管理員負責數據庫的日常維護。所以,就只有一個管理員賬戶。
2、是選擇合適的賬戶連接到數據庫。一般數據庫的訪問權限可以通過兩種方式進行控制。一是通過前臺應用程序。也就是說,其連接到數據庫是一個統一的賬戶,如管理員賬戶;但是,在前臺應用程序中設置了一些關卡,來控制用戶的訪問權限。這種方式雖然可以減少前臺程序開發的工作量,但是,對于數據庫服務器的安全是不利的。二是在前臺程序中,就直接利用員工賬戶的賬號登陸到數據庫系統。這種做法雖然可以提高數據庫的安全性,但是,其前臺配置的工作量會比較繁瑣。而筆者往往采用折中的方法。在數據庫中有兩類賬戶,一類是管理員賬戶,只有前臺系統管理員才可以利用這類賬戶登陸到數據庫系統。另外一類是普通賬戶,其雖然可以訪問數據庫中的所有非系統對象,但是,他們不能夠對數據庫系統的運行參數進行修改。然后具體數據對象的訪問,則通過前臺應用程序控制。如此,前臺應用程序普通員工只需要通過同一個賬戶連接到數據庫系統。而系統管理員若需要進行系統維護,如數據庫系統備份與還原,則可以通過數據庫管理員賬戶連接到數據庫系統。則即方便了前臺應用程序的配置效率,又提高了數據庫服務器的安全性。總之,我們的目的就是要限制以數據庫管理員身份連接到數據庫的用戶數量。
在其他應用服務器中,也有管理員賬戶與普通賬戶之分。在權限分配的時候,也最好只給用戶授予其需要的最小權限,以保障數據庫服務器的安全。
二、取消默認賬戶不需要的權限
在建立賬戶的時候,服務器往往給給其一些默認的權限。如在數據庫中,Public是授予每個用戶的默認角色。任何用戶,只要沒有指定具體的角色,則其都可以授予Public組的權限。這其中,還包括執行各種SQL語句的權限。如此,用戶就有可能利用這個管理漏洞,去訪問那些不允許他們直接訪問的包。因為這個默認權限,對于那些需要他們并且需要合適配置和使用他們的應用來說,是非常有用的,所以,系統默認情況下,并沒有禁止。但是,這些包可能不適合與其他應用。故,除非絕對的需要,否則就應該從默認缺陷中刪除。#p#
也就是說,通常某個賬戶的默認權限,其是比較大的。如對于數據庫來說,其賬戶的默認權限就是可以訪問所有的非系統對象表。數據庫設計的時候,主要是為了考慮新建用戶的方便。而且,新建用戶的時候,數據庫確實也無法識別這個用戶到底能夠訪問哪些用戶對象。但是,對于企業應用系統來說,若給每個員工都默認具有這么大的訪問權限,那則是很不安全的。
筆者的做法是,會把應用系統的默認用戶權限設置為最小,有些甚至把默認用戶權限全部取消掉。這就迫使服務器管理員在建立賬戶的時候,給賬戶指定管理員預先設定的角色。這就可以有效的防止管理員“偷懶”。在建立賬戶的時候,不指定角色。
三、正確的鑒別客戶端
正確的鑒別客戶端的合法性,這是提高應用服務器安全性的一個不二法則。有時候,為了服務器安全性考慮,必須要求對客戶端的合法性進行鑒別。對此,我們可以通過如下措施來管理客戶端。
一是對于具有管理員賬戶的角色進行遠程鑒別。雖然從理論上說,可以對任何一臺客戶端都采取遠程鑒別,如通過主機名或者IP地址進行合法性鑒別。但是,這么做的話,往往太過于小題大做,會增加管理上的煩惱。或者說,投入與回報不成正比。所以,在實際配置中,筆者不會對每一臺客戶端都進行合法性驗證。而只對于利用管理員賬戶登陸服務器的客戶端才進行合法性驗證。如可以在數據庫服務器上進行設置,只有哪幾個IP地址才可以通過管理員角色連接到數據庫系統中。通過對客戶端身份的合法鑒別,就可以再進一步提高數據庫服務器管理員角色賬戶的安全性。即使管理員賬戶與口令被竊取,有客戶端身份驗證這一功能,也不怕他們進行非法攻擊。
二是不要太過于相應客戶端的自我保護功能。如在某個品牌的數據庫系統中,有一種遠程鑒別功能。他會處理連接到數據庫的遠程客戶的用戶鑒別問題。數據庫絕對信任任何客戶都已經進行了正確的鑒別。但是,我們都知道,在任何情況下,我們不能夠相信客戶端會正確地執行操作系統鑒別。故,往往這個安全特性只是作為擺設。對于數據庫服務器來說,一個比較安全的做法是,不采用這種遠程鑒別功能,而是在服務器上對客戶端進行統一的鑒別。如在服務器上,通過身份認證功能來確保連接到服務器上的客戶端的合法性與真實性。
四、數據庫系統最好不要穿透防火墻
如果把數據庫服務器放置在防火墻的后面,則最好在任何情況下,都不要穿透該防火墻。否則的話,會讓數據庫系統失去防火墻的保護,從而把數據庫暴露在互聯網下,成為眾多黑客茶余飯后“調戲”、“攻擊”的對象。
例如,不要打開數據庫的1521端口來與互聯網進行連接。如果用戶執意要這么做的話,則會引起很多重要的安全弱點。因為攻擊者可以憑借這個弱點,打開更多的穿透防火墻的端口、多線程操作系統服務器的問題,以及泄漏防火墻后面應用服務器中的重要信息。再者,這個弱點還有可能被用來探測數據庫服務器的關鍵細節,如利用竊聽監聽器來獲得關鍵信息。因為監聽器會監聽該數據庫的運行軌跡、登陸信息、標識信息、數據庫描述服務以及服務名等等。
所以,執意把放在企業防火墻背后的應用服務器中的某個關鍵端口,設置成為穿透防火墻的端口是一種很不好的安全習慣。雖然其可以帶來管理上的方便,但是,出于安全考慮,筆者還是不建議管理員進行如此的配置。
您正在閱讀:數據庫服務器安全權限的控制策略
【編輯推薦】