oracle 权限管理、角色管理详解

来源:互联网 发布:科隆群岛 知乎 编辑:程序博客网 时间:2024/05/29 05:09

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 OBJECTADMINISTER SQL TUNING SET                  ADVISORALTER ANY ASSEMBLY                         ALTER ANY CLUSTERALTER ANY CUBE                             ALTER ANY CUBE DIMENSIONALTER ANY DIMENSION                        ALTER ANY EDITIONALTER ANY EVALUATION CONTEXT               ALTER ANY INDEXALTER ANY INDEXTYPE                        ALTER ANY LIBRARYALTER ANY MATERIALIZED VIEW                ALTER ANY MINING MODELALTER ANY OPERATOR                         ALTER ANY OUTLINEALTER ANY PROCEDURE                        ALTER ANY ROLEALTER ANY RULE                             ALTER ANY RULE SETALTER ANY SEQUENCE                         ALTER ANY SQL PROFILEALTER ANY TABLE//修改任何表                  ALTER ANY TRIGGER//修改任何触发器ALTER ANY TYPE                             ALTER DATABASEALTER DATABASE LINK                        ALTER PROFILEALTER PUBLIC DATABASE LINK                 ALTER RESOURCE COSTALTER ROLLBACK SEGMENT                     ALTER SESSIONALTER SYSTEM                               ALTER TABLESPACEALTER USER                                 ANALYZE ANYANALYZE ANY DICTIONARY                     AUDIT ANYAUDIT SYSTEM                               BACKUP ANY TABLEBECOME USER                                CHANGE NOTIFICATIONCOMMENT ANY MINING MODEL                   COMMENT ANY TABLECREATE ANY ASSEMBLY                        CREATE ANY CLUSTERCREATE ANY CONTEXT                         CREATE ANY CUBECREATE ANY CUBE BUILD PROCESS              CREATE ANY CUBE DIMENSIONCREATE ANY DIMENSION                       CREATE ANY DIRECTORYCREATE ANY EDITION                         CREATE ANY EVALUATION CONTEXTCREATE ANY INDEX                           CREATE ANY INDEXTYPECREATE ANY JOB                             CREATE ANY LIBRARY             CREATE ANY MATERIALIZED VIEW               CREATE ANY MEASURE FOLDERCREATE ANY MINING MODEL                    CREATE ANY OPERATORCREATE ANY OUTLINE                         CREATE ANY PROCEDURECREATE ANY RULE                            CREATE ANY RULE SETCREATE ANY SEQUENCE                        CREATE ANY SQL PROFILECREATE ANY SYNONYM                         CREATE ANY TABLE//创建任何表CREATE ANY TRIGGER                         CREATE ANY TYPECREATE ANY VIEW                            CREATE ASSEMBLYCREATE CLUSTER                             CREATE CUBECREATE CUBE BUILD PROCESS                  CREATE CUBE DIMENSIONCREATE DATABASE LINK                       CREATE DIMENSIONCREATE EVALUATION CONTEXT                  CREATE EXTERNAL JOBCREATE INDEXTYPE                           CREATE JOBCREATE LIBRARY                             CREATE MATERIALIZED VIEWCREATE MEASURE FOLDER                      CREATE MINING MODELCREATE OPERATOR                            CREATE PROCEDURECREATE PROFILE                             CREATE PUBLIC DATABASE LINKCREATE PUBLIC SYNONYM                      CREATE ROLECREATE ROLLBACK SEGMENT                    CREATE RULECREATE RULE SET                            CREATE SEQUENCECREATE SESSION                             CREATE SYNONYMCREATE TABLE//创建本方案下的表                CREATE TABLESPACECREATE TRIGGER                             CREATE TYPECREATE USER                                CREATE VIEWDEBUG ANY PROCEDURE                        DEBUG CONNECT SESSIONDELETE ANY CUBE DIMENSION                  DELETE ANY MEASURE FOLDERDELETE ANY TABLE                           DEQUEUE ANY QUEUEDROP ANY ASSEMBLY                          DROP ANY CLUSTERDROP ANY CONTEXT                           DROP ANY CUBEDROP ANY CUBE BUILD PROCESS                DROP ANY CUBE DIMENSIONDROP ANY DIMENSION                         DROP ANY DIRECTORYDROP ANY EDITION                           DROP ANY EVALUATION CONTEXTDROP ANY INDEX                             DROP ANY INDEXTYPEDROP ANY LIBRARY                           DROP ANY MATERIALIZED VIEWDROP ANY MEASURE FOLDER                    DROP ANY MINING MODELDROP ANY OPERATOR                          DROP ANY OUTLINEDROP ANY PROCEDURE                         DROP ANY ROLEDROP ANY RULE                              DROP ANY RULE SETDROP ANY SEQUENCE                          DROP ANY SQL PROFILEDROP ANY SYNONYM                           DROP ANY TABLEDROP ANY TRIGGER                           DROP ANY TYPEDROP ANY VIEW                              DROP PROFILEDROP PUBLIC DATABASE LINK                  DROP PUBLIC SYNONYMDROP ROLLBACK SEGMENT                      DROP TABLESPACEDROP USER                                  ENQUEUE ANY QUEUEEXECUTE ANY ASSEMBLY//执行任何装配           EXECUTE ANY CLASSEXECUTE ANY EVALUATION CONTEXT             EXECUTE ANY INDEXTYPEEXECUTE ANY LIBRARY                        EXECUTE ANY OPERATOREXECUTE ANY PROCEDURE                      EXECUTE ANY PROGRAMEXECUTE ANY RULE                           EXECUTE ANY RULE SETEXECUTE ANY TYPE                           EXECUTE ASSEMBLYEXEMPT ACCESS POLICY                       EXEMPT IDENTITY POLICYEXPORT FULL DATABASE                       FLASHBACK ANY TABLEFLASHBACK ARCHIVE ADMINISTER               FORCE ANY TRANSACTIONFORCE TRANSACTION                          GLOBAL QUERY REWRITEGRANT ANY OBJECT PRIVILEGE                 GRANT ANY PRIVILEGEGRANT ANY ROLE                             IMPORT FULL DATABASEINSERT ANY CUBE DIMENSION                  INSERT ANY MEASURE FOLDERINSERT ANY TABLE                           LOCK ANY TABLEMANAGE ANY FILE GROUP                      MANAGE ANY QUEUEMANAGE FILE GROUP                          MANAGE SCHEDULERMANAGE TABLESPACE                          MERGE ANY VIEWON COMMIT REFRESH                          QUERY REWRITEREAD ANY FILE GROUP                        RESTRICTED SESSIONRESUMABLE                                  SELECT ANY CUBESELECT ANY CUBE DIMENSION                  SELECT ANY DICTIONARYSELECT ANY MINING MODEL                    SELECT ANY SEQUENCESELECT ANY TABLE                           SELECT ANY TRANSACTIONSYSDBA                                     SYSOPERUNDER ANY TABLE                            UNDER ANY TYPEUNDER ANY VIEW                             UNLIMITED TABLESPACEUPDATE ANY CUBE                            UPDATE ANY CUBE BUILD PROCESSUPDATE 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_DATABASEOLAP_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,必须选择一个。

0 0
原创粉丝点击