Oracle系統(tǒng)權(quán)限和角色權(quán)限
Oracle系統(tǒng)權(quán)限和角色權(quán)限都對(duì)用戶的權(quán)限作了相應(yīng)的限制,這也在一定程度上保護(hù)了數(shù)據(jù)庫(kù)的訪問(wèn)安全。下面就讓我們來(lái)一起了解一下。
Oracle系統(tǒng)權(quán)限
Oracle系統(tǒng)權(quán)限需要授予者有進(jìn)行系統(tǒng)級(jí)活動(dòng)的能力,如連接數(shù)據(jù)庫(kù),更改用戶會(huì)話、建立表或建立用戶等等。你可以在數(shù)據(jù)字典視圖SYSTEM_PRIVILEGE_MAP上獲得完整的系統(tǒng)權(quán)限。
對(duì)象權(quán)限和Oracle系統(tǒng)權(quán)限都通過(guò)GRANT語(yǔ)句授予用戶或角色。需要注意的是在授予對(duì)象權(quán)限時(shí)語(yǔ)句應(yīng)該是WITH GRANT OPTION子句,但在授予系統(tǒng)權(quán)象時(shí)語(yǔ)句是WITH ADMIN OPTION,所以在你試圖授予系統(tǒng)權(quán)限時(shí),使用語(yǔ)句WITH GRANT OPTION系統(tǒng)會(huì)報(bào)告一個(gè)錯(cuò)誤:ONLY ADMIN OPTION can be specified。要特別注意這個(gè)語(yǔ)法和錯(cuò)誤信息。
角色和角色權(quán)限
角色權(quán)限就是將屬于用戶的權(quán)限授予一個(gè)角色。任何權(quán)限都可以授予給一個(gè)角色。授予系統(tǒng)權(quán)限給被授予者必須使用WITH_ADMIN_OPTION子句,在會(huì)話期間通過(guò)SET ROLE語(yǔ)句授予或撤銷(xiāo)角色權(quán)限。
然而,角色權(quán)限不能依靠存儲(chǔ)在SQL中的權(quán)限。如果函數(shù)、程序、包、觸發(fā)器或者方法使用另一個(gè)計(jì)劃擁有的對(duì)象,那么就必須直接給對(duì)象的擁有者授權(quán),這是因?yàn)闄?quán)限不會(huì)在會(huì)話之間改變。
授予和撤銷(xiāo)權(quán)限
給用戶或者角色授予權(quán)限使用GRANT 語(yǔ)句,GRANT語(yǔ)句的語(yǔ)法如下:
GRANT ROLE(或system privilege) TO user(role,Public) WITH ADMIN OPTION(可選)
對(duì)象權(quán)限被授予 WITH GRANT OPTION
【編輯推薦】
Oracle批量賦權(quán)的實(shí)現(xiàn)
oracle樹(shù)查詢(xún)的實(shí)現(xiàn)