1、Oracle角色配置文件Oracle 角色、配置文件 -=-Oracle 角色、配置文件-=一、角色 1.角色 权限的集合,可以分配给一个用户或其他角色,但角色不能授予自己,也不能循环授予 角色的优点 可以先创建角色,向该角色赋予一系列权限,然后再将该角色授予多个用户或角色 增加或删除角色中的某一权限,被授予该角色的所有用户或角色自动地获得新增权限或删除旧的权限 可以为角色设置密码 2.创建修改角色 CREATE ROLE role_name NOT IDENTIFIED(默认) | IDENTIFIED BY password | EXTERNALLY |GLOBALLY; 注:同一个数据库
2、中角色名称必须唯一,且不能使用已存在的用户名称 不支持with grant option 为角色授予对象权限 支持with admin option 为角色授予系统权限或另一个角色 使用Enterprise Manager创建某个用户时,该用户被自动授予了CONNECT角色, 即同时具有了该角色的所有权限 IDENTIFIED BY EXTERNALLY 意味着了启用一个角色,用户必须是某个操作系统组的一个成员,该操作系统组的名称应当与角色相对应。 当希望通过操作系统对角色进行身份认证,则需要设置OS_ROLE参数为TRUE 且当设定了使用IDENTIFIED BY EXTERNALLY身份验
3、证,必须在数据库驻留的服务器上按以下格式创建组 ora_da d:指示部分指定的角色为用于用户的默认角色 a:指示可以使用with admin option为用户授予部分所指定的角色 关于外部身份验证,请参考:Oracle 密码文件 常用的角色 角色 被授予的权限 DBA 几乎所有系统权限 SELECT_CATALOG_ROLE 数据字典上的对象权限,未被授予任何系统权限 EXECUTE_CATALOG_ROLE 数据字典上的程序包、过程、函数的对象权限 DELETE_CATALOG_ROLE DELETE ON SYS.AUD$ DELETE ON SYS.FGA_LOG$ EXP_FULL
4、_DATABASE 从数据库中导出数据时查询任何表或序列、执行任何过程或类型以及修改 数据字典对象的权限 IMP_FULL_DATABASE 执行导入时,在数据库内除了sys模式之外的任何模式中创建对象的权限 CONNECT ALTER SESSION CREATE CLUSTER CREATE DATABASE LINK CREATE SEQUENCE CREATE SESSION CREATE SYNONYM CREATE TABLE CREATE VIEW RESOURCE CREATE CLUSTER CREATE INDEXTYPE CREATE OPERATOR CREATE PR
5、OCEDURE CREATE SEQUENCE CREATE TABLE CREATE TRIGGER CREATE TYPE UNLIMITED TABLESPACE (when granted) 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 O
6、N 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角色授予权限时,所有用户都会继承该权限 -创建不要口令的角色clerk SQL CREATE ROLE clerk; -创建要口令的角色
7、sales SQL CREATE ROLE sales IDENTIFIED BY money; -创建一个需要使用外部标识(如操作系统)的角色manager SQL CREATE ROLE manager IDENTIFIED EXTERNALLY; -创建后查看角色: SQL SELECT role,password_required FROM dba_roles; ROLE PASSWORD - - CLERK NO SALES YES MANAGER EXTERNAL 角色修改: ALTER ROLE rolename NOT IDENTIFIED | IDENTIFIED BY pa
8、ssword | EXTERNALLY | GLOBALLY; 一个角色在创建后可以修改,但只能修改它的验证方法。 但只有角色是使用带有with ADMIN option 选项的GRANT 语句授予的或者具 有ALTER ANY ROLE 系统权限的用户时,才可以修改这个角色 -将角色clerk 的验证方法改为使用外部(如操作系统)标识 SQL ALTER ROLE clerk IDENTIFIED EXTERNALLY; -将角色sales 的验证方法改为不使用任何标识方法 SQL ALTER ROLE sales NOT IDENTIFIED; -将角色manager 的验证方法改为使用口
9、令标识,口令为vampire SQL ALTER ROLE manager IDENTIFIED BY vampires; -再查询后即可看到变化 SELECT role,password_required FROM dba_roles 3.为角色授予和取消权限 a.角色授权 为角色授予系统权限语法 GRANT system_priv , system_priv, . TO role | PUBLIC , role | PUBLIC, . WITH ADMIN OPTION; 为角色授予对象权限语法 GRANT ALL PRIVILEGES | object_priv (column, col
10、umn, .) , object_priv (column, column, .( , . ON schema_name.object_name TO role | PUBLIC , role | PUBLIC, .; -为角色赋予权限(GRANT): SQL show user; USER is SYSTEM SQL CREATE ROLE manager; Role created. -赋予系统权限 SQL GRANT CREATE TABLE,CREATE VIEW,CREATE SESSION TO manager WITH ADMIN OPTION; Grant succeeded.
11、 -赋予对象权限 SQL GRANT SELECT ,INSERT ,UPDATE ON scott.emp TO manager; Grant succeeded. -查看角色的系统权限(role_sys_privs) SQL SELECT * FROM role_sys_privs WHERE role = MANAGER; ROLE PRIVILEGE ADM - - - MANAGER CREATE SESSION YES MANAGER CREATE TABLE YES MANAGER CREATE VIEW YES -查看角色的对象权限(role_tab_privs) SQL SE
12、LECT * FROM role_tab_privs WHERE role = MANAGER; ROLE OWNER TABLE_NAME COLUMN_NAME PRIVILEGE GRA - - - - - - MANAGER SCOTT EMP UPDATE NO MANAGER SCOTT EMP INSERT NO MANAGER SCOTT EMP b.取消角色所拥有的权限 取消角色拥有的系统权限语法 REVOKE system_priv | role_name , system_priv | role_name, . FROM role | PUBLIC ,role | PUB
13、LIC, .; 取消角色用户的对象权限语法 REVOKE ALL PRIVILEGES | object_priv , object_priv, . ON schema_name.object_name FROM role | PUBLIC ,role | PUBLIC, . CASCADE CONSTRAINTS -取消角色的系统权限 SQL REVOKE CREATE VIEW FROM manager; Revoked succeeded. -取消角色的对象权限 SQL REVOKE INSERT ,UPDATE ON scott.emp FROM manager; Revoked su
14、cceeded. -查看被取消权限后所剩余的权限的集合 SQL SELECT role,System_privs owner,privilege 2 FROM role_sys_privs 3 WHERE role = MANAGER 4 UNION 5 SELECT role,owner,privilege 6 FROM role_tab_privs 7 WHERE role = MANAGER; ROLE OWNER PRIVILEGE - - - MANAGER SCOTT SELECT MANAGER System_privs CREATE SESSION MANAGER System
15、_privs CREATE TABLE 4.角色赋予与角色取消 a.将角色赋予用户(grant): 语法: GRANT role_name , role_name, . TO user_name | role | PUBLIC , user_name | role | PUBLIC, . WITH ADMIN OPTION; -将角色赋予robinson且使用了WITH ADMIN OPTION SQL GRANT manager TO robinson WITH ADMIN OPTION; Grant succeeded. -robinson有权将角色授予john,如下 SQL CONN r
16、obinson/lion; Connected. SQL GRANT manager TO john; Grant succeeded. -查看角色授予了哪些用户(dba_role_privs) SQL SELECT * FROM dba_role_privs WHERE granted_role = MANAGER; GRANTEE GRANTED_ROLE ADM DEF - - - - SYSTEM MANAGER YES YES JOHN MANAGER NO YES ROBINSON MANAGER YES YES -查看用户拥有哪些角色 SQL CONN scott/tiger;
17、Connected. SQL SELECT * FROM user_role_privs; USERNAME GRANTED_ROLE ADM DEF OS_ - - - - - SCOTT CONNECT NO YES NO SCOTT RESOURCE NO YES NO -查看用户拥有哪些角色(使用session_roles) SQL SELECT * FROM session_roles; ROLE - CONNECT RESOURCE b.取消用户拥有的角色 语法: REVOKE role_name , role_name, . FROM user_name | role | PUB
18、LIC , user_name | role | PUBLIC, .; -取消用户角色 SQL REVOKE resource FROM scott; Revoke succeeded. -查看resource 角色已被取消 SQL CONN scott/tiger; Connected. SQL SELECT * FROM user_role_privs; USERNAME GRANTED_ROLE ADM DEF OS_ - - - - - SCOTT CONNECT NO YES NO -对于使用WITH ADMIN OPTION参数,收回robinson角色,并不影响john的级联角色
19、,如下: SQL select * from dba_role_privs where grantee=JOHN; GRANTEE GRANTED_ROLE ADM DEF - - - - JOHN MANAGER NO YES SQL revoke manager from robinson; Revoke succeeded. SQL select * from dba_role_privs where grantee=JOHN; GRANTEE GRANTED_ROLE ADM DEF - - - - JOHN MANAGER NO YES SQL select * from dba_r
20、ole_privs where grantee=ROBINSON; no rows selected 5.设置默认角色 可以将多个角色授予一个用户。默认角色是这些角色的一个子集,默认角色在用户登录系统时 自动激活(开启)。在默认情况下,所有赋予用户的角色在用户登录时不需要口令就被激活。 可以使用ALTER USER语句来限制用户有的默认角色。 语法: ALTER USER username DEFAULT ROLE role , role, . | ALL EXCEPT role , role, . | NONE; ALTER USER语句中的DEFAULT ROLE子句只适用于那些使用GRA
21、NT语句直接授予用户的角色。 DEFAULT ROLE子句在下列情况下是不能使用的: 通过其它角色授予的角色 没有直接授予该用户的角色 通过外部服务(如操作系统)管理的角色 -创建用户martin并授予resource,connect角色 SQL CREATE USER martin IDENTIFIED BY abc; User created. SQL GRANT RESOURCE,CONNECT TO martin; Grant succeeded. SQL CONN martin/abc; Connected. SQL CONN system/redhat Connected. -设置
22、缺省的角色为NONE后,无法登陆 SQL ALTER USER martin DEFAULT ROLE NONE; User altered. SQL CONN martin/abc; ERROR: ORA-01045: user MARTIN lacks CREATE SESSION privilege; logon denied Warning: You are no longer connected to ORACLE. SQL CONN system/redhat; Connected. -重置角色后可以正常登陆 SQL ALTER USER martin DEFAULT ROLE A
23、LL; User altered. SQL CONN martin/abc; Connected. -默认角色为除resource之外的所有角色 SQL ALTER USER martin DEFAULT ROLE ALL EXCEPT RESOURCE; User altered. 6.激活和禁止角色(SET ROLE) 语法: SET ROLE ALL EXCEPT role_name ,role_name | NONE | role_name IDENTIFIED BY password , role_name IDENTIFIED BY password, .; SQL CONN ro
24、binson/lion Connected. -查看用户拥有的所有角色 SQL SELECT * FROM user_role_privs; USERNAME GRANTED_ROLE ADM DEF OS_ - - - - - ROBINSON MANAGER NO YES NO ROBINSON RESOURCE NO YES NO -查看用户拥有的所有权限 SQL SELECT * FROM session_privs; PRIVILEGE - CREATE SESSION CREATE TABLE CREATE CLUSTER CREATE SEQUENCE CREATE PROCEDURE CRE
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1