一、賬戶與系統角色結合,提高了賬戶的安全性。
賬戶是定義在資料庫系統中的一個名稱,它是資料庫的基本存取控制機制。當串連到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下面的任何一個資料庫物件。所以,方案就好像一個個保護罩,又把資料庫邏輯的分割成幾個獨立的地區。這個地區的主人可以任意訪問內部的任何資料庫物件。若其他使用者想要訪問這個地區的話,則必須要先經過這個地區主人的授權。這一個個地區(方案)是使用者的私人領地,未經允許他人不得進入。通過這種方式,使用者就可以保護自己所建立資料對象的安全。
在使用方式情節是,需要注意一些細節方面的問題。如在同一個方案中,不能夠存在同名的對象;但是在不同的方案中,不同使用者可以建立同名的對象。還有當某個使用者要訪問其他方案的對象時,必須加入方案名最為首碼。也就說,要在資料庫物件名之前加入主人的名字。這些是硬性規則,不能夠打折扣。