訪問權限

階級性和特權

範例——有三個用戶test1,test2,test3, 三個用戶都具有DBA色色權限。

         用TEST1用戶創建一個表T1,並將其查詢權限授予TEST2;

              用TEST2用戶創建一個視圖,視圖的基表是TEST1.T1,並將查詢權限授予TEST3

1.授權

    1.1. 視圖中,類似於定義者權限的存儲過程,是屏蔽了角色權限的。比如如果TEST1沒有顯式地將T1表的SELECT權限給予TEST2,那麼TEST2在創建視圖V_T1時也會報ORA-01031錯誤,即使TEST2用戶擁有DBA角色權限。

grant select on v_t1 to test3;

 

 1.2.如果在用戶test2的視圖中,引用了其他用戶test1的表,用戶test2將視圖的訪問權限給予用戶test3,那麼就變相地將用戶test1的表的訪問權限給予了用戶test3,因此,用戶test2必須有將用戶test1的表的訪問權限轉授用戶test3,也就是用戶test1在授予test2權限時,必須使用with grant option。

grant select on t1 to a with grant option;

*由於有SELECT ANY TABLE權限的存在,所有的用戶表都可以被訪問。但是顯式授予表的權限時,似乎表的權限有更高的優先級,並且沒有跟系統權限和角色權限進行結合。 

 

 

 

2.權限的查看

     

       2.1:與權限,角色相關的視圖大概有下面這些:

DBA_SYS_PRIVS: 查詢某個用戶所擁有的系統權限 USER_SYS_PRIVS: 當前用戶所擁有的系統權限

SESSION_PRIVS: 當前用戶所擁有的全部權限 ROLE_SYS_PRIVS: 某個角色所擁有的系統權限

注意: 要以SYS用戶登陸查詢這個視圖,否則返回空. ROLE_ROLE_PRIVS: 當前角色被賦予的角色

SESSION_ROLES: 當前用戶被激活的角色 USER_ROLE_PRIVS: 當前用戶被授予的角色

 

       2.2:另外還有針對表的訪問權限的視圖:

TABLE_PRIVILEGES            ALL_TAB_PRIVS         ROLE_TAB_PRIVS: 某個角色被賦予的相關表的權限

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章