Oracle數(shù)據(jù)庫(kù)視圖與權(quán)限問題
來源:易賢網(wǎng) 閱讀:980 次 日期:2014-09-16 10:37:48
溫馨提示:易賢網(wǎng)小編為您整理了“Oracle數(shù)據(jù)庫(kù)視圖與權(quán)限問題”,方便廣大網(wǎng)友查閱!

有三個(gè)用戶test1,test2,test3, 三個(gè)用戶都具有DBA色色權(quán)限。

用TEST1用戶創(chuàng)建一個(gè)表T1,并將其查詢權(quán)限授予TEST2:

SQL> create table t1 as select * from all_objects;

表已創(chuàng)建。

SQL> grant select on t1 to test2;

授權(quán)成功。

SQL> create table t1 as select * from all_objects;

表已創(chuàng)建。

SQL> grant select on t1 to test2;

授權(quán)成功。

用TEST2用戶創(chuàng)建一個(gè)視圖,視圖的基表是TEST1.T1,并將查詢權(quán)限授予TEST3:

SQL> create view v_t1 as select * from test1.t1;

視圖已建立。

SQL> grant select on v_t1 to test3;

授權(quán)成功。

SQL> create view v_t1 as select * from test1.t1;

視圖已建立。

SQL> grant select on v_t1 to test3;

授權(quán)成功。

TEST3用戶查詢視圖TEST2.V_T1:

SQL> select * from test2.v_t1 where rownum<1;

select * from test2.v_t1 where rownum<1

*

ERROR 位于第 1 行:

ORA-01031: 權(quán)限不足

SQL> select * from test2.v_t1 where rownum<1;

select * from test2.v_t1 where rownum<1

*

ERROR 位于第 1 行:

ORA-01031: 權(quán)限不足

可以看到報(bào)了權(quán)限不足的錯(cuò)誤,就算這里TEST3用戶有DBA權(quán)限。

這到底是怎么回事呢?

其實(shí)視圖的權(quán)限,有兩點(diǎn)需要引起注意:

1. 視圖中,類似于定義者權(quán)限的存儲(chǔ)過程,是屏蔽了角色權(quán)限的。比如如果TEST1沒有顯式地將T1表的SELECT權(quán)限給予TEST2,那么TEST2在創(chuàng)建視圖V_T1時(shí)也會(huì)報(bào)ORA-01031錯(cuò)誤,即使TEST2用戶擁有DBA角色權(quán)限。

2.如果在用戶A的視圖中,引用了其他用戶B的表,用戶A將視圖的訪問權(quán)限給予用戶C,那么就變相地將用戶B的表的訪問權(quán)限給予了用戶C,因此,用戶A必須有將用戶B的表的訪問權(quán)限轉(zhuǎn)授用戶C的權(quán)限,也就是用戶B在授予A權(quán)限時(shí),必須使用with grant option。

顯然這里正是由于第2點(diǎn)的原因,導(dǎo)致用戶TEST3不能訪問視圖。用戶TEST1執(zhí)行下面的操作,將解決這個(gè)問題:

SQL> grant select on t1 to test2 with grant option;

授權(quán)成功。

SQL> grant select on t1 to test2 with grant option;

授權(quán)成功。

對(duì)于視圖的UPDATE,DELETE權(quán)限,同樣是如此。

在測(cè)試時(shí),有一個(gè)現(xiàn)象,有點(diǎn)意思。就是如果用戶TEST2沒有顯式地把V_T1的SELECT權(quán)限授予TEST3,而TEST3在有SELECT ANY TABLE或DBA權(quán)限時(shí),則查詢這個(gè)視圖時(shí)不會(huì)報(bào)權(quán)限不足的錯(cuò)誤。由于有SELECT ANY TABLE權(quán)限的存在,所有的用戶表都可以被訪問。但是顯式授予表的權(quán)限時(shí),似乎表的權(quán)限有更高的優(yōu)先級(jí),并且沒有跟系統(tǒng)權(quán)限和角色權(quán)限進(jìn)行結(jié)合?;蛘甙姹静煌?,表現(xiàn)得不一樣,在我的測(cè)試中,是Oracle 9.2.0.8 for Windows。

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
易賢網(wǎng)手機(jī)網(wǎng)站地址:Oracle數(shù)據(jù)庫(kù)視圖與權(quán)限問題
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)