oracle 权限管理、角色管理详解
来源:互联网 发布:科隆群岛 知乎 编辑:程序博客网 时间:2024/05/29 05:09
oracle权限分为两种:
- 系统权限:系统规定用户使用数据库的权限,允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等。
- 对象权限:某种权限可以让用户对其它用户的的表或视图等对象进行特定操作。
(一)系统权限
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,必须选择一个。
- oracle 权限管理、角色管理详解
- Oracle用户管理,权限管理,角色管理
- Oracle用户角色权限管理
- Oracle用户、权限、角色管理
- Oracle用户角色权限管理
- Oracle用户、权限、角色管理
- Oracle用户、权限、角色管理
- Oracle用户、权限、角色管理
- Oracle用户、权限、角色管理
- Oracle用户、权限、角色管理
- Oracle用户、权限、角色管理
- Oracle用户、角色、权限管理
- oracle权限、角色的管理!
- Oracle用户、权限、角色管理
- oracle用户、权限、角色管理
- Oracle用户、权限、角色管理
- Oracle用户、权限、角色管理
- Oracle用户、权限、角色管理
- spring的实例类注入service注解
- CentOS升级Python2.6到Python2.7并安装pip
- maven:使用mvn archetype:generate创建项目,停留在 "Generating project in Batch mode"
- 图像检索公开数据集
- 【LeetCode】406. Queue Reconstruction by Height
- oracle 权限管理、角色管理详解
- java多线程
- android 代码规范总结
- python断言
- JAVA中的强引用、软引用、弱引用、虚引用
- Maven 插件
- 第二章:类和对象的特征
- Android环境搭建之eclipse
- 最长递增子序列问题