国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

利用Oracle的同意安全機制來控制訪問

2024-08-29 13:38:01
字體:
供稿:網(wǎng)友

  Oracle提供用于控制數(shù)據(jù)訪問規(guī)則的多種方式,包括:
  
  同意安全機制(比如系統(tǒng)、對象、作用的優(yōu)先特權(quán))
  
  同意執(zhí)行安全(比如定義和觸發(fā)特權(quán))
  
  虛擬私有數(shù)據(jù)庫(VPD)
  
  N-tier的驗證(比如RADIUS的驗證服務(wù)器)
  
  現(xiàn)在讓我們通過查看同意安全機制來開始一些最基本的知識,并了解安全機制的優(yōu)點和缺欠。原始關(guān)系模型為用戶提供了用于訪問控制的同意特權(quán)的方法。這一模型最初是由E.F. Codd描述,并成為了多種商業(yè)關(guān)系數(shù)據(jù)庫交叉的標(biāo)準(zhǔn)。
  
  Oracle同意安全機制具有多種形式:對象同意,系統(tǒng)特權(quán)同意,以及基于功能的同意。這一形式的主要目的是使數(shù)據(jù)庫中的用戶可以批準(zhǔn)訪問特定數(shù)據(jù)對象來控制數(shù)據(jù)訪問。
  --------------------------------------------------------------------------------
  Oracle安全機制
  這是用于數(shù)據(jù)控制的Oracle設(shè)計的多章節(jié)的第二部分。假如你還沒有閱讀這一部分,可以先查看這一文章系列的第一部分《從開始就注重Oracle設(shè)計的安全性》
  --------------------------------------------------------------------------------
  對象特權(quán)
  對象特權(quán)分配執(zhí)行一個特定對象的特定操作權(quán)利。這里提供了對象特權(quán)分配的范例:
  
  同意選擇,在用戶插入fred, mary, joe;
  
  在定制列表中執(zhí)行同意插入;
  
  同意所有的用戶執(zhí)行fred;
  
  同意用戶查閱中對mary的選擇;
  
  你可以看到,對象特權(quán)的直接分配需要Oracle數(shù)據(jù)庫用戶的每一對象的特定同意。假如你有100個列表和1,000個用戶的數(shù)據(jù)庫,這就需要100,000獨立的同意聲明來分配安全機制。
  
  系統(tǒng)特權(quán)
  系統(tǒng)特權(quán)包括很多訪問方式,比如任何列表的選擇。系統(tǒng)特權(quán)同意的范例包括以下:
  
  同意建立任何簇(cluster)用于customer_role;
  
  同意選擇任何列表用于fred;
  
  同意建立任何列表;
  
  同意建立tablespace用于dba_role。
  
  顯然,系統(tǒng)特權(quán)應(yīng)該只限于安全級別不是很高的情況,因為一個簡單的同意聲明可以將列表上的所有安全機制去掉。
  
  基于功能的安全機制
  功能安全機制可以答應(yīng)你將相關(guān)的同意機制歸為一個集合。由于功能機制是一個定義好的特權(quán)集合,特權(quán)分配給用戶就會變得相當(dāng)輕易,比如以下范例:
  
  建立all_customer的功能安全機制;
  
  同意all_customer的選擇,更新;
  
  同意all_customer選擇item_table;
  
  功能安全機制的優(yōu)點在于它的明顯性,這是因為功能安全機制答應(yīng)你定義一套訪問規(guī)則,然后分配給合適的用戶。
  
  然而,與VPD安全機制不一樣,執(zhí)行數(shù)據(jù)訪問的復(fù)雜規(guī)則是不可能的。
  
  同意安全機制的設(shè)計
  假如你要執(zhí)行Oracle數(shù)據(jù)庫的安全機制,你必須做一些仔細的前期計劃以確保每一功能都滿足不同用戶的訪問,而且功能上不沖突。設(shè)計同意安全機制的步驟如下:
  
  1.    定義所有已經(jīng)的不同類別的用戶的功能。
  
  2.    定義每種功能的訪問規(guī)則。
  
  3.    定義所有行、列的訪問限制。
  
  4.    建立所有數(shù)據(jù)訪問的查看。
  
  5.    分配功能的查看。
  
  6.    分配用戶的功能。
  
  為了減少功能重復(fù)的可能性,很多Oracle設(shè)計者建立功能的等級性,如圖A所示。
  
  
圖A

  
利用Oracle的同意安全機制來控制訪問

  用戶組訪問
  可以注重到程序員和分析任務(wù)之間訪問特權(quán)的重復(fù)性。程序員必須非常地注重訪問的要點。
  
  在實際操作中,功能的設(shè)計可能會變得復(fù)雜。
  
  行和列訪問的設(shè)計
  在實際設(shè)計中,同意訪問整個列表并不是很簡單,通常你需要在一個列表內(nèi)限制特定行的訪問。唯一可實現(xiàn)的方法是建立每一行的限制獨立查看,然后將查看分配給用戶功能。例如,假設(shè)你是做基于下面商業(yè)規(guī)則的設(shè)計功能:
  
  只有治理者才能查看雇員的工資列(列限制)。
  
  其他雇員只能查看雇員名字和電話號碼(行限制)。
  為了能夠在Oracle中使用功能安全機制來執(zhí)行這一設(shè)計,可以采用以下步驟:
  
  建立治理者和雇員的基本功能。
  
  建立合適的查看。
  
  同意功能的查看。
  
  在Oracle中,表A說明了這一設(shè)計。

  
  現(xiàn)在你可以分配合適的同意聲明,然后測試查看結(jié)果,并看看它們是怎么工作(表B)。
  
  同意安全機制的漏洞
  設(shè)計中同意安全機制產(chǎn)生漏洞有很多觀點。包括:
  
  分配同意給PUBLIC。
  
  使用WITH ADMIN選擇分配功能。
  
  重復(fù)、未設(shè)計的訪問功能。
  
  分配系統(tǒng)特權(quán)給功能。
  
  建立公共的同義字。
  
  例如,在Oracle中你可以明確將權(quán)利賦予公用的列表,這樣就可以具備只讀訪問。這種系統(tǒng)特權(quán)取代了功能安全機制,并生成了漏洞,如下所示:
  
  生成pubs.customer的公用同字義的用戶;
  
  同意用戶的公用選擇;
  
  另一個重要漏洞是列表的公用同義字。請記住,Oracle在缺省情況下是nobody,除非是對象答應(yīng)執(zhí)行列表的任何操作。同樣,列表名稱必須在SQL中定義,如表C所示。
  
  現(xiàn)在,當(dāng)你與一個名為SCOTT的用戶連接,他是不能看到列表的行,如表D中的例子所示。
  
  在這種情況下,你知道列表是存在的,但Oracle只承認有權(quán)限的列表名稱(可參見表 E)。
  
  復(fù)雜性
  從表面上看,設(shè)計Oracle數(shù)據(jù)庫的同意安全機制很復(fù)雜。本文中提到的觀點提供了建立Oracle安全機制的新方法,以及同意執(zhí)行模型和VPD。在下面兩個章節(jié)里,我將會檢查采用這些新方法的數(shù)據(jù)庫設(shè)計。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黔南| 宁夏| 陇南市| 永登县| 都匀市| 吉木萨尔县| 古浪县| 海兴县| 遂平县| 镇康县| 溧水县| 庆城县| 玛曲县| 徐州市| 鹤峰县| 福州市| 宝鸡市| 丰台区| 崇义县| 辛集市| 井研县| 原阳县| 渭源县| 平原县| 洪江市| 景洪市| 高唐县| 台江县| 达日县| 喜德县| 宝鸡市| 邢台市| 邹城市| 建始县| 尉犁县| 德清县| 松江区| 宁津县| 凌源市| 吉水县| 镶黄旗|