oracle 權限管理、角色管理詳解

oracle權限分爲兩種:

  1. 系統權限:系統規定用戶使用數據庫的權限,允許用戶執行特定的數據庫動作,如創建表、創建索引、連接實例等。
  2. 對象權限:某種權限可以讓用戶對其它用戶的的表或視圖等對象進行特定操作。

(一)系統權限

oracle有哪些系統權限呢?可以通過查找系統權限字典(SYSTEM_PRIVILEGE_MAP)得到:

SELECT NAME FROM SYSTEM_PRIVILEGE_MAP

在oracle(oracle11.6g版本)中總共存在208中系統權限:

//管理任何sql調整集
ADMINISTER ANY SQL TUNING SET              ADMINISTER DATABASE TRIGGER//
ADMINISTER RESOURCE MANAGER                ADMINISTER SQL MANAGEMENT OBJECT
ADMINISTER SQL TUNING SET                  ADVISOR
ALTER ANY ASSEMBLY                         ALTER ANY CLUSTER
ALTER ANY CUBE                             ALTER ANY CUBE DIMENSION
ALTER ANY DIMENSION                        ALTER ANY EDITION
ALTER ANY EVALUATION CONTEXT               ALTER ANY INDEX
ALTER ANY INDEXTYPE                        ALTER ANY LIBRARY
ALTER ANY MATERIALIZED VIEW                ALTER ANY MINING MODEL
ALTER ANY OPERATOR                         ALTER ANY OUTLINE
ALTER ANY PROCEDURE                        ALTER ANY ROLE
ALTER ANY RULE                             ALTER ANY RULE SET
ALTER ANY SEQUENCE                         ALTER ANY SQL PROFILE
ALTER ANY TABLE//修改任何表                  ALTER ANY TRIGGER//修改任何觸發器
ALTER ANY TYPE                             ALTER DATABASE
ALTER DATABASE LINK                        ALTER PROFILE
ALTER PUBLIC DATABASE LINK                 ALTER RESOURCE COST
ALTER ROLLBACK SEGMENT                     ALTER SESSION
ALTER SYSTEM                               ALTER TABLESPACE
ALTER USER                                 ANALYZE ANY
ANALYZE ANY DICTIONARY                     AUDIT ANY
AUDIT SYSTEM                               BACKUP ANY TABLE
BECOME USER                                CHANGE NOTIFICATION
COMMENT ANY MINING MODEL                   COMMENT ANY TABLE
CREATE ANY ASSEMBLY                        CREATE ANY CLUSTER
CREATE ANY CONTEXT                         CREATE ANY CUBE
CREATE ANY CUBE BUILD PROCESS              CREATE ANY CUBE DIMENSION
CREATE ANY DIMENSION                       CREATE ANY DIRECTORY
CREATE ANY EDITION                         CREATE ANY EVALUATION CONTEXT
CREATE ANY INDEX                           CREATE ANY INDEXTYPE
CREATE ANY JOB                             CREATE ANY LIBRARY             
CREATE ANY MATERIALIZED VIEW               CREATE ANY MEASURE FOLDER
CREATE ANY MINING MODEL                    CREATE ANY OPERATOR
CREATE ANY OUTLINE                         CREATE ANY PROCEDURE
CREATE ANY RULE                            CREATE ANY RULE SET
CREATE ANY SEQUENCE                        CREATE ANY SQL PROFILE
CREATE ANY SYNONYM                         CREATE ANY TABLE//創建任何表
CREATE ANY TRIGGER                         CREATE ANY TYPE
CREATE ANY VIEW                            CREATE ASSEMBLY
CREATE CLUSTER                             CREATE CUBE
CREATE CUBE BUILD PROCESS                  CREATE CUBE DIMENSION
CREATE DATABASE LINK                       CREATE DIMENSION
CREATE EVALUATION CONTEXT                  CREATE EXTERNAL JOB
CREATE INDEXTYPE                           CREATE JOB
CREATE LIBRARY                             CREATE MATERIALIZED VIEW
CREATE MEASURE FOLDER                      CREATE MINING MODEL
CREATE OPERATOR                            CREATE PROCEDURE
CREATE PROFILE                             CREATE PUBLIC DATABASE LINK
CREATE PUBLIC SYNONYM                      CREATE ROLE
CREATE ROLLBACK SEGMENT                    CREATE RULE
CREATE RULE SET                            CREATE SEQUENCE
CREATE SESSION                             CREATE SYNONYM
CREATE TABLE//創建本方案下的表                CREATE TABLESPACE
CREATE TRIGGER                             CREATE TYPE
CREATE USER                                CREATE VIEW
DEBUG ANY PROCEDURE                        DEBUG CONNECT SESSION
DELETE ANY CUBE DIMENSION                  DELETE ANY MEASURE FOLDER
DELETE ANY TABLE                           DEQUEUE ANY QUEUE
DROP ANY ASSEMBLY                          DROP ANY CLUSTER
DROP ANY CONTEXT                           DROP ANY CUBE
DROP ANY CUBE BUILD PROCESS                DROP ANY CUBE DIMENSION
DROP ANY DIMENSION                         DROP ANY DIRECTORY
DROP ANY EDITION                           DROP ANY EVALUATION CONTEXT
DROP ANY INDEX                             DROP ANY INDEXTYPE
DROP ANY LIBRARY                           DROP ANY MATERIALIZED VIEW
DROP ANY MEASURE FOLDER                    DROP ANY MINING MODEL
DROP ANY OPERATOR                          DROP ANY OUTLINE
DROP ANY PROCEDURE                         DROP ANY ROLE
DROP ANY RULE                              DROP ANY RULE SET
DROP ANY SEQUENCE                          DROP ANY SQL PROFILE
DROP ANY SYNONYM                           DROP ANY TABLE
DROP ANY TRIGGER                           DROP ANY TYPE
DROP ANY VIEW                              DROP PROFILE
DROP PUBLIC DATABASE LINK                  DROP PUBLIC SYNONYM
DROP ROLLBACK SEGMENT                      DROP TABLESPACE
DROP USER                                  ENQUEUE ANY QUEUE
EXECUTE ANY ASSEMBLY//執行任何裝配           EXECUTE ANY CLASS
EXECUTE ANY EVALUATION CONTEXT             EXECUTE ANY INDEXTYPE
EXECUTE ANY LIBRARY                        EXECUTE ANY OPERATOR
EXECUTE ANY PROCEDURE                      EXECUTE ANY PROGRAM
EXECUTE ANY RULE                           EXECUTE ANY RULE SET
EXECUTE ANY TYPE                           EXECUTE ASSEMBLY
EXEMPT ACCESS POLICY                       EXEMPT IDENTITY POLICY
EXPORT FULL DATABASE                       FLASHBACK ANY TABLE
FLASHBACK ARCHIVE ADMINISTER               FORCE ANY TRANSACTION
FORCE TRANSACTION                          GLOBAL QUERY REWRITE
GRANT ANY OBJECT PRIVILEGE                 GRANT ANY PRIVILEGE
GRANT ANY ROLE                             IMPORT FULL DATABASE
INSERT ANY CUBE DIMENSION                  INSERT ANY MEASURE FOLDER
INSERT ANY TABLE                           LOCK ANY TABLE
MANAGE ANY FILE GROUP                      MANAGE ANY QUEUE
MANAGE FILE GROUP                          MANAGE SCHEDULER
MANAGE TABLESPACE                          MERGE ANY VIEW
ON COMMIT REFRESH                          QUERY REWRITE
READ ANY FILE GROUP                        RESTRICTED SESSION
RESUMABLE                                  SELECT ANY CUBE
SELECT ANY CUBE DIMENSION                  SELECT ANY DICTIONARY
SELECT ANY MINING MODEL                    SELECT ANY SEQUENCE
SELECT ANY TABLE                           SELECT ANY TRANSACTION
SYSDBA                                     SYSOPER
UNDER ANY TABLE                            UNDER ANY TYPE
UNDER ANY VIEW                             UNLIMITED TABLESPACE
UPDATE ANY CUBE                            UPDATE ANY CUBE BUILD PROCESS
UPDATE ANY CUBE DIMENSION                  UPDATE ANY TABLE

授予用戶系統權限的語句是:

GRANT privilege [, privilege...] TO user [, user| role, PUBLIC...]
[WITH ADMIN OPTION];

WITH ADMIN OPTION 使用戶同樣具有分配權限的權利,可將此權限授予別的用戶,另外使用該語法爲某個用戶授予系統權限,那麼對於這個被這個用戶授予相同權限的的所欲用戶來說,取消用戶的的系統權限不會級聯取消這些用戶的相同權限。

(二)對象權限

對象權限規則:
不同的對象擁有不同的權限;
對象的擁有者擁有所有權限;
對象的擁有者可以向外分配權限;
oracle中一共有8種對象權限,4個對象權限 :

   對象權限             表         視圖          序列        過程
  修改(alter)         有                      有
  刪除(delete)        有          有
  執行(execute)                                          有
  索引(index)         有
  插入(insert)        有          有
  關聯(references)    有          有
  選擇(select)        有          有          有
  更新(update)        有          有

對象授權語法:

   GRANT object_priv|ALL [(columns)]
   ON object
   TO {user|role|PUBLIC}
   [WITH GRANT OPTION];

其中,
ALL:所有對象權限
PUBLIC:授給所有的用戶
WITH GRANT OPTION:允許用戶再次給其它用戶授權;
在回收對象權限時,級聯回收。

(三)角色

在實際應用中,往往是將角色賦予用戶,而不是直接將系統權限賦予用戶。角色是一組權限的集合,將角色賦給一個用戶,這個用戶就擁有了這個角色中的所有權限。oracle中預先定義了一些角色,角色與權限對應關係通過下面語句查找:

select * from role_sys_privs

oracle預先定義了9種角色:

CONNECT//連接角色
DATAPUMP_EXP_FULL_DATABASE//數據導出角色(10g開始,更高效的導出)
DATAPUMP_IMP_FULL_DATABASE//數據導入角色
DBA//管理員角色
EXP_FULL_DATABASE//數據導出角色(10g之前)
IMP_FULL_DATABASE
OLAP_DBA//OLAP管理員,和數據倉庫有關
RESOURCE//資源
SCHEDULER_ADMIN

比較常用的角色就是DBA、CONNECT和RESOURCE這三種。其中DBA擁有全部管理權限,權限比較高,一般用戶不適合設置DBA角色;CONNECT和RESOURCE角色對應的系統權限爲:

CONNECT              CREATE SESSION
RESOURCE             CREATE CLUSTER
                     CREATE INDEXTYPE
                     CREATE OPERATOR
                     CREATE PROCEDURE
                     CREATE SEQUENCE
                     CREATE TABLE
                     CREATE TRIGGER
                     CREATE TYPE

可知,對於一般用戶,我們只要賦予CONNECT和RESOURCE角色就可以了,但是若這個用戶需要創建視圖,那麼這兩個角色不行了。oracle對於這些預定義的角色主要是爲了向後兼容,用於數據庫的管理。oracle建議用戶自己設計數據管理和安全的權限規劃,而不要簡單的使用這些預定角色。

(四)toad中權限、角色管理

在實際工作中,一般我們都是藉助數據庫管理工具,很少去編寫sql腳本來完成工作。toad是Quest Software提供的一款高效的Oracle應用開發工具,可以通過圖形化的用戶界面快速訪問數據庫。在toad中創建用戶時,彈出“create user”窗口,其中有Roles、System Privileges和Object Grants這個三個選項卡,分別對應角色管理、系統權限管理和對象權限管理。
這裏寫圖片描述

這裏寫圖片描述

其中,Roles中有Granted、Admin和Default,System Privileges中有Granted和Admin選項,Granted與Admin選項好理解,Roles中Default選項,是什麼意思呢?查找role_sys_privs ,得到授予角色的系統權限字典內容,發現有個字段ADMIN_OPTION,這個字段的內容有的是NO,有的是YES,爲No表示授予該角色的用戶無法給別的用戶授予這一角色。因此,在toad中就出現了一個Default選項,若選中Default,則表示授予該角色的用戶根據ADMIN_OPTION字段的值來判斷該用戶能不能給其它用戶授予相同的角色,若選中Admin,則可以繼續給其它用戶授權。在實際操作中發現,授予角色時,只選中Granted,根本無法給用戶授予角色,也就是說,選中Granted後,Admin與Default,必須選擇一個。

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