回收DBA角色的注意事項

來源:互聯網
上載者:User

回收DBA角色的注意事項

Oracle對於許可權的劃分粒度非常精細,為了方便管理條目眾多許可權,Oracle引入了角色(role)這個邏輯概念,也在系統中預先設定了很多角色。在實際的應用中,應用使用者對於許可權的需要可能較為複雜,因此為了方便授權,很多應用使用者被授予DBA角色,DBA角色擁有較多的系統許可權,這對於資料庫的管理是非常不利的,違反了許可權最小化的安全原則。出於安全的考慮,系統可能需要回收DBA角色,在回收許可權的過程中,為了保證應用正常運行,需要注意一些細節,下文將對幾個需要注意的點進行討論。

  實驗環境說明(本文中的結論適用於10g~11.2.0.4):
  1. SQL> select * from v$version;
  2. BANNER
  3. --------------------------------------------------------------------------------
  4. Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
  5. PL/SQL Release 11.2.0.3.0 - Production
  6. CORE    11.2.0.3.0    Production
  7. TNS for Linux: Version 11.2.0.3.0 - Production
  8. NLSRTL Version 11.2.0.3.0 - Production

 一、grant/revoke role操作的生效時間

  1. --建立一個新使用者,並授予connect角色
  2. session 1:
  3. SQL> create user darren identified by darren;
  4. User created.
  5. SQL> grant connect to darren;
  6. Grant succeeded.
  7. --使用新使用者登入資料庫
  8. session 2:
  9. SQL> conn darren/darren
  10. Connected.
  11. SQL> select * from session_privs;
  12. PRIVILEGE
  13. ----------------------------------------
  14. CREATE SESSION
  15. SQL> select * from session_roles;
  16. ROLE
  17. ------------------------------
  18. CONNECT

  保持session 2不退出,在session 1中授予resource角色

  1. session 1:
  2. SQL> grant resource to darren;
  3. Grant succeeded.
  4. --session 2中查詢使用者擁有的系統許可權和角色
  5. SQL> select * from session_privs;
  6. PRIVILEGE
  7. ----------------------------------------
  8. CREATE SESSION
  9. UNLIMITED TABLESPACE --新增加的系統許可權
  10. SQL> select * from session_roles;
  11. ROLE
  12. ------------------------------
  13. CONNECT

  退出session,重新登入使用者

  1. SQL> conn darren/darren
  2. Connected.
  3. SQL> select * from session_privs;
  4. PRIVILEGE
  5. ----------------------------------------
  6. CREATE SESSION
  7. UNLIMITED TABLESPACE
  8. CREATE TABLE
  9. CREATE CLUSTER
  10. CREATE SEQUENCE
  11. CREATE PROCEDURE
  12. CREATE TRIGGER
  13. CREATE TYPE
  14. CREATE OPERATOR
  15. CREATE INDEXTYPE
  16. 10 rows selected.
  17. SQL> select * from session_roles;
  18. ROLE
  19. ------------------------------
  20. CONNECT
  21. RESOURCE

 

   結論:1、UNLIMITED TABLESPACE系統許可權會隨resource角色授予使用者,由於是作為單獨的系統許可權,因此會立即生效;       2、grant/revoke角色不會立即生效,需要使用set role或者重新登入才生效(直接授予系統許可權、對象許可權是立即生效)。

  二、回收DBA角色時的影響        繼續上面的實驗,在session 1中授予和回收使用者DBA角色,session 2重新登入使用者
  1. session 1:
  2. SQL> grant dba to darren;
  3. Grant succeeded.
  4. SQL> revoke dba from darren;
  5. Revoke succeeded.
  6. session 2:
  7. SQL> conn darren/darren
  8. Connected.
  9. SQL> select count(*) from session_privs;
  10.   COUNT(*)
  11. ----------
  12.     9
  13. SQL> select * from session_roles;
  14. ROLE
  15. ------------------------------
  16. CONNECT
  17. RESOURCE
  18. SQL> select * from session_privs; --注意,這裡沒有了UNLIMITED TABLESPACE許可權
  19. PRIVILEGE
  20. ----------------------------------------
  21. CREATE SESSION
  22. CREATE TABLE
  23. CREATE CLUSTER
  24. CREATE SEQUENCE
  25. CREATE PROCEDURE
  26. CREATE TRIGGER
  27. CREATE TYPE
  28. CREATE OPERATOR
  29. CREATE INDEXTYPE
  在session 2中建立表並插入資料

  1. SQL> create table test1(a varchar2(20),b varchar2(10)); --這裡能建立成功是由於11g的延遲段建立特性,在這裡並沒有在資料表空間中實際產生segment
  2. Table created.
  3. SQL> insert into test1 values('a','b');
  4. insert into test1 values('a','b')
  5.             *
  6. ERROR at line 1:
  7. ORA-01950: no privileges on tablespace 'USERS'
      結論:1、在回收DBA角色時,UNLIMITED TABLESPACE許可權會被回收;         2、回收UNLIMITED TABLESPACE許可權後使用者的資料表空間quota立即耗盡,即無法使用tablespace的儲存空間。

 三、回收DBA許可權後的處理
       1、由於回收DBA許可權後使用者的UNLIMITED TABLESPACE系統許可權被回收,可以按下列方式之一給使用者授權,以便使用者能正常使用資料表空間:
  1. SQL> grant RESOURCE to DARREN;
  2. SQL> alter user DARREN quota unlimited on USERS;
  3. SQL> grant UNLIMITED TABLESPACE to DARREN;
        2、如果應用使用者有特殊的許可權需求,需要在回收DBA角色後單獨為使用者授予部分系統許可權、對象許可權。

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.