前言:Oracle資料庫和SQL Server資料庫是兩種應用比較普遍的資料庫,在業界,人們普遍認為Oracle資料庫的安全性要比SQL Server資料庫高,但實際情況Oracle資料庫和SQL Server資料庫二者又有著怎麼的差別,下面筆者就來談談這兩種資料庫在安全性設計上面的異同。掌握好這些內容,對於我們進行資料庫安全方面的設計與管理,有著舉足輕重的作用。
一、角色到使用者的授權。
現在很多應用軟體,包括資料庫系統,都採用了角色到使用者的授權體系。也就是說,先給一個角色進行授權,然後再把使用者加入到這個角色中,讓其擁有這個角色的許可權。
如我們在資料庫設計的時候,一般至少需要兩種角色,一種是系統管理員角色,這種角色具有對資料庫系統進行管理,如表的建立與刪除、使用者的建立與修改等等。另外一種是普通使用者的角色,其可以對錶進行插入、修改、刪除記錄等等的操作。然後,我們建立兩個帳戶,一個是資料庫管理員帳戶,讓其隸屬於管理員角色;再建立一個使用者帳號,讓其歸屬於使用者角色。如此,不用給使用者佈建特別的許可權,他們就從他們的角色中,繼承了相關的許可權。這就是基於角色-使用者的許可權管理體系。
這個許可權管理體系,兩種資料庫都是支援的,只不過具體的叫法有差異。
在SQL Sever資料庫中,其沿用的是微軟作業系統的叫法,把角色稱做組。其實,我們在給作業系統定義使用者與許可權的時候,也是採用這種方法,我們先建立一個組,再給這個組賦予特定的許可權,然後,再建立一個使用者帳號加入到這個組中即可。雖然兩個資料庫的叫法不同,但是,其本質是一樣的,換湯不換藥而已。
兩者的差異主要體現在對特定角色的授權方面。
二、角色的授權。
兩個資料庫雖然在“角色-授權” 方面雷同,但在具體角色許可權的分配上,還是有比較大的差異。用一句話來總結,就是Oracle在許可權的分配上,要比SQL Server資料庫細。Oracle在許可權控制方面,基本上可以細化到每個步驟。
如在使用者管理上面,Oracle資料庫可以把建立使用者帳號的權利給某個組,但是,這個組卻沒有刪除帳號的權利。而微軟的資料庫中,則一般是把使用者管理的許可權,包括使用者建立與刪除當作一個許可權賦予給某個組,而不能把他們分開。也就是說,一個組若具有使用者帳號系統管理權限的話,其不僅可以建立使用者帳號,而且,也可以刪除使用者帳號。也就是說,微軟的SQL Server資料庫在許可權設計上,沒有分得像Oracle那麼細。正因為如此,所以Oracle資料庫在許可權管理上面,要比SQL Server資料庫靈活。
不光在帳戶管理上如此,資料庫很多個物件許可權的管理,也有類似現象。如對於預存程序的管理,對於表格的管理等等。甲骨文的Oracle資料庫在許可權劃分上,比其他資料庫都要細。