一.角色管理的概述
1.角色的概念
为了简化数据库权限的管理,在Oracle数据库中引入了角色的概念。所谓的角色就是一系列相关权限的集合。
2.角色的特点
在数据库中,角色的名称必须是唯一的,不能与用户同名。
由于角色不是模式对象,当创建角色的用户被删除时对角色没有任何影响。
角色可以包含任何的系统权限和对象权限
角色可以授予任何数据库用户和其他角色
授予用户的角色可以随时禁用或激活
可以使用default role语句设置用户的默认角色
如果创建角色时指定需要验证,则激活该角色时需要提供验证信息
可以随时增加或删除角色所具有的权限
3.优点
减少权限管理的工作量。
实现权限的动态管理
有效的使用权限
提供应用安全性
4.角色的分类 主要分为预定义角色与自定义角色
二.预定义角色
在Oracle11g数据库中有50多个预定义角色。最常用的有
dba
resource
connect等
查询当前数据库的的所有预定义角色
SQL> select * from dba_roles; ROLE PASSWORD_REQUIRED AUTHENTICATION_TYPE ------------------------------ ----------------- ------------------- CONNECT NO NONE RESOURCE NO NONE DBA NO NONE SELECT_CATALOG_ROLE NO NONE EXECUTE_CATALOG_ROLE NO NONE DELETE_CATALOG_ROLE NO NONE EXP_FULL_DATABASE NO NONE IMP_FULL_DATABASE NO NONE LOGSTDBY_ADMINISTRATOR NO NONE DBFS_ROLE NO NONE AQ_ADMINISTRATOR_ROLE NO NONE AQ_USER_ROLE NO NONE 。。。。。。。
这是所有的预定义的所有的角色
三.创建角色
语法
CREATE ROLE role[NOT IDENTIFIED]|[IDENTIFIED [BY password]]|EXTERNALLY|GLOBALLY
NOT IDENTIFIED:角色曹勇数据库认证,激活时不需要口令
创建4个角色,一个采用不需要口令数据库认证,一个采用需要口令数据库认证,一个采用操作系统认证,一个采用全局认证
SQL> create role role_emp; Role created SQL> create role role_emp identified by role_manager; SQL> create role role_manager identified by role_manager; Role created SQL> create role role_external identified externally; Role created SQL> create role role_global identified globally; Role created
四.角色权限的授予与回收
需要注意的
1.使用grant语句为角色授权的时候,自己需要grant admin option,或者是grant grant option
2.在Oracle11 g中不允许角色授权带有grant admin option,或者是grant grant option
五.修改角色
ALTER ROLE role[NOT IDENTIFIED]|[IDENTIFIED [BY password]]|EXTERNALLY|GLOBALLY
六.禁用与激活角色
1.禁用所有角色
set role none;
2.激活指定角色
set role connect ,resource,role_emp identified by role_emp;
3.激活除了个别角色外其他所有角色
set role all except role_manager,role_emp;
4.激活所有角色
set role all;
5.删除角色
drop role role_emp;
七.利用角色进行权限管理
设置用户的默认角色
alter user user default role role_list|[all [except role_list]]|none;
1.禁用用户user1的所有角色,当用户user1登录数据库时所有角色处于禁用状态
alter user user1 default role none;
2.将用户user1的角色connect,resource设置为默认角色
alter user user1 default role connect,resource;
3.将用户的所有角色设置为默认角色
alter user user1 default role all;
4.将用户除默认角色外的,其他角色都设置为默认角色
alte user user1 default role all execpt resource;