賬戶方案系統角色多管齊下保障Oracle的安全
一、賬戶與系統角色結合,提高了賬戶的安全性。
賬戶是定義在數據庫系統中的一個名稱,它是數據庫的基本訪問控制機制。當連接到Oracle數據庫時,跟其他數據庫一樣,需要用戶輸入用戶名與密碼。數據庫系統就是憑借這個用戶名來授予其相應的數據庫訪問權限。不過,這跟其他數據庫又有所不同。因為Oracle數據庫有有一類很特殊的賬戶-特權賬戶。這些特權賬戶具有某些比較特殊的權限。為了數據庫的安全,他們除了在數據庫中要擁有某些特定的權限之外,還必須擁有操作系統對應的權限。數據庫與操作系統一起,來保障數據庫的安全。
如在Oracle數據庫中,主要有兩類特權用戶,分別為SYSDBA與SYSOPER。這兩類用戶主要用用來執行一些特殊的作業。如啟動關閉數據庫、建立數據庫、備份與恢復操作等等。這些作業明顯會直接影響到數據庫的正常作業;而且備份恢復操作還直接跟數據庫數據安全息息相關。為了保障這些特權賬戶的安全,Oracle數據庫還采用了一些特殊機制。如Oracle要求,除了在數據庫中要擁有對應的權限之外,還必須在操作系統中也是某些特定角色的成員。例如,Oracle數據庫若是部署在微軟的操作系統下,則安全成功后,在操作系統的角色中,會多SYSDBA與OSOPER兩個組。特權賬戶必須要屬于這兩個組,才能夠進行如上所述的一些數據庫維護作業。同理,在Linux等其他操作系統平臺下,也需要具有類似的權限。通過這種策略,特權賬戶的安全就又多了一個保障。如數據庫管理員只想使用特權賬戶SYSDBA來管理維護數據庫,而不需要SYSOPER賬戶。此時,數據庫管理員就有兩個選擇。要么在數據庫中禁用這個賬戶;要么在操作系統中把這個賬戶從Oracle建立的組中剔除出去。
雖然SYSOPER與SYSDBA賬戶都是屬于特權賬戶,但是他們的權限還是由差異的。如特權賬戶SYSDBA具備了特權賬戶SYSOPER的所有權限之外,還具有建立數據庫、執行不完全恢復等權限。同時,前者還自動具備了DBA角色的所有權限;而后者則不具備DBA角色的權限。為了數據庫庫的安全,通常情況下不能夠把這些特權賬戶的權限賦予給其他用戶。雖然可以通過更改初始化參數來突破這個限制,但是出于數據庫的安全考慮,我們都不建議這么處理。
可見,特權賬戶與操作系統固定權限結合,雙管齊下,來保障數據庫的安全,這是Oracle數據庫的一個突破。其在很大程度上,提高了特權賬戶的安全性。若是普通賬戶,則沒有這方面的限制。
二、賬戶與方案一一對應保障Oracle安全。
除了賬戶與系統角色結合,來提高賬戶安全性之外,Oracle數據庫另外一個值得稱頌的地方就是把賬戶與方案聯系起來,進一步提高了賬戶的安全性。
在Oracle數據庫中,方案是用戶所擁有數據庫對象的集合。這是因為在Oracle數據庫中對象是以用戶來組織的,用戶與方案是一一對應的,并且兩者所使用的名稱相同。利用Oralce數據庫與實例安裝完成后,其默認情況下有兩個用戶,分別為SYSTEM與SCOTT。他們分別對應了兩個方案SYSTEM與SCOTT。Oracle數據庫就是賬戶與方案一起,來提高數據庫訪問的安全性。
如用戶可以直接訪問其自己的方案對象,但是如果需要訪問其他用戶的方案對象時,則需要具有相關的權限。如用戶SCOTT,其方案SCOTT下所有的數據庫對象都可以進行訪問。但是,如果SCOTT用戶想訪問方案SYSTEM下面的數據庫對象,則需要先經過用戶SYSTEM進行授權。如果他沒有把這個訪問的權限授權給SCOTT的話,則用戶SCOTT就無法訪問方案SYSTE下面的任何一個數據庫對象。所以,方案就好像一個個保護罩,又把數據庫邏輯的分割成幾個獨立的區域。這個區域的主人可以任意訪問內部的任何數據庫對象。若其他用戶想要訪問這個區域的話,則必須要先經過這個區域主人的授權。這一個個區域(方案)是用戶的私人領地,未經允許他人不得進入。通過這種方式,用戶就可以保護自己所建立數據對象的安全。
在使用方案是,需要注意一些細節方面的問題。如在同一個方案中,不能夠存在同名的對象;但是在不同的方案中,不同用戶可以建立同名的對象。還有當某個用戶要訪問其他方案的對象時,必須加入方案名最為前綴。也就說,要在數據庫對象名之前加入主人的名字。這些是硬性規則,不能夠打折扣。
三、新用戶沒有任何數據庫操作權限。
Oracle賬戶與SQLServer賬戶還有一個不同之處。就是在Oracle數據庫中建立新賬戶后,默認情況下,這個賬戶不具備任何數據庫操作的權限。但是,在SQLServer中則不同。在SQLServer中,若建立賬戶,其默認會繼承一定的權限。
在Oracle數據庫中,常常通過采用數據庫驗證的方式來建立數據庫用戶。采取這個方式,其優勢是非常明顯的。如用戶賬戶與其身份驗證都是由數據庫控制,而不要借助任何的外部力量。另外,數據庫系統還提供了嚴格的口令管理策略以加強口令的安全性,還提供了諸如賬戶鎖定、口令有效期等安全策略。
在建立賬戶的時候,主要通過三個措施來提高新建賬戶的安全性。
一是初始建立的數據庫賬戶并不具有任何的權限,不能夠執行任何的數據庫操作。如連連接數據庫的權限都沒有,需要另外配置權限。這雖然增加了一些維護的工作量,但是畢竟提高了初始賬戶的安全性能給。因為賬戶的建立不會經常發生,所以相比數據庫安全來說,這點付出還是值得的。
二是在新建賬戶時,必須要為數據庫賬戶設置密碼,不能夠使用空密碼。這是一個很好的安全措施,因為空口令的賬戶是數據庫安全的一個定時炸彈。據筆者所知,在SQLServer數據庫中就好像沒有類似的限制。數據庫管理員在建立新賬戶時可以不設置初始化密碼,這是非常危險的操作方法。
三是通過表空間配額來限制其創建數據庫庫對象的權利。在建立用戶時,如果沒有為新用戶指表空間配額,則用戶在特定的表空間上的配額就為0。也就是說,用戶在這個表空間上沒有存儲的空間。為此,這個用戶當然就無法在這個表空間上建立數據對象。即使后續通過權限賦予其足夠的權限,其最多只是查詢、使用數據庫對象,而無法創建屬于自己的數據庫對象。這也是提高新建用戶安全性的措施之一。用戶不能夠隨便在表空間中建立數據庫對象,有利于保證數據庫的干凈。另外需要說明的是,如果在建立賬戶的時候,沒有給用戶指定具體的表空間,則其默認的表空間為System表空間。這看起來是一個很危險的操作,其實卻不然。因為上面筆者談到過,用戶若要訪問其他用戶所創建的方案時,必須擁有其他用戶的相應授權。所以雖然新用戶屬于System表空間,但是不一定說其可以訪問System表空間中的數據庫對象。若要訪問,還需要用戶進行分別授權。
可見,賬戶與方案這一一對應的關系,在很大程度上提高了賬戶的安全性。而特權賬戶與操作系統角色結合,也限制了特權賬戶的操作權限。這些措施,都有利于提高數據庫賬戶的安全。賬戶、方案、系統角色多管齊下,保障了Oracle數據庫的安全。
相關文章: