版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Oracle標簽安全性O(shè)racle標簽安全性11、概述12、工作流程23、測試步驟23.1、安裝Oracle Label Security33.2、創(chuàng)建安全策略53.3、定義Level63.4、定義Compartment63.5、定義Group63.6、創(chuàng)建Label73.7、將策略賦予表73.8、將Label賦予用戶83.9、新增LEVEL11結(jié)論111、概述在Oracle9i中有一個組件稱為Oracle Label Security,這個組件實現(xiàn)了基于自定義策略而對數(shù)據(jù)庫中的表甚或是整個Schema提供行級安全性功能。實際上Oracle Label Security是在Oracle8.1.
2、7中提出的,在9i版本中功能得到了大幅度增強。Oracle Label Security是內(nèi)置于數(shù)據(jù)庫引擎中的過程與約束條件集,該數(shù)據(jù)引擎實施對在單個表或整個模式上的"行"級訪問控制。要利用Oracle Label Security,需要創(chuàng)建一個或多個安全策略,其中每一個安全策略都包含一組標簽。你可以用這些標簽來標明哪些用戶能夠訪問什么類型數(shù)據(jù)。在創(chuàng)建了一個 策略之后,將該策略應(yīng)用于需要保護的表,并將這些標簽授予你的用戶,這樣,你就完成了整個過程。Oracle Label Security對查詢的修改是透明的,并且在即時計算訪問級別,以執(zhí)行你的新策略。當Oracle9i數(shù)據(jù)
3、庫在解析各個SQL語句時,它也檢測各個表是否受到某個安全策略的保護。根據(jù)該用戶的訪問權(quán)限,Oracle9i數(shù)據(jù)庫 向該語句的WHERE子句中添加安全性謂詞。因為這些都發(fā)生在數(shù)據(jù)庫引擎的內(nèi)部,所以不管該SQL語句的來源如何,用戶都不可能繞過該安全性機制。2、工作流程首先我們了解一下實現(xiàn)Oracle Label Security的大體流程。通過Oracle提供的一系列存儲過程,先創(chuàng)建一個policy,然后在policy中創(chuàng)建level,compartment,group,之后通過這些定義好的level,compartment,group再定義label,然后將policy綁定到某張表或者某個sch
4、ema,最后再給相應(yīng)的用戶設(shè)置label。其中牽涉到幾個名詞,解釋一下: Policy:就是安全策略,一個安全策略是level,compartment,group,label的集合。Level:等級,這是最基礎(chǔ)的安全控制等級,必須設(shè)置。Compartment:分隔(這不是官方翻譯),提供第二級的安全控制,是可選的。Group:組(這不是官方翻譯),提供第三級的安全控制,是可選的。Label:標簽,最終體現(xiàn)到每一行上的安全標簽,必須設(shè)置。只有用戶被賦予的標簽和此行上的標簽相同或者等級更高的時候,該行才能夠被用戶存取。3、測試步驟我們需要用到3個用戶,一個是擁有zftang_test_01表的te
5、st用戶,一個是用于設(shè)置OLS策略的LBACSYS用戶,另外一個是不受OLS策略制約的SYS用戶(用來方便的插入和更新測試數(shù)據(jù))。u 安裝Oracle Label Security(每個數(shù)據(jù)庫進行一次)u 創(chuàng)建安全性策略 u 定義級別u 定義區(qū)間(compartment)(可選)u 定義分組(可選)u 創(chuàng)建標簽u 將標簽策略應(yīng)用于表u 指定用戶標簽u 指定正常授權(quán)級別的訪問u 為表中的行指定合適的標簽3.1、安裝Oracle Label Security在安裝數(shù)據(jù)庫軟件的時候必須保證選擇了Oracle Label Security組件,否則所有功能都無法使用。如果當時沒有選擇,可以按照如下方法
6、安裝OLC1、重新運行Universal Installer進行安裝,選擇定制,下一步; 2、勾選ORACLE LABEL SECRITY組建進行安裝; 3、繼續(xù)下一步,完成安裝;LBACSYS用戶可以利用$ORACLE_HOME/rdbms/admin/catols.sql創(chuàng)建。以SYS用戶登陸PLSQL,打開命令行窗口,執(zhí)行:D:OraHome_1RDBMSADMINcatols.sql; 在這個腳本的最后會自動關(guān)閉數(shù)據(jù)庫,打開可以看到,最后面是(shutdown immediate)所以請不要在生產(chǎn)庫上直接測試。再次打開數(shù)據(jù)庫,就可以使用LBACSYS用戶登錄了,默認密碼就是lbacsy
7、s,如果在生產(chǎn)環(huán)境中,請立刻修改默認密碼。3.2、創(chuàng)建安全策略使用lbacsys用戶登陸PLSQL,執(zhí)行如下命令SQL> EXEC sa_sysdba.create_policy('TEST_POLICY', 'TEST_LABEL');第一個參數(shù)TEST_POLICY是安全策略的名稱,第二個參數(shù)TEST_LABEL是即將添加到zftang_test_01表中的用于存儲標簽的字段名,這個字段將在后面apply table policy的時候自動添加,所以不必預(yù)先添加??梢詮腄BA_SA_POLICIES視圖中查詢安全策略的情況。select * from
8、DBA_SA_POLICIES要禁用、重新啟用或者刪除一個策略,可利用以下過程:SQL> EXEC sa_sysdba.disable_policy('TEST_POLICY');SQL> EXEC sa_sysdba.enable_policy('TEST_POLICY');SQL> EXEC sa_sysdba.drop_policy('TEST_POLICY');3.3、定義LevelEXEC sa_components.create_level('TEST_POLICY', 111,'READ11
9、1', 'Public Level'); EXEC sa_components.create_level('TEST_POLICY', 222,'READ222', 'Internal Level');第一個參數(shù)是上一步創(chuàng)建的安全策略的名字。第二個參數(shù)是Level的等級,數(shù)字越大表示權(quán)限越高,比如此處具有'READ222'等級的就可以同時查看有'READ111'等級的數(shù)據(jù)。第三個參數(shù)是Level的短名,隨便定義。第四個參數(shù)是Level的長名,只是起到一個說明的作用,隨便定義。可以從DBA_S
10、A_LEVELS視圖中查詢安全等級的情況。select * from DBA_SA_LEVELS3.4、定義Compartment本步操作是可選項,看的有點暈, 測試了幾次沒搞透3.5、定義Group本步操作是可選項,看的有點暈, 測試了幾次沒搞透3.6、創(chuàng)建LabelEXEC sa_label_admin.create_label('TEST_POLICY', '111','READ111', TRUE);EXEC sa_label_admin.create_label('TEST_POLICY', '222',
11、'READ222', TRUE);參數(shù)依次是安全策略名,Label Tag,Label值,是否為data label。其中Label Tag必須是不同于系統(tǒng)中任何策略number的數(shù)字。Label值是最關(guān)鍵的地方,通過組合前面幾步中定義的level 是否為data label是一個布爾值,只有為TRUE的時候,這個標簽才可以用于控制表數(shù)據(jù)的安全性??梢詮腄BA_SA_LABELS視圖中查詢安全標簽的情況。select * from DBA_SA_LABELS3.7、將策略賦予表exec sa_policy_admin.apply_table_policy(policy_name
12、 => 'TEST_POLICY',schema_name => 'TEST',table_name => 'ZFTANG_TEST_01',table_options => 'LABEL_DEFAULT,READ_CONTROL,WRITE_CONTROL');前三個參數(shù)表示我們將TEST_POLICY策略附加到TEST用戶的ZFTANG_TEST_01表上,執(zhí)行這步操作的時候,Oracle會自動將第二步中定義的列添加到表中,如果這步執(zhí)行成功,我們立刻用TEST用戶檢索ZFTANG_TEST_01表,會發(fā)
13、現(xiàn)一條記錄都沒有了,這說明Label Security已經(jīng)起作用了。第四個參數(shù)用于設(shè)定策略如何控制表的安全性。LABEL_DEFAULT表示如果以后一個用戶新增數(shù)據(jù)的時候沒有指定Label那么將會使用該用戶的default session label(這個default值在下面一步的用戶Label設(shè)定中定義);READ_CONTROL,WRITE_CONTROL表示對于表的讀寫操作都受到安全策略的制約;HIDE表示不在desc表結(jié)構(gòu)的時候顯示TEST_LABEL列名,如果想要顯示就省略HIDE字樣,注意,一旦apply策略完成,那么要修改table_options的值,比如想把HIDE去掉,那
14、么就必須先用sa_policy_admin.remove_table_policy函數(shù)刪除policy定義,然后重新apply。3.8、將Label賦予用戶使用sa_user_admin.set_user_labels存儲過程來將label賦予用戶,這個存儲過程有不少參數(shù),但是必須輸入的只有policy_name,user_name,max_read_label三項,其它參數(shù)如果省略的話,都有默認值。比如def_label參數(shù)(用戶新增數(shù)據(jù)的時候沒有指定Label時的默認Label)如果沒有設(shè)定,那么默認為跟max_read_label相同。我們通過給TEST用戶賦予不同的Label,來完成測
15、試的目的。每次用LBACSYS用戶設(shè)置完TEST用戶的label,TEST用戶都必須重新登錄一次,設(shè)置才會生效。-這里很重要,前期測試,沒有重新登陸,總感覺沒效果;把LABEL=READ111的授于TEST用戶EXEC sa_user_admin.set_user_labels(policy_name=> 'TEST_POLICY',user_name =>'TEST',max_read_label =>'READ111');這個時候看查詢結(jié)果,TEST_LABEL=111的,這個用戶才能查詢到;其實表里真實的數(shù)據(jù)是:把LABE
16、L=READ222的授于TEST用戶EXEC sa_user_admin.set_user_labels(policy_name=> 'TEST_POLICY',user_name =>'TEST',max_read_label =>'READ222');執(zhí)行查詢:發(fā)現(xiàn)還是這三條數(shù)據(jù),因為其它數(shù)據(jù)TEST_LABEL列未定義值;通過SYS用戶,對數(shù)據(jù)進行賦值;這個時候,就可以看到所有的數(shù)據(jù)了;因為前面提到:EXEC sa_components.create_level('TEST_POLICY', 111,
17、9;READ111', 'Public Level'); EXEC sa_components.create_level('TEST_POLICY', 222,'READ222', 'Internal Level');第一個參數(shù)是上一步創(chuàng)建的安全策略的名字。第二個參數(shù)是Level的等級,數(shù)字越大表示權(quán)限越高,比如此處具有'READ222'等級的就可以同時查看有'READ111'等級的數(shù)據(jù)。第三個參數(shù)是Level的短名,隨便定義。第四個參數(shù)是Level的長名,只是起到一個說明的作用,隨便定義。
18、3.9、新增LEVEL這里考慮到一點,因為LEVEL的數(shù)據(jù)越大,級別越高,加入我需要新增一個LEVEL,用來控制用戶的訪問,就可以按照如下操作:1、 定義LEVELEXEC sa_components.create_level('zftang_POLICY', 333,'PUBLIC', 'Public Level1');-創(chuàng)建一個LEVEL 2、 定義LABELEXEC sa_label_admin.create_label('TEST_POLICY', '333','READ333', TRUE);3 、 將LABEL賦予用戶在這里,如果賦予TEST用戶READ111的LEVEL,那么這個用戶只能看到值=111的數(shù)據(jù); 如果賦予TEST用戶READ222的LEVEL,可以看到值=111,或者=222的數(shù)據(jù) 如果賦予TEST用戶READ333的LEVEL,就可以看到=111,222,333的數(shù)據(jù); EX
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年廣西大客車從業(yè)資格證考試試題
- 2024年黔東南客運從業(yè)資格證模擬考試練習題
- 2024年度數(shù)據(jù)中心服務(wù)租賃合同
- 《第一節(jié) 資源的跨區(qū)域調(diào)配-以我國西氣東輸為例》(同步訓練)高中地理必修3
- 商業(yè)銀行支行年終度工作總結(jié)范例
- 數(shù)字化時代企業(yè)績效管理面臨的挑戰(zhàn)及其對策探討
- 功能雙重乳液的制備及應(yīng)用研究進展
- 2024年建筑設(shè)計委托合同(含設(shè)計內(nèi)容、標準、期限等)
- 雙崗建功發(fā)言稿
- 2024年建設(shè)勞務(wù)協(xié)議:工程分包專屬合同
- 暖通工程師面試試題(含答案)
- 行政服務(wù)中心窗口工作人員手冊
- 最新患者用藥情況監(jiān)測
- 試樁施工方案 (完整版)
- ESTIC-AU40使用說明書(中文100版)(共138頁)
- 河北省2012土建定額說明及計算規(guī)則(含定額總說明)解讀
- 中工商計算公式匯總.doc
- 深圳市建筑裝飾工程消耗量標準(第三版)2003
- 《初中英語課堂教學學困生轉(zhuǎn)化個案研究》開題報告
- 恒溫箱PLC控制系統(tǒng)畢業(yè)設(shè)計
- 176033山西《裝飾工程預(yù)算定額》定額說明及計算規(guī)則
評論
0/150
提交評論