
為秦州等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及秦州網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、秦州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
Oracle Database Vault
TOC \o "1-3" \h \z \uOracle Database Vault PAGEREF _Toc518292867 \h1
1. 參考... PAGEREF _Toc518292868 \h1
2. 簡(jiǎn)介... PAGEREF _Toc518292869 \h1
3. Vault組成部分... PAGEREF _Toc518292870 \h2
3.1. Oracle Database Vault訪問控制組件... PAGEREF _Toc518292871 \h2
3.2. Oracle Database Vault管理員(DVA) PAGEREF _Toc518292872 \h3
3.3. Oracle Database Vault 配置助手 (DVCA) PAGEREF _Toc518292873 \h3
3.4. Oracle Database Vault DVSYS and DVF Schemas. PAGEREF _Toc518292874 \h3
3.5. Oracle Database Vault PL/SQL 接口和包... PAGEREF _Toc518292875 \h4
3.6. Oracle Database Vault 和Oracle Label Security PL/SQL APIs. PAGEREF _Toc518292876 \h4
3.7. Oracle Database Vault 報(bào)告和監(jiān)控工具... PAGEREF _Toc518292877 \h4
4. Vault安裝... PAGEREF _Toc518292878 \h4
4.1. 檢查是否已安裝... PAGEREF _Toc518292879 \h4
4.2. 關(guān)閉數(shù)據(jù)庫(kù)及相關(guān)服務(wù)... PAGEREF _Toc518292880 \h5
4.3. 組件編譯... PAGEREF _Toc518292881 \h5
4.4. 調(diào)用dbca部署... PAGEREF _Toc518292882 \h5
4.5. 啟動(dòng)DBV配置界面... PAGEREF _Toc518292883 \h6
4.6. 結(jié)論... PAGEREF _Toc518292884 \h6
5. 案例介紹... PAGEREF _Toc518292885 \h7
5.1. 示例1:只允許在非業(yè)務(wù)時(shí)間執(zhí)行drop命令... PAGEREF _Toc518292886 \h7
5.2. 實(shí)例2:只允許用戶使用特定工具(應(yīng)用)登錄數(shù)據(jù)庫(kù)... PAGEREF _Toc518292887 \h8
5.3. 實(shí)例3:使用Dual Key安全功能... PAGEREF _Toc518292888 \h9
6. 詳說(shuō)Oracle Vault——使用數(shù)據(jù)泵工具... PAGEREF _Toc518292889 \h10
6.1. Data Pump與Vault PAGEREF _Toc518292890 \h11
6.2. 默認(rèn)行為配置... PAGEREF _Toc518292891 \h11
6.3. 額外授權(quán)... PAGEREF _Toc518292892 \h11
6.4. 導(dǎo)入敏感數(shù)據(jù)動(dòng)作... PAGEREF _Toc518292893 \h12
6.5. 結(jié)論與討論... PAGEREF _Toc518292894 \h12
7. Vault卸載... PAGEREF _Toc518292895 \h13
7.1. 卸載前準(zhǔn)備... PAGEREF _Toc518292896 \h13
7.2. Disable Vault PAGEREF _Toc518292897 \h13
7.3. 數(shù)據(jù)庫(kù)中操作... PAGEREF _Toc518292898 \h14
7.4. 結(jié)論... PAGEREF _Toc518292899 \h15
詳說(shuō)Oracle Vault——原理、安裝與配置
https://www.linuxidc.com/Linux/2014-05/101108.htm
使用技術(shù)手段限制DBA的危險(xiǎn)操作—Oracle Database Vault
https://www.cnblogs.com/raobing/p/6174551.html
官方文檔
http://www.oracle.com/technetwork/cn/tutorials/datavault-094096-zhs.html
Oracle數(shù)據(jù)安全解決方案
https://www.linuxidc.com/Linux/2011-12/48689p2.htm
Oracle數(shù)據(jù)庫(kù)作為目前最成熟的商業(yè)數(shù)據(jù)庫(kù),在穩(wěn)定其核心功能的同時(shí)也針對(duì)數(shù)量眾多的用戶群提出了很多安全運(yùn)維工具解決方案。在數(shù)據(jù)層面,Oracle有三個(gè)代表新的技術(shù):Virtual Private Database(VPD)、Label Security和Oracle Vault。
VPD主要是針對(duì)解決應(yīng)用層面的數(shù)據(jù)訪問需求添加數(shù)據(jù)訪問權(quán)限,對(duì)SYS無(wú)效,
Label Security是VPD某種程度的拓展升級(jí)。
Oracle Database Vault(DV)主要是對(duì)Oracle數(shù)據(jù)庫(kù)保護(hù)敏感數(shù)據(jù)和職責(zé)分離。將數(shù)據(jù)安全責(zé)任從用戶甚至sys身上剝離出去,進(jìn)行細(xì)粒度的安全責(zé)任分配。作為Oracle數(shù)據(jù)庫(kù)的一個(gè)可選組件,Vault是需要額外的文件鏈接、注冊(cè)和安裝的。安裝vault之后,Oracle會(huì)去創(chuàng)建一個(gè)全新的用戶dbvowner,原有的sys對(duì)一些數(shù)據(jù)的操作和訪問權(quán)限,也都有進(jìn)行控制的可能。
Vault中的三個(gè)核心要素:Realm(領(lǐng)域)、Factor(因素)和規(guī)則(Rule)。從數(shù)據(jù)對(duì)象、操作s命令等多個(gè)方面來(lái)限制或者保護(hù)特定的對(duì)象。
DV保護(hù)敏感數(shù)據(jù)主要通過(guò)Realm(安全域),Realm可以簡(jiǎn)單理解為敏感數(shù)據(jù)的集合,DV通過(guò)realm的配置來(lái)指定用戶是否可以訪問Realm保護(hù)的數(shù)據(jù),如果在DV中沒有給訪問權(quán)限,即使是sysdba也無(wú)權(quán)訪問受Realm保護(hù)的數(shù)據(jù),這是DV的核心功能.
DV還有一個(gè)很重要的功能,Command Rules,就是可以按一定的判斷條件,允許或阻止數(shù)據(jù)庫(kù)用戶執(zhí)行DDL、DML以及DCL命令,而且對(duì)特權(quán)用戶,包括sysdba都有效。這個(gè)功能正好可以滿足我們限制dba的需求。
Factor(認(rèn)證因子)就是可以用于進(jìn)行條件判斷的因素,比如客戶端主機(jī)名,客戶端IP等等,Oracle內(nèi)置了一些常用的Factor,用戶也可以自己創(chuàng)建Factor,F(xiàn)actor可以是一個(gè)表達(dá)式,也可以是一個(gè)存儲(chǔ)過(guò)程的返回值。
Rule Sets簡(jiǎn)單說(shuō)就是判斷條件的集合,類似SQL的where之后的判斷條件,當(dāng)規(guī)則集的判斷條件返回為true時(shí),DV允許用戶訪問數(shù)據(jù)或執(zhí)行特定的命令。Rule sets中的Rule可以引用Factor做判斷。
Oracle Database Vault包含如下部分:
1) Oracle Database Vault訪問控制組件
2) Oracle Database Vault管理員組件(DVA)
3) Oracle Database Vault配置助手(DVCA)
4) Oracle Database Vault DVSYS和 DVF Schemas
5) Oracle Database Vault PL/SQL接口和開發(fā)包
6) Oracle Database Vault和Oracle Label Security PL/SQL APIs
7) Oracle Database Vault監(jiān)控和報(bào)告工具
Oracle Database Vault使你能夠創(chuàng)建如下組件來(lái)保護(hù)你的數(shù)據(jù)庫(kù)實(shí)例的安全:
域:域是需要被保護(hù)的數(shù)據(jù)庫(kù)schemal、對(duì)象、角色的一個(gè)功能上的集合。例如:你可以將和賬戶、銷售、或者人力資源相關(guān)的數(shù)據(jù)庫(kù)schemal、對(duì)象、角色組成一個(gè)域。當(dāng)你將這些組成一個(gè)域后,你可以使用域來(lái)控制賦給特定賬戶或者角色的系統(tǒng)權(quán)限的使用。這樣你就可以給任何想使用這些數(shù)據(jù)庫(kù)schemal、對(duì)象、角色的用戶提供細(xì)粒度的訪問控制。Chapter 4, "Configuring Realms"詳細(xì)討論了域。.
命令規(guī)則:命令規(guī)則是一個(gè)特殊的規(guī)則,通過(guò)這個(gè)規(guī)則,你可以控制用戶如何執(zhí)行他們能夠執(zhí)行的幾乎所有的SQL語(yǔ)句,包括SELECT, ALTER SYSTEM, database definition language (DDL),和data manipulation language (DML)語(yǔ)句.命令規(guī)則必須和規(guī)則集一起決定某個(gè)語(yǔ)句是否允許執(zhí)行。Chapter 6, "Configuring Command Rules"詳細(xì)討論了規(guī)則集.
因素:因素是一個(gè)命名變量或者屬性,例如用戶位置、數(shù)據(jù)庫(kù)IP地址、會(huì)話用戶,這些因素是Oracle Database Vault能夠識(shí)別和保護(hù)的。你可以針對(duì)用戶活動(dòng)使用這些因素,例如授權(quán)數(shù)據(jù)庫(kù)賬戶鏈接到數(shù)據(jù)庫(kù),或者創(chuàng)建過(guò)濾邏輯條件來(lái)限制數(shù)據(jù)的可見性和可管理性。每個(gè)因素可以包含一個(gè)或者多個(gè)標(biāo)識(shí),標(biāo)識(shí)是因素的具體的值。一個(gè)因素可以包含多個(gè)標(biāo)識(shí),這取決于因素的檢索方法或者它的映射邏輯。Chapter 7, "Configuring Factors"詳細(xì)討論了因素.
規(guī)則集:規(guī)則集是一個(gè)或者多個(gè)規(guī)則的集合,你可以將規(guī)則集和一個(gè)域的授權(quán)、命令規(guī)則、因素指派、或者安全應(yīng)用角色關(guān)聯(lián)起來(lái)。規(guī)則集基于其中的每個(gè)規(guī)則的計(jì)算值以及規(guī)則的計(jì)算方式(所有為真或者任意為真)。規(guī)則集中的規(guī)則是一個(gè)結(jié)果為“true”或“false”的PL/SQL表達(dá)式。Chapter 5, "Configuring Rule Sets"詳細(xì)討論了規(guī)則集。
安全應(yīng)用角色:一個(gè)安全應(yīng)用角色是一個(gè)特殊的Oracle數(shù)據(jù)庫(kù)角色,它可以基于Oracle database vault規(guī)則集的計(jì)算結(jié)果激活。Chapter 8, "Configuring Secure Application Roles for Oracle Database Vault"詳細(xì)討論了安全應(yīng)用角色。
為了加強(qiáng)這些組件的功能,Oracle Database vault提供了一系列的PL/SQL接口和包。"Oracle Database Vault PL/SQL Interfaces and Packages"提供了一個(gè)概括的介紹.
通常情況下,你要做的第一步是創(chuàng)建一個(gè)包含你想保護(hù)的schema或者數(shù)據(jù)庫(kù)對(duì)象的域,然后你就可以通過(guò)創(chuàng)建規(guī)則、命令規(guī)則、因素、標(biāo)識(shí)、規(guī)則集、安全應(yīng)用角色來(lái)保護(hù)你的域。除此以外,你可以運(yùn)行報(bào)告工具來(lái)報(bào)告這些組件監(jiān)控和保護(hù)的活動(dòng)。Chapter 3, "Getting Started with Oracle Database Vault"提供了一個(gè)簡(jiǎn)單的指南,可以使你熟悉Oracle Database Vault的功能,Chapter 16, "Oracle Database Vault Reports"提供了更多關(guān)于如何運(yùn)行報(bào)告來(lái)檢查配置和其它Oracle Database Vault完成的活動(dòng)。
Oracle Database Vault管理員是一個(gè)基于Oracle Database Vault的PL/SQL API構(gòu)建的Java程序。這個(gè)程序可以讓不熟悉PL/SQL接口的安全管理者通過(guò)友好的用戶界面來(lái)配置訪問控制策略。Oracle Database Vault管理員程序提供了眾多的安全相關(guān)的報(bào)告,這些報(bào)告可以幫助了解基準(zhǔn)的安全配置。這些報(bào)告同時(shí)也有助于指出與基準(zhǔn)配置相比,當(dāng)前配置有哪些變化。
Chapter 4到Chapter 9解釋了如何通過(guò)Oracle database Vault管理員程序來(lái)配置訪問策略,以及如何將Oracle Database Vault與其它Oracle產(chǎn)品集成起來(lái).Chapter 16, "Oracle Database Vault Reports"解釋了Oracle Database Vault報(bào)告.
為了執(zhí)行維護(hù)任務(wù),可以使用命令行工具Oracle Database Vault配置助手(DVCA).更多信息請(qǐng)參考Appendix C, "Postinstallation Oracle Database Vault Procedures".
Oracle Database Vault提供了DVSYS這個(gè)schema來(lái)存儲(chǔ)所有需要Oracle Database Vault保護(hù)的數(shù)據(jù)庫(kù)對(duì)象。DVSYS schema包含角色、視圖、賬戶、函數(shù)、以及其它Oracle Database Vault使用的數(shù)據(jù)庫(kù)對(duì)象。DVF schema包含一些公共函數(shù),這些函數(shù)用于從Oracle Database Vault訪問控制配置中讀取因素值的集合。
Chapter 10, "Oracle Database Vault Objects"詳細(xì)描述了這兩個(gè)schema.
Oracle Database Vault提供了一個(gè)PL/SQL接口和包,讓安全管理員或者應(yīng)用程序開發(fā)者按需配置訪問控制策略。PL/SQL存儲(chǔ)過(guò)程和函數(shù)使得普通的數(shù)據(jù)庫(kù)賬戶能夠在一個(gè)數(shù)據(jù)庫(kù)會(huì)話上下文中在訪問控制策略邊界里進(jìn)行操作。
參考Chapter 14, "Using the Oracle Database Vault PL/SQL Interfaces" andChapter 11, "Using the DVSYS.DBMS_MACADM Package"獲取更多信息.
Oracle Database Vault提供了能夠和Oracle Label Security集成的訪問控制能力。Oracle Label Security是和Oracle Enterprise Manager Database Control集成的,Oracle Enterprise Manager Database Control能夠讓安全管理員定義應(yīng)用到數(shù)據(jù)庫(kù)對(duì)象的標(biāo)簽安全策略。Oracle Label Security同樣提供了一組可以供數(shù)據(jù)庫(kù)應(yīng)用程序開發(fā)者用來(lái)提供標(biāo)簽安全策略的PL/SQL API
參考"Integrating Oracle Database Vault with Oracle Label Security"獲取更多關(guān)于Oracle Database Vault和Oracle Label Security如何配合的信息.參考Oracle Label Security Administrator's Guide獲取更多關(guān)于Oracle Policy Manager的信息.
你可以根據(jù)Oracle Database Vault監(jiān)控的不同的活動(dòng)來(lái)生成報(bào)告,你可以監(jiān)控策略的改變、異常的安全嘗試、數(shù)據(jù)庫(kù)配置和結(jié)構(gòu)的變化。
參考Chapter 16, "Oracle Database Vault Reports"獲取更多關(guān)于你可以生成的報(bào)告的信息.Chapter 15, "Monitoring Oracle Database Vault"解釋了如何監(jiān)控Oracle Database Vault.
默認(rèn)企業(yè)版中,Vault是不會(huì)安裝的。我們需要手工的進(jìn)行編譯、安裝,才能使用。
我們采用Oracle 11gR2進(jìn)行測(cè)試,版本號(hào)為11.2.0.4。
SQL> select * from v$version;
判斷當(dāng)前vault是否安裝,查看v$option視圖。
SQL> select * from v$option where parameter like '%Vault%';
PARAMETER VALUE
------------------------- ----------
Oracle Database Vault FALSE
在本版本中,查看均已安裝,但隨后配置塑件提示沒有安裝。
select * from v$option where parameter like '%Vault%';
select * from v$option where parameter like '%Security%';
安裝配置之前,要將數(shù)據(jù)庫(kù)、監(jiān)聽程序、DB Console關(guān)閉。
--監(jiān)聽程序
[oracle@SimpleLinux ~]$ lsnrctl stop
--Console
[oracle@SimpleLinux ~]$ emctl stop dbconsole
--Database Server
SQL> shutdown immediate;
Oracle Vault是依賴Label Security,需要在操作系統(tǒng)層面上啟動(dòng)配置。在Linux/Unix環(huán)境下,使用make進(jìn)行配置鏈接。
[oracle@SimpleLinux lib]$ cd $ORACLE_HOME/rdbms/lib
[oracle@SimpleLinux lib]$ make -f ins_rdbms.mk dv_on lbac_on ioracle
注意:如果在Exadata中需要使用IPC協(xié)議訪問存儲(chǔ),則需要加入ipc_rds協(xié)議模塊。另外如果Windows平臺(tái),則是將$ORACLE_HOME/bin目錄中oradv11.dll.dbl改名為oradv11.dll命令。
之后,重新啟動(dòng)監(jiān)聽器和服務(wù)器。
[oracle@SimpleLinux lib]$ lsnrctl start
SQL> conn / as sysdba
SQL> startup
在支持GUI的界面方式下,調(diào)用dbca啟動(dòng)編譯。
點(diǎn)擊下一步Next,選擇Configure Database Options項(xiàng)目。之后選擇目標(biāo)數(shù)據(jù)庫(kù)。
從選項(xiàng)中,選擇上Label Security和Vault選項(xiàng)。
Oracle Label Security用戶未system
Oracle Database Vault為SYSAUX
配置項(xiàng)目中,包括了Oracle Vault用戶owner的名稱和管理員密碼。注意:這個(gè)配置密碼環(huán)節(jié)是很嚴(yán)格的,要求長(zhǎng)度是8-30位、不出現(xiàn)重復(fù)字符和包括至少一個(gè)標(biāo)點(diǎn)符號(hào)。
database vault owner: dbvowner password:Abcd_1234
創(chuàng)建單獨(dú)的賬戶管理員,已區(qū)分賬戶管理和安全策略管理。
database vault account manager: dbvmgr password:Abcd_1234
選擇連接方法,包括獨(dú)占方式和共享連接方式。最后安裝選項(xiàng)。
最后安裝成功,結(jié)束GUI界面。
和很多Oracle組件一樣,Oracle Vault是可以通過(guò)一系列的API接口調(diào)用來(lái)進(jìn)行配置管理的。但是,由于復(fù)雜性,Oracle并不推薦直接使用API接口命令進(jìn)行管理,而是通過(guò)提供的dbv應(yīng)用進(jìn)行配置。使用dbv的方法和em很像,而且避免了出現(xiàn)錯(cuò)誤的幾率。
調(diào)用dbv的方法,首先是啟動(dòng)emctl。之后調(diào)用https://192.0.2.20:1158/dva
端口號(hào)和em是一樣的。
用戶名:dbvowner
口令:Abcd_1234
HOST:192.0.2.20
PORT:1521
SID/服務(wù):SID:orcl
點(diǎn)擊登錄,就可以看到配置項(xiàng)目。
Oracle Vault是目前Oracle官方推薦的運(yùn)維安全策略。在實(shí)際應(yīng)用中,主要便于進(jìn)行sys等管理員帳號(hào)權(quán)限限制,保護(hù)核心業(yè)務(wù)數(shù)據(jù)。
這個(gè)例子是最簡(jiǎn)單的,不需要使用Factor,只使用Rule Sets和Command Rules就可以完成。我們用數(shù)據(jù)庫(kù)用戶test來(lái)示范:
1) 登錄DV的管理頁(yè)面:
2) 創(chuàng)建一個(gè)Rule Set,名字叫”Can not drop table in business time”,選擇Any True,意思是說(shuō)規(guī)則集中的規(guī)則(判斷條件)任何一個(gè)為True,規(guī)則集判斷結(jié)果就為True。其實(shí)All True就相當(dāng)于and,Any True就相當(dāng)于or。審計(jì)選型:成功或失敗的審計(jì)。錯(cuò)誤處理頁(yè)面:處理時(shí)出錯(cuò):show error message,失敗代碼:-20001,失敗消息:Can not drop table in business time
3) 要與規(guī)則集關(guān)聯(lián)的規(guī)則,創(chuàng)建兩個(gè)規(guī)則:
規(guī)則名:RULE1 規(guī)則表達(dá)式:to_char(sysdate,'HH24MM')<'1145'
規(guī)則名:RULE2 規(guī)則表達(dá)式:to_char(sysdate,'HH24MM')>'1155'
這兩個(gè)RULE也很好理解,就是判斷當(dāng)前時(shí)間是否為業(yè)務(wù)時(shí)間,在這里,為了便于做實(shí)驗(yàn),把業(yè)務(wù)時(shí)間定義為11:45~11:55,這個(gè)規(guī)則集判斷當(dāng)前時(shí)間,如果當(dāng)前時(shí)間不在業(yè)務(wù)時(shí)間內(nèi),規(guī)則集返回True。
4) 然后創(chuàng)建Command Rule
在主頁(yè),點(diǎn)擊規(guī)則>創(chuàng)建,命令了類型選擇DROP TABLE,狀態(tài):?jiǎn)⒂茫脩羲姓撸篠COTT,命令集:Can not drop table in business time
這個(gè)Command Rule的意思就是指定的Rule Set返回True時(shí),允許drop test用戶下的表,否則即使是sysdba或表的owner也無(wú)權(quán)drop table。
5) 效果:
23:50:48 SCOTT@orcl >create table dept3 as select * from dept;
23:51:09 SCOTT@orcl >drop table dept3;
drop table dept3
*
ERROR at line 1:
ORA-47306: 20001: Can not drop table in business time
23:51:59 @ >conn sys/oracle@s11 as sysdba
23:52:12 SYS@s11 >drop table scott.dept2;
drop table scott.dept2
ERROR at line 1:
ORA-47306: 20001: Can not drop table in business time
其他我們想控制的Alter Table等Command Rule的設(shè)置方法類似。
實(shí)際工作中,我們經(jīng)常遇到這樣的情況:應(yīng)用開發(fā)人員都有應(yīng)用用戶的口令,他們可以隨意用SQL*PLUS或PL/SQL Developer這樣的工具連接到生產(chǎn)庫(kù)上,如果一時(shí)搞混了生產(chǎn)庫(kù)和測(cè)試庫(kù),就可能有悲劇發(fā)生。最好的解決方法就是限制應(yīng)用用戶所用的工具,應(yīng)該只允許中間件以這個(gè)用戶連接,其他工具都不允許連接。
這個(gè)例子會(huì)用到Factor,首先我們創(chuàng)建一個(gè)Factor,取用戶會(huì)話的Module:
1) 創(chuàng)建因子:
名稱:Module
因子類型:Application
因子標(biāo)識(shí):By Method ,
因子賦值:By Access,
因子標(biāo)簽:By Self
檢索方法:UPPER(SYS_CONTEXT('USERENV','MODULE'))
點(diǎn)擊“創(chuàng)建”。
2) 用SQL*PLUS登錄數(shù)據(jù)庫(kù),驗(yàn)證這個(gè)Factor取出的值:
SYS@orcl >select dvf.f$module from dual;
F$MODULE
-----------------------------
SQLPLUS@S11 (TNS V1-V3)
引用Factor的方法就是DVF.F$+Factor name,在Linux本機(jī)登錄,Module就是上面顯示的那樣,在windows上遠(yuǎn)程登錄,Module的值是“SQLPLUS.EXE”。
3) 下面創(chuàng)建Rule Set,名字叫“Limit SQL*PLUS“,
創(chuàng)建規(guī)則集:
名稱:Limit SQL*PLUS
狀態(tài):?jiǎn)⒂?
賦值選項(xiàng):Any True
錯(cuò)誤處理選項(xiàng):-20002
失敗消息:can’t login
定制事件處理程序選項(xiàng):禁用處理程序
4) 創(chuàng)建規(guī)則:
RULE3: DVF.F$MODULE like 'SQLPLUS%' AND DVF.F$SESSION_USER IN ('SYS','SYSTEM','DV_MANAGER')
RULE4: DVF.F$MODULE NOT LIKE 'SQLPLUS%'
5) 創(chuàng)建Command Rule:
創(chuàng)建命令規(guī)則:
命令:CONNECT
狀態(tài):?jiǎn)⒂?
對(duì)象所有者:%
對(duì)象名:%
規(guī)則集:Limit SQL*PLUS
6) 效果
按照這種規(guī)則,除了SYS,SYSTEM,DV_MANAGER之外的用戶,不管是本地還是遠(yuǎn)程,都不能用SQL*PLUS登錄。
23:58:44 SYS@orcl >conn / as sysdba
Connected.
00:12:28 SYS@orcl >conn scott/tiger@s11
ERROR:
ORA-47306: 20002: can't login
Warning: You are no longer connected to ORACLE.
用SQL Developer登錄正常:
現(xiàn)實(shí)場(chǎng)景中,我們希望DBA遵守制度,比如在修改表結(jié)構(gòu)之前,通知OGG相關(guān)人。或者為了增加安全性,要求DBA做的重大操作,必須得到老板的批準(zhǔn)。DV可以利用Dual Key功能滿足這種需求。
簡(jiǎn)單說(shuō),我們可以寫一個(gè)存儲(chǔ)過(guò)程,判斷流程中需要通知的人是否在線,如果在線,才允許執(zhí)行相應(yīng)的操作。而那個(gè)需要被通知的人,只要擁有connect數(shù)據(jù)庫(kù)的權(quán)限就行,他(她)的登錄動(dòng)作就變成了一種授權(quán)或被通知后的確認(rèn)。
具體步驟:
1) 首先給DV的管理員授權(quán),讓用戶可以訪問字典視圖和編寫存儲(chǔ)過(guò)程:
SQL>
GRANT CREATE PROCEDURE TO DBVOWNER;
GRANT SELECT ON V_$SESSION TO DBVOWNER;
2) 創(chuàng)建存儲(chǔ)過(guò)程
我們假設(shè)授權(quán)的用戶是“system“,而執(zhí)行操作的用戶是”scott“,相應(yīng)的判斷system是否在線的存儲(chǔ)過(guò)程如下:
CREATE OR REPLACE FUNCTION check_boss_logged_in
return varchar2
authid definer as
v_session_number number := 0;
v_allow varchar2(10) := 'TRUE';
v_deny varchar2(10) := 'FALSE';
BEGIN
SELECT COUNT(*) INTO v_session_number
FROM SYS.V_$SESSION
WHERE USERNAME = 'SYSTEM';
IF v_session_number > 0
THEN RETURN v_allow;
ELSE
RETURN v_deny;
END IF;
END check_boss_logged_in;
/
使用DV管理員創(chuàng)建這個(gè)Function,然后授權(quán)給DVSYS:
SQL>
conn dbvowner/Abcd_1234
GRANT EXECUTE ON check_boss_logged_in to DVSYS;
3) 創(chuàng)建Rule Set:
名稱:Dual Key
賦值選項(xiàng):Any True
規(guī)則如下:
RULE5:SYS_CONTEXT('USERENV','SESSION_USER')='SCOTT' AND DBVOWNER.CHECK_BOSS_LOGGED_IN='TRUE'
RULE6: SYS_CONTEXT('USERENV','SESSION_USER') !='SCOTT'
4) 創(chuàng)建Command Rule:
命令規(guī)則:
類型:ALTER TABLE
對(duì)象所有者:SCOTT
RULE SET: dual key
5) 效果(失敗)
這個(gè)Command Rule達(dá)到的效果是,如果SCOTT用戶想alter owner為scott的table,必須boss用戶同時(shí)在線,否則報(bào)錯(cuò),無(wú)權(quán)限。如果是其他人修改SCOTT用戶下的表,不受這個(gè)限制。
最后的效果:
SYSTEM用戶沒有在線,那么SCOTT用戶alter table報(bào)錯(cuò)
只有在SCOTT用戶通知了SYSTEM用戶,或者按照流程,得到了SYSTEM用戶的批準(zhǔn),SYSTEM用戶用登錄數(shù)據(jù)庫(kù)這個(gè)動(dòng)作來(lái)代表確認(rèn),SCOTT用戶才可以修改表結(jié)構(gòu):
Oracle Vault的原則是安全職責(zé)的拆分保護(hù)。從原來(lái)數(shù)據(jù)庫(kù)管理員sys承擔(dān)安全職責(zé)這個(gè)假設(shè),轉(zhuǎn)變?yōu)閱为?dú)安全人員dbvowner和dbvaccount manager為安全配置中心。之后,從行為、領(lǐng)域等多個(gè)層面設(shè)定了很多安全區(qū),對(duì)安全區(qū)采用額外的保護(hù)策略,將管理員屏蔽住。
數(shù)據(jù)庫(kù)管理員雖然可以進(jìn)行管理工作,但是卻不能訪問特定敏感區(qū)域。而安全員雖然有安全授權(quán)能力,但是沒有管理員數(shù)據(jù)授權(quán)(系統(tǒng)權(quán)限和數(shù)據(jù)權(quán)限),安全員也不能訪問敏感數(shù)據(jù)。
這個(gè)過(guò)程中是有一些漏洞的,比如管理員存在修改安全員密碼,奪取安全員權(quán)限的可能,所以O(shè)racle Vault在安裝之后,有一些默認(rèn)的領(lǐng)域和命令規(guī)則,將管理員嚴(yán)格的進(jìn)行束縛。
此外,管理員有一些日常操作,如使用DB Control、Datapump和Recovery Manager,都有觸動(dòng)安全領(lǐng)域規(guī)則的風(fēng)險(xiǎn)。這樣的情況Oracle是如何處理呢?本篇從Data Pump操作入手,進(jìn)行簡(jiǎn)單討論。
Oracle Data Pump(數(shù)據(jù)泵)是Oracle10g以后推出的數(shù)據(jù)備份管理工具。作為Exp/Imp的進(jìn)化版,Data Pump對(duì)于各種Oracle新特性、功能支持力度是比較好的,在海量數(shù)據(jù)操作的時(shí)候,Data Pump也是有獨(dú)特的優(yōu)勢(shì)。
如果我們仔細(xì)研究過(guò)Data Pump操作過(guò)程,就可以得知,Oracle Data Pump進(jìn)行數(shù)據(jù)導(dǎo)入的過(guò)程并不是一個(gè)整體,而是一系列動(dòng)作的集合。比如:當(dāng)進(jìn)行數(shù)據(jù)導(dǎo)入Schema模式的時(shí)候,如果目標(biāo)數(shù)據(jù)庫(kù)沒有這個(gè)用戶,Data Pump時(shí)會(huì)創(chuàng)建出這個(gè)用戶。這個(gè)過(guò)程其實(shí)就是一般的create user xxx語(yǔ)句執(zhí)行。
所以,進(jìn)行export和import數(shù)據(jù)的過(guò)程,是一個(gè)多種權(quán)限(系統(tǒng)權(quán)限)綜合的過(guò)程。這也就是為什么Oracle中導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)的權(quán)限是兩個(gè)角色權(quán)限(Import/Export Full Database)。
那么,如果管理員(備份操作員)需要進(jìn)行數(shù)據(jù)導(dǎo)入導(dǎo)出敏感數(shù)據(jù)的時(shí)候,是要觸動(dòng)到敏感信息的。Oracle Vault環(huán)境下我們是怎么配置呢?
當(dāng)前我們實(shí)驗(yàn)選擇Oracle 11gR2版本,數(shù)據(jù)庫(kù)已經(jīng)配置Vault組件。對(duì)scott數(shù)據(jù)進(jìn)行保護(hù),即使sys管理員也是無(wú)法訪問的。
Oracle中創(chuàng)建directory對(duì)象dumps。嘗試進(jìn)行導(dǎo)出。
$ expdp \"/ as sysdba\" directory=dumps schemas=scott dumpfile=scottvault_%U.dmp
從報(bào)錯(cuò)信息中,我們看到Data Pump本質(zhì)就是調(diào)用一系列的包方法,來(lái)將數(shù)據(jù)導(dǎo)出。Sys用戶是有導(dǎo)出數(shù)據(jù)權(quán)限的,但是默認(rèn)情況如果碰觸敏感信息,也是報(bào)錯(cuò)失敗。
在設(shè)置Vault情況下,Oracle對(duì)于一些管理操作時(shí)需要額外授權(quán)的。Dbms_macadm包就是用于進(jìn)行特定管理操作授權(quán)的。
在sys下,執(zhí)行授權(quán)操作因無(wú)權(quán)限會(huì)報(bào)錯(cuò)。
在Oracle Vault中,所有對(duì)于敏感區(qū)域的授權(quán)動(dòng)作,都是要通過(guò)dvowner管理對(duì)象。
SQL>
conn dbvowner/Abcd_1234.@ora11g
exec dbms_macadm.authorize_datapump_user('SYS');
再次調(diào)用expdp程序。
expdp \"/ as sysdba\" directory=dumps schemas=scott dumpfile=scottvault.dmp
導(dǎo)出成功。
此時(shí),我們?cè)O(shè)想一個(gè)場(chǎng)景。如果一個(gè)位于安全領(lǐng)域的數(shù)據(jù)對(duì)象,被導(dǎo)出為dmp文件(或者備份到其他介質(zhì)中)。還原到一個(gè)環(huán)境之后,安全原則是否還存在?
我們進(jìn)行試驗(yàn)測(cè)試,導(dǎo)入剛剛導(dǎo)出的dmp文件到數(shù)據(jù)庫(kù)中。
--導(dǎo)入相同數(shù)據(jù)庫(kù),不同schema
impdp \"/ as sysdba\" dumpfile=scottvault.dmp directory=dumps remap_schema=scott:test
導(dǎo)入成功,查看Vault約束是否存在。
SQL>
conn sys/oracle@ora11g as sysdba
select * from scott.emp;
select * from test.bonus;
到一個(gè)新的環(huán)境之后,數(shù)據(jù)約束消失。
發(fā)現(xiàn)導(dǎo)入敏感vault失效之后,一些朋友是有疑惑的,認(rèn)為這樣是Oracle的一個(gè)問題缺陷。在這個(gè)問題上,筆者是和Oracle站在相同的立場(chǎng)的。
首先,Vault的本質(zhì)是一種系統(tǒng)級(jí)別的控制技術(shù)。而不是一種數(shù)據(jù)加密技術(shù)。如果尋求加密,可以考慮TDE或者應(yīng)用端加密技術(shù)。Vault是在訪問層面的一種控制機(jī)制。所以,當(dāng)數(shù)據(jù)被合法的讀取留存之后,被解密是合理的想法。
第二,在進(jìn)行Export的時(shí)候,Oracle Vault是要求額外授權(quán)的。Oracle認(rèn)為:既然已經(jīng)讓安全管理員允許特定用戶導(dǎo)出敏感數(shù)據(jù),那么安全責(zé)任就轉(zhuǎn)移出系統(tǒng)了,擔(dān)負(fù)在特定用戶的身上。所以,這樣也是合理的。
最后,Vault的本質(zhì)是“防范自己人”。這也就是限制了Oracle Vault發(fā)揮作用的層面。安全是一個(gè)多層面考慮的問題。沒有單獨(dú)的一種技術(shù)手段可以避免問題出現(xiàn)。在什么都不可信的時(shí)候,我們總需要相信一些什么。
注意:在11gR2版本中,已經(jīng)取消了對(duì)于Exp/Imp在Vault環(huán)境的使用。Data Pump已經(jīng)成為唯一選擇。
轉(zhuǎn):https://www.linuxidc.com/Linux/2014-05/101102.htm
Oracle Vault是安全三個(gè)技術(shù)策略的重要組成部分。相對(duì)于其他兩種,Label Security和VPD(Virtual Private Database),Oracle Vault更加體現(xiàn)運(yùn)維體系管理建設(shè)和安全規(guī)則配置。安裝配置Vault之后,Oracle原有的sys超級(jí)用戶安全角色被剝離,數(shù)據(jù)、操作和資源以規(guī)則的方式進(jìn)行安全限制。應(yīng)該說(shuō),使用Vault之后,才能真正實(shí)現(xiàn)對(duì)于數(shù)據(jù)管理員行為的管制。
本篇主要介紹如何對(duì)Vault進(jìn)行卸載操作,依據(jù)的版本是11gR2。注意:Oracle Vault不同版本下進(jìn)行卸載的方法有一定差異,特別是在relink的過(guò)程。
Oracle Vault在數(shù)據(jù)庫(kù)中涉及幾個(gè)部分:dva組件以Web App的方式綁定在OEM中、內(nèi)部的dbowner和manager管理對(duì)象和角色權(quán)限調(diào)整。在正式的卸載操作之前,我們需要將數(shù)據(jù)庫(kù)和各種組件進(jìn)行關(guān)閉。
數(shù)據(jù)庫(kù)完全關(guān)閉。
SQL>
conn / as sysdba
shutdown immediate;
監(jiān)聽程序關(guān)閉。
[oracle@SimpleLinux ~]$ lsnrctl stop
DB Console Web應(yīng)用關(guān)閉。
[oracle@SimpleLinux ~]$ emctl stop dbconsole
[oracle@SimpleLinux ~]$ emctl status dbconsole
Vault是一個(gè)默認(rèn)情況下未激活的組件。我們進(jìn)行安裝Vault的過(guò)程,實(shí)際上就是將其重新打包如Oracle執(zhí)行程序。進(jìn)行卸載的過(guò)程,也需要重新relink Oracle應(yīng)用程序。
首先進(jìn)行Disable過(guò)程。
[oracle@SimpleLinux ~]$ cd $ORACLE_HOME/rdbms/lib
[oracle@SimpleLinux lib]$ make -f ins_rdbms.mk dv_off ioracle
注意:如果是在11gR2中,可以選擇chopt方式進(jìn)行dv的卸載。
[oracle@SimpleLinux lib]$ chopt disable dv
Writing to /u01/app/oracle/install/disable_dv.log...
/usr/bin/make -f /u01/app/oracle/rdbms/lib/ins_rdbms.mk dv_off ORACLE_HOME=/u01/app/oracle
/usr/bin/make -f /u01/app/oracle/rdbms/lib/ins_rdbms.mk ioracle ORACLE_HOME=/u01/app/oracle
啟動(dòng)監(jiān)聽器,此時(shí)Oracle通常已經(jīng)自動(dòng)啟動(dòng)。
[oracle@SimpleLinux lib]$ lsnrctl start
檢查數(shù)據(jù)庫(kù),確保已啟動(dòng)。
結(jié)束link過(guò)程后,還需要進(jìn)行數(shù)據(jù)庫(kù)中一些對(duì)象的手工操作。在一些版本下,是需要將若干trigger手工禁用。筆者使用的版本不需要這樣操作。
SQL>
alter trigger dvsys.dv_before_ddl_trg disable;
alter trigger dvsys.dv_after_ddl_trg disable;
確定自定義owner和manager的用戶名稱。
SQL> conn sys/oracle@ora11g as sysdba
SQL> select unique GRANTEE from dba_role_privs where GRANTED_ROLE in ('DV_ACCTMGR','DV_OWNER') and grantee <> 'DVSYS';
GRANTEE
------------------------------
DBVOWNER
DBVACCTMGR
在11gR1版本中,需要進(jìn)行更新。
SQL>
update dvsys.config$ set status=0;
commit;
操作之前,確認(rèn)recyclebin已經(jīng)關(guān)閉,并且重新啟動(dòng)數(shù)據(jù)庫(kù)。
SQL>
alter system set recyclebin=off scope=spfile;
shutdown immediate;
startup
執(zhí)行vault卸載腳本,刪除數(shù)據(jù)。
SQL> @?/rdbms/admin/dvremov.sql
作用:DVSYS and DVF users and DV roles are removed
刪除自定義管理員和owner的用戶數(shù)據(jù)。
SQL>
drop user dbvowner cascade;
drop user dbvacctmgr cascade;
如果在11gR1版本,需要手工執(zhí)行網(wǎng)絡(luò)ACL授權(quán)取消動(dòng)作。在11gR2版本,這個(gè)過(guò)程已經(jīng)納入到腳本中不需要執(zhí)行了。
SQL>
conn / as sysdba
exec DBMS_NETWORK_ACL_ADMIN.DROP_ACL ('/sys/acls/dvsys-network-privileges.xml');
commit;
開啟recyclebin功能,重啟動(dòng)數(shù)據(jù)庫(kù)。
SQL>
alter system set recyclebin=on scope=spfile;
startup force;
測(cè)試刪除成功。
SQL> col parameter for a30;
SQL> select * from v$option where parameter='Oracle Database Vault';
PARAMETER VALUE
------------------------------ ------------
Oracle Database Vault FALSE
Oracle Vault是比較完備的數(shù)據(jù)權(quán)限、功能權(quán)限解決方案。在實(shí)際中是有很大的作用的。記錄下卸載方法,留需要的朋友待查。
網(wǎng)頁(yè)題目:ORACLEdatabasevault
轉(zhuǎn)載來(lái)源:http://www.chinadenli.net/article32/iiidpc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、用戶體驗(yàn)、定制開發(fā)、云服務(wù)器、關(guān)鍵詞優(yōu)化、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)