DATABASE VAULT授權的安全隱患
在前面一篇文章中討論DATABASE VAULT和授權之間的關係,隨後想到了一點安全隱患。
DATABASE VAULT對許可權的影響:http://yangtingkun.itpub.net/post/468/476369
還是利用上一篇文章的例子:
SQL> SELECT * FROM V$OPTION
2 WHERE PARAMETER = 'Oracle Database Vault';
PARAMETER VALUE
---------------------------------------- ------------------------------
Oracle Database Vault TRUE
SQL> SELECT * FROM V$VERSION;
BANNER
-------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for 32-bit Windows: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
建立3個使用者:
SQL> SHOW USER
USER 為 "DVSYS"
SQL> GRANT CONNECT TO U1 IDENTIFIED BY U1;
授權成功。
SQL> GRANT CONNECT TO U2 IDENTIFIED BY U2;
授權成功。
SQL> GRANT CONNECT TO U3 IDENTIFIED BY U3;
授權成功。
SQL> CONN SYS@YTK111 AS SYSDBA
輸入口令: ****
已連線。
SQL> GRANT RESOURCE TO U1;
授權成功。
SQL> GRANT SELECT ANY TABLE TO U3;
授權成功。
SQL> CONN U1/U1@YTK111
已連線。
SQL> CREATE TABLE T (ID NUMBER);
表已建立。
SQL> GRANT SELECT ON T TO U2;
授權成功。
在預設情況下U2和U3都可以訪問U1的表,以為U2被U1直接授權訪問T表,而U3具有SELECT ANY TABLE系統許可權:
SQL> CONN U2/U2@YTK111
已連線。
SQL> SELECT * FROM U1.T;
未選定行
SQL> CONN U3/U3@YTK111
已連線。
SQL> SELECT * FROM U1.T;
未選定行
下面將U1放到REALM中:
SQL> CONN DVSYS@YTK111
輸入口令: ****
已連線。
SQL> EXEC DBMS_MACADM.CREATE_REALM('R_U1', 'REALM FOR U1', 'Y', 0)
PL/SQL 過程已成功完成。
SQL> EXEC DBMS_MACADM.ADD_OBJECT_TO_REALM('R_U1', 'U1', '%', '%')
PL/SQL 過程已成功完成。
再次透過U2和U3訪問U1的T表:
SQL> CONN U2/U2@YTK111
已連線。
SQL> SELECT * FROM U1.T;
未選定行
SQL> CONN U3/U3@YTK111
已連線。
SQL> SELECT * FROM U1.T;
SELECT * FROM U1.T
*
第 1 行出現錯誤:
ORA-01031: 許可權不足
REALM已經禁止了SELECT ANY TABLE許可權,而直接授權仍然可以訪問。
SQL> CONN SYS@YTK111 AS SYSDBA
輸入口令: ****
已連線。
SQL> GRANT SELECT ON U1.T TO U3;
GRANT SELECT ON U1.T TO U3
*
第 1 行出現錯誤:
ORA-00604: 遞迴 SQL 級別 1 出現錯誤
ORA-47401: grant object privilege (在 U1.T 上) 的領域違規
ORA-06512: 在 "DVSYS.AUTHORIZE_EVENT", line 55
ORA-06512: 在 line 31
可以看到,利用SYS來直接授權是被REALM所禁止的。
到目前而止都是重複上一篇文章的例子,而且目前看來資料也是安全的,SYS也好,U3也好都不能透過SELECT ANY TABLE來直接獲取REALM所包含的U1使用者下的T表。而且SYS也沒有許可權來將U1的T表的查詢許可權直接授權給其他使用者,那麼U1使用者下的物件確實是很安全的。
問題不是出在這裡,問題在於SYS可以對其他沒有被REALM保護的物件授予直接訪問的許可權:
SQL> GRANT RESOURCE TO U2;
授權成功。
SQL> CONN U2/U2@YTK111
已連線。
SQL> CREATE TABLE T (ID NUMBER);
表已建立。
SQL> CONN SYS@YTK111 AS SYSDBA
輸入口令: ****
已連線。
SQL> GRANT SELECT ON U2.T TO U3;
授權成功。
下面將U2使用者使用REALM保護起來:
SQL> CONN DVSYS@YTK111
輸入口令: ****
已連線。
SQL> EXEC DBMS_MACADM.ADD_OBJECT_TO_REALM('R_U1', 'U2', '%', '%')
PL/SQL 過程已成功完成。
SQL> CONN U3/U3@YTK111
已連線。
SQL> SELECT * FROM U2.T;
未選定行
SQL> SELECT * FROM U1.T;
SELECT * FROM U1.T
*
第 1 行出現錯誤:
ORA-01031: 許可權不足
可以看到,同樣是被REALM所保護的U1和U2,由於U2的表在被REALM保護之前,被DBA使用者直接授權給其他使用者,使得REALM保護後,U2的表仍然可以被其他使用者所訪問。這種直接授權並不會被取消,Oracle不會判斷,這個直接授權是使用者自己進行的授權,還是其他許可權使用者執行的授權。所以這裡存在著安全隱患。DBA雖然無法透過ANY許可權進行訪問,但是可以透過提前顯式授權的方式,留下一個後門。
因此使用者或物件被REALM保護後,並非一定是安全的,應該在REALM保護髮生後,徹底檢查所有的授權,確保當前所有的顯式授權都是合法的,否則就會留下安全的隱患。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-524926/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Autodesk Vault: 獲取授權失敗
- Audit Vault and Database VaultDatabase
- 運維安全隱患運維
- LMCompatibilityLevel 安全隱患
- oracle顯式授權和隱式授權Oracle
- ORACLE database vaultOracleDatabase
- Laravel Bindings 的一處安全隱患Laravel
- 如何消除MySQL賬號的安全隱患MySql
- 免費WIFI的安全隱患——資訊圖WiFi
- Windows 2000 的安全隱患 (轉)Windows
- Uninstall database vaultDatabase
- iOS開發如何避免安全隱患iOS
- 全面降低windows系統的安全隱患(五)Windows
- 免費代理IP有哪些安全隱患
- 設計院如何解決安全隱患?
- 初識 "Oracle Database Vault"OracleDatabase
- 去除windows身份認證帶來的安全隱患Windows
- 杜絕安全隱患 容易忽視的Oracle安全問題(轉)Oracle
- 無線安全隱患分析:使用者位置隱私曝光
- HTML框架的隱患HTML框架
- 自籤SSL證書有哪些安全隱患
- 公交wifi隱患多,安全問題堪憂WiFi
- 讓員工成為安全解決方案,而非安全隱患
- 海外 | 威脅物聯網的7大安全隱患
- 郵件安全隱患及其防範技術研究
- 用於安全授權的DevSecOpsdev
- Istio安全-授權(實操三)
- RSA2010:雲安全需急迫解決的安全隱患
- 解構IoT安全隱患,探尋安全防護部署新思路
- 關於Oracle Database Vault介紹OracleDatabase
- Database Vault(DBV)和領域管理Database
- 從客戶端遊戲漏洞看開發中的安全隱患客戶端遊戲
- 數字化醫療建設中的網路安全隱患
- 關於區塊鏈技術安全隱患的解決方案區塊鏈
- 儲存網路在企業應用中的安全隱患
- Linux需要防毒軟體嗎?存在安全隱患嗎?Linux防毒
- WebApi系列~HttpClient的效能隱患WebAPIHTTPclient
- DNS安全問題有哪些?DNS系統存在哪些安全隱患?DNS