Oracle DV和OLS以及VPD的區別(轉)
Database Vault概述
對於現在資料的許可權和安全管理有一個基本的原則就是分離權責,即IT系統的超級使用者不應該同時又是應用系統的超級使用者,但是傳統的資料庫體系結構卻並不支 持這樣的分離,因為DBA使用者一般都能夠檢視和修改資料庫裡的任何資料,這就使DBA使用者也同時成為了企業資料安全的薄弱環節。當然也可以使用某種加密算 法來加密資料從而防止超級使用者檢視修改資料,但是這樣做也有相應的缺點,一是所有使用者(包括有許可權使用者)想看資料的時候都要經過解密;二是一般而言加密會 多少影響程式的效能。Oracle 的Database Vault就是為了解決DBA使用者(或者其他超級使用者)的安全問題而設計出來的。
下面通過一個簡單的例子來說明DatabaseVault的一個簡單的思想:在DatabaseVault的設計裡,一旦對某一個應用使用了 DatabaseVault選項,則SYSTEM/SYS只擁有對sys的超級使用者許可權(也就是說DBA可以管理資料庫),但是卻沒有對其他使用者下的資料 的操作檢視權力(除非把DBA使用者顯示地增加到其他應用的授權區域(REALMS))。這樣,每一個應用都擁有自己資料的超級使用者,該應用的超級使用者可以 修改檢視自己的資料,卻不能檢視別的應用的資料,甚至連DBA使用者都不能檢視其他應用的資料。
如上圖所示:SYSTEM可以操作sys下的物件,可以管理資料庫,比如增加資料檔案等,但是一旦他想檢視HR資料和SALES資料,則會給 DatabaseVault阻擋;同樣的,HR應用和SALES應用的DBA擁有自己資料的操作許可權,卻無法操作別的應用的資料。這樣就達到了權責的分 離。
DatabaseVault和VPD(虛擬資料庫),OLS(Label Security)的區別
VPD是Oracle資料庫裡最早出現帶來額外資料安全的選項,VPD在做託管的應用裡,不同使用者的資料都存在同一個表裡,但是VPD自動給該使用者發出的 SQL語句增加一個where條件(類似於where username=:sessionusername的方式)來達到不同的使用者檢視同一個表不同部分的目的。
而OLS(標籤安全選項)則提供了更加細緻的授權方式,通過對每一列資料加註標籤,並給使用者規定組(group),部門(compartment)等,可以提供組,部門和資料標籤之間的訪問控制關係,比VPD提供了更加複雜的許可權模型。
但是DatabaseVault和VPD已經OLS都不一樣,DatabaseVault是把整個表物件和對該表能使用的命令置於一個被保護的“城堡”當 中,而不是作用於一個表的單獨的行。只有被授權進入城堡的人才可以使用特定的命令操作該物件,而“城堡”外的人(即使是DBA)也不能使用某個被包含的特 定命令操作該物件。
對於現在資料的許可權和安全管理有一個基本的原則就是分離權責,即IT系統的超級使用者不應該同時又是應用系統的超級使用者,但是傳統的資料庫體系結構卻並不支 持這樣的分離,因為DBA使用者一般都能夠檢視和修改資料庫裡的任何資料,這就使DBA使用者也同時成為了企業資料安全的薄弱環節。當然也可以使用某種加密算 法來加密資料從而防止超級使用者檢視修改資料,但是這樣做也有相應的缺點,一是所有使用者(包括有許可權使用者)想看資料的時候都要經過解密;二是一般而言加密會 多少影響程式的效能。Oracle 的Database Vault就是為了解決DBA使用者(或者其他超級使用者)的安全問題而設計出來的。
下面通過一個簡單的例子來說明DatabaseVault的一個簡單的思想:在DatabaseVault的設計裡,一旦對某一個應用使用了 DatabaseVault選項,則SYSTEM/SYS只擁有對sys的超級使用者許可權(也就是說DBA可以管理資料庫),但是卻沒有對其他使用者下的資料 的操作檢視權力(除非把DBA使用者顯示地增加到其他應用的授權區域(REALMS))。這樣,每一個應用都擁有自己資料的超級使用者,該應用的超級使用者可以 修改檢視自己的資料,卻不能檢視別的應用的資料,甚至連DBA使用者都不能檢視其他應用的資料。
如上圖所示:SYSTEM可以操作sys下的物件,可以管理資料庫,比如增加資料檔案等,但是一旦他想檢視HR資料和SALES資料,則會給 DatabaseVault阻擋;同樣的,HR應用和SALES應用的DBA擁有自己資料的操作許可權,卻無法操作別的應用的資料。這樣就達到了權責的分 離。
DatabaseVault和VPD(虛擬資料庫),OLS(Label Security)的區別
VPD是Oracle資料庫裡最早出現帶來額外資料安全的選項,VPD在做託管的應用裡,不同使用者的資料都存在同一個表裡,但是VPD自動給該使用者發出的 SQL語句增加一個where條件(類似於where username=:sessionusername的方式)來達到不同的使用者檢視同一個表不同部分的目的。
而OLS(標籤安全選項)則提供了更加細緻的授權方式,通過對每一列資料加註標籤,並給使用者規定組(group),部門(compartment)等,可以提供組,部門和資料標籤之間的訪問控制關係,比VPD提供了更加複雜的許可權模型。
但是DatabaseVault和VPD已經OLS都不一樣,DatabaseVault是把整個表物件和對該表能使用的命令置於一個被保護的“城堡”當 中,而不是作用於一個表的單獨的行。只有被授權進入城堡的人才可以使用特定的命令操作該物件,而“城堡”外的人(即使是DBA)也不能使用某個被包含的特 定命令操作該物件。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7734298/viewspace-709421/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【SSL】OV、DV和EV證書的區別
- (轉)ORACLE 中IN和EXISTS的區別Oracle
- 【轉】oracle_base 和 oracle_home 的區別Oracle
- 在Oracle中session和process的區別(轉)OracleSession
- ORACLE VPD方案Oracle
- ORACLE VPD AND FGAOracle
- Oracle - @和@@、&與&& 的區別Oracle
- MySQL和Oracle的區別MySqlOracle
- Oracle和MySQL的區別OracleMySql
- js中==和===的區別以及總結JS
- ==和is的區別 以及編碼和解碼
- mybatis collection解析以及和association的區別MyBatis
- Android中 @和?區別以及?attr/**與@style/**等的區別Android
- (轉)資料庫oracle for update of和for update區別資料庫Oracle
- oracle VPD介紹Oracle
- apply 、call 以及 bind 的使用和區別APP
- Oracle User 和 Schema 的區別Oracle
- Oracle Purge和drop的區別Oracle
- oracle中in和exists的區別Oracle
- go的 & 和 * 的區別,以及應用場景Go
- 異常-throw的概述以及和throws的區別
- 【轉】mysql 和 redis的區別MySqlRedis
- HttpRequest 和HttpWebRequest的區別(轉)HTTPWeb
- 轉:SAN和NAS的區別
- Latch和Lock的區別(轉)
- editchanged 和 itemchanged 的區別(轉)
- JavaScript和Java的區別(轉)JavaScript
- Oracle的redo 和undo的區別Oracle
- 轉發和重定向的區別(轉)
- Maven和Ant簡介以及兩者的區別Maven
- 【JAVA】Class.forName用法以及和new的區別Java
- oracle中merge的用法,以及各版本的區別 CreateOracle
- ORACLE_BASE和ORACLE_HOME的區別Oracle
- Oracle DBA 和Oracle EBS DBA 的最大區別Oracle
- Oracle dba角色和sysdba的區別Oracle
- Oracle 和 mysql的9點區別OracleMySql
- oracle中distinct和group by的區別Oracle
- oracle中 DG和GG的區別Oracle