为什个么要引入角色
将要为大量用户授予相同的多个权限时,系统权限的使用次数将是惊人的数目,当这些系统权限需要修改时,其修改量也是惊人的。
什么是角色
角色是一组命名的相关权限,这组权限可以通过这个名字授予用户或其他角色。
怎样创建角色
Create role 角色名
【identified by 口令】
或【identified externally】
在创建角色时怎样设置口令标识
Create role cat
Identified by miaomiao
怎样修改角色
Alter role cat identified externally
一个角色在创建之后是可以修改的,但只能修改它的验证方法
如何将系统权限授予角色
Grant 系统权限名 to 角色
如何将角色分别授予多个用户
Grant manager,clerk to 用户名【with admin option】
怎样得到一个角色所拥有的系统权限
Select * from role_sys_privs where role=’角色名’
怎样获得用户被授予的角色
Select * from user_role_privs
怎样为一个用户设置默认角色
Alter user 用户名default role 角色名
怎样为一个用户设置非默认角色
Alter user 用户名 default role none;
Alter user 用户名 default role all except 角色名
怎样获得用户的默认与非默认角色的信息
Select * from user_role_privs
怎样激活与禁止角色
禁止:set role 角色名none
激活:set role 角色名【identified by 口令】
怎样回收和删除角色
回收:revoke 角色名 from 用户名
删除:drop role 角色名
Oracle推荐的两个创建和使用角色的模型
第一种:通过角色授权的方法,该模型告知不要将权限直接授予用户,应该
!首先将数据库系统中的用户根据他们的工作性质进行分组,之后为每一个用户创建一个用户角色
!接下来将系统的应用进行分类,然后为每一类应用创建一个应用角色
!将权限首先授予应用角色
!再将应用角色授予用户
!最后将用户角色授予真正的用户
第二种:只将一些不重要的权限授予默认角色,而那些可能会威胁到系统安全的权限(如DML操作)只授予哪些有口令的角色,即非默认角色,之后再将这些角色赋予相应的用户,用户在登录后只能自动地使用那些以默认角色授予的权限,如果用户想使用以非默认角色授予的权限,就必须提供正确的口令
Oracle常用的预定义的角色
EXP_FULL_DATABASE:导出数据库的权限
IMP_FULL_DATABASE:导入数据库的权限
SELECT_CATALOG_ROLE:查询数据字典的权限
EXECUTE_CATALOG_ROLE:数据字典上的执行权限
DELETE_CATALOG_ROLE:数据字典上的删除权限
DBA,CONNECT,RESOURSE:这三个角色是为了用以前版本兼容而设置的。