角色是保存权限的容器。如果为某个用户授予一个角色,那么为这个角色授予的所有权限都会自动应用于该用户。就角色而言,使用WITH ADMIN OPTION为角色授予的权限不能级联取消。
Oracle 10G中的预定义角色及其被授予的权限
角色 | 被授予的权限 |
DBA | 几乎所有系统权限以及某些角色 |
SELECT_CATALOG_ROLE | 数据字典上的对象权限 |
EXECUTE_CATALOG_ROLE | 数据字典程序包、过程与函数上的对象权限 |
DELETE_CATALOG_ROLE | DELETE ON SYS.AUD$ DELETE ON SYS.FGA_LOG$ |
EXP_FULL_DATABASE | 从数据库中导出数据时查询任何表或序列、执行任何过程或类型以及修改数据字典对象的权限 |
IMP_FULL_DATABASE | 执行导入时,在数据库内除了SYS模式之外的任何模式中创建对象的权限 |
CONNECT | ALTER SESSION CREATE CLUSTER CREATE DBTABASE LINK CREATE SEQUENCE CREATE SESSION CREATE SYNONYM CREATE TABLE CREATE VIEW |
RESOURCE | CREATE CLUSTER CREATE INDEXTYPE CREATE OPERATOR CREATE PROCEDURE CREATE SEQUENCE CREATE TABLE CREATE TRIGGER CREATE TYPE UNLIMITED TABLESPACE(被授予权限时) |
AQ_ADMINISTRATOR_ROLE | Advanced Queuing(对象上的对象权限) CREATE EVALUATION CONTEXT CREATE RULE CREATE RULE SET DEQUEUE ANY QUEUE ENQUEUE ANY QUEUE MANAGE ANY QUEUE |
AQ_USER_ROLE | EXECUTE ON SYS.DBMS_AQ EXECUTE ON SYS.DBMS_AQIN EXECUTE ON SYS.DBMS_AQJMS_INTERNAL EXECUTE ON SYS.DBMS_TRANSFORM |
SCHEDULER_ADMIN | CREATE ANY JOB CREATE JOB EXECUTE ANY CLASS EXECUTE ANY PROGRAM MANAGE SCHEDULE(使用WITH ADMIN OPTION授予上述所有权限) |
PUBLIC | 不具有特殊的权限,不过为PUBLIC角色授予权限时,所有用户都会继承该权限 |
使用EM创建某个用户时,该用户会被自动授予CONNECT角色。
1、创建角色
CREATE ROLE命令的语法如下:
|
执行CREATE ROLE 命令的默认结果是创建一个具有特定名称的角色,并且不需要进行任何身份验证就能够支持指定的用户启用这个角色;希望借助某个应用程序启用一个角色,也可以通过后面加口令的IDENTIFIED BY子句;也可以用IDENTIFIED EXTERNALLY对角色进行身份验证,意味着启用一个角色,用户必须是操作系统组的一个成员。
IDENTIFIED EXTERNALLY验证:
Oracle初始化参数OS_ROLES设置为TRUE(默认为FALSE)。
必须在数据库驻留服务器上创建具有如下命名约定的组:ora__[_[d][a]]
- <SID>:ORACLE_SID参数值。
- <ROLE>:在数据库中创建的、需要使用IDENTIFIED EXTERNALLY进行身份验证的角色名称。
- d:指示<ROLE>部分指定的角色为用于用户的默认角色。如果指定了a或d,或者同时指定了a或d,它们前面必须使用下划线。
- a:指示可以使用WITH ADMIN OPTION为用户授予<ROLE>部分所指定的角色。如果指定了a或d,或者同时指定了a或d,它们前面必须使用下划线。
例:在我们这个ocp数据库创建一个角色名为dandanAdmin,并且希望这个角色是用于某些用户的默认角色以及使用WITH ADMIN OPTION为另一些用户授予的默认角色,我们应该创建两个组“ora_ocp_dandanAdmin_d”和“ora_ocp_dandanAdmin_da”。
2、修改角色
ALTER ROLE命令修改这个角色的身份验证方法:
|
3、为角色授予和出取消权限
为角色授权的方法和为用户授权的方法差不多,下面我们来看看。
为角色授予系统权限语法:
|
为角色授予对象权限语法:
|
取消角色系统权限语法:
|
取消角色对象权限语法:
|
4、为用户授予和取消角色
使用GRANT命令为用户授予角色语法:
|
REVOKE命令取消用户角色语法:
|
5、设置用户的默认角色
如果没有使用ALTER USER命令或EM进行指定,那么为某个用户授予的所有角色都被视为这个用户的默认角色。
|
6、启用与禁用角色
SET ROLE命令语法:
|
如果希望为某个用户禁用一个角色,那么就需要通过再次执行SET ROLE命令或执行DBMS_SESSION.SET_ROLE过程来省略不希望用户启用的角色。
7、删除角色
为了删除角色,必须作为创建这个角色的,被授予DROP ANY ROLE系统权限的用户,或者作为使用WITH ADMIN OPTION被授予这个角色的用户。DROP ROLE命令语法:
|
8、疯狂练习
一下这么多的权限、角色、用户、管理什么的。。。要搞懂看来要疯狂一把了。
|