【Privilege】Oracle系統許可權非級聯收回現象測試

secooler發表於2011-10-25
  Oracle許可權分為系統許可權和物件許可權。這裡給大家演示一下關於系統許可權授予以及回收過程中的一個特殊場景:系統許可權非級聯收回現象。
  本實驗中共涉及到三個使用者:SYS使用者、secooler1使用者和secooler2使用者。

1.清理並初始化使用者
1)清理測試使用者secooler1和secooler2
sys@secdb> drop user secooler1;

User dropped.

sys@secdb> drop user secooler2;

User dropped.

2)建立測試使用者secooler1和secooler2
sys@secdb> create user secooler1 identified by secooler1;

User created.

sys@secdb> create user secooler2 identified by secooler2;

User created.

2.對secooler1使用者和secooler2使用者進行授權
1)SYS使用者使用with admin option選項對secooler1使用者授予建立會話的系統許可權
sys@secdb> grant create session to secooler1 with admin option;

Grant succeeded.

2)連線到secooler1使用者將建立會話的許可權授予secooler2使用者
因為secooler1具有admin許可權,因此可以將建立會話的許可權再次授予其他使用者,這裡將建立會話的許可權授予secooler2使用者。
sys@secdb> conn secooler1/secooler1
Connected.
secooler1@secdb> grant create session to secooler2;

Grant succeeded.

3.檢視系統許可權授予情況
1)連線到SYS使用者
secooler1@secdb> conn / as sysdba
Connected.

2)檢視secooler1使用者的系統許可權
sys@secdb> select * from dba_sys_privs where grantee='SECOOLER1';

GRANTEE              PRIVILEGE                      ADM
-------------------- ------------------------------ ---
SECOOLER1            CREATE SESSION                 YES

secooler1使用者具有建立會話的許可權,同時具有admin選項。

3)檢視secooler2使用者的系統許可權
sys@secdb> select * from dba_sys_privs where grantee='SECOOLER2';

GRANTEE              PRIVILEGE                      ADM
-------------------- ------------------------------ ---
SECOOLER2            CREATE SESSION                 NO

secooler2使用者具有建立會話的許可權。

4.使用SYS使用者回收secooler1使用者的建立會話許可權
sys@secdb> revoke create session from secooler1;

Revoke succeeded.

5.確認系統許可權回收結果
sys@secdb> select * from dba_sys_privs where grantee='SECOOLER1';

no rows selected

sys@secdb> select * from dba_sys_privs where grantee='SECOOLER2';

GRANTEE              PRIVILEGE                      ADM
-------------------- ------------------------------ ---
SECOOLER2            CREATE SESSION                 NO

可見,secooler1使用者的建立會話的許可權已經被回收成功,但是注意,這裡secooler2使用者的建立會話的許可權並沒有被級聯收回。這便是系統許可權回收過程中的特點。

6.測試使用者許可權收回結果
sys@secdb> conn secooler2/secooler2
Connected.
secooler2@secdb> conn secooler1/secooler1
ERROR:
ORA-01045: 使用者 SECOOLER1 沒有 CREATE SESSION 許可權; 登入被拒絕


Warning: You are no longer connected to ORACLE.

可見,此時secooler2使用者依然可以連線成功,因為secooler2使用者的建立會話的許可權沒有被級聯收回。

7.小結
  Oracle系統許可權不具有級聯收回的功能。在使用具有admin選項授權時請注意許可權收回的全面性。

Good luck.

secooler
11.10.25

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-709663/,如需轉載,請註明出處,否則將追究法律責任。

相關文章