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,必须选择一个。

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