Oracle系統權限和角色權限都對用戶的權限作了相應的限制,這也在一定程度上保護了數據庫的訪問安全。下面就讓我們來一起了解一下。
Oracle系統權限
Oracle系統權限需要授予者有進行系統級活動的能力,如連接數據庫,更改用戶會話、建立表或建立用戶等等。你可以在數據字典視圖SYSTEM_PRIVILEGE_MAP上獲得完整的系統權限。
對象權限和Oracle系統權限都通過GRANT語句授予用戶或角色。需要注意的是在授予對象權限時語句應該是WITH GRANT OPTION子句,但在授予系統權象時語句是WITH ADMIN OPTION,所以在你試圖授予系統權限時,使用語句WITH GRANT OPTION系統會報告一個錯誤:ONLY ADMIN OPTION can be specifIEd。要特別注意這個語法和錯誤信息。
角色和角色權限
角色權限就是將屬於用戶的權限授予一個角色。任何權限都可以授予給一個角色。授予系統權限給被授予者必須使用WITH_ADMIN_OPTION子句,在會話期間通過SET ROLE語句授予或撤銷角色權限。
然而,角色權限不能依靠存儲在SQL中的權限。如果函數、程序、包、觸發器或者方法使用另一個計劃擁有的對象,那麼就必須直接給對象的擁有者授權,這是因為權限不會在會話之間改變。
授予和撤銷權限
給用戶或者角色授予權限使用GRANT 語句,GRANT語句的語法如下:
GRANT ROLE(或system privilege) TO user(role,Public) WITH ADMIN OPTION(可選)
對象權限被授予 WITH GRANT OPTION