角色是一组相关权限的命名集合,使用角色最主要的目的是简化权限管理。
权限的集合,可以分配给一个用户或其他角色,但角色不能授予自己,也不能循环授予角色的。
可以先创建角色,向该角色赋予一系列权限,然后再将该角色授予多个用户或角色增加或删除角色中的某一权限,被授予该角色的所有用户或角色自动地获得新增权限或删除旧的权限。
可以为角色设置密码
预定义角色。
connect自动建立,包含以下权限:
alter session;
create cluster;
create databaselink;
create sequence;
create session;
create synonym;
create table;
create view;
resource自动建立,包含以下权限:
create cluster、
create procedure、
create sequence、
create table、
create triggr。
dba (数据库管理员角色)
dba role拥有所有的系统权限,包括无限制的空间限额和给其他用户授予各种权限的能力。
显示角色信息的视图,
select * from role_sys_privs where role='CONNECT'
select * from role_tab_privs;
select * from role_role_privs;
select * from session_roles;
select * from user_role_privs;
select * from dba_roles where role='CONNECT';
除了前面讲到的三种系统角色:connect、resource和dba,用户还可以在oracle创建自己的role。用户创建的role可以由表或系统权限或两者的组合构成。为了创建role, 用户必须具有create role系统权限。
创建role,角色授权
sys/system用户创建角色
create role test_role;
删除角色
drop role test_role;
查看角色
select role,password_required from dba_roles where role='TEST_ROLE';
授系统权限
grant create table,create view ,create session to itpux_role with admin option;
授对象权限
grant select,insert,update on scott.emp to test_role;
检查系统/对象权限
select * from role_sys_privs where role='TEST_ROLE';
select * from role_tab_privs where role='TEST_ROLE';
角色授权给用户
drop user test cascade;
create user test identified by test;
grant test_role to test;
grant test_role to test with admin option;
create user test02 identified by test02;
SQL> conn test/test
SQL> grant test_role to test02;
检查角色授权信息
select * from dba_role_privs where granted_role='TEST_ROLE';
conn test/test
select * from user_role_privs;
select * from session_roles;
取消角色,删除角色
取消角色
revoke test_role from test02;
revoke test_role from test;
删除角色
drop role test_role;
设置默认的角色
grant resource,connect to test;
grant dba to test;
授角色排除法:将用户除默认角色外的其他角色都设置为默认角色
alter user test default role all except resource;
select * from dba_role_privs where grantee='TEST'
激活和禁止角色
关于connect和resource预定义角色:
connect, resoure 是role包含很多的权限的,其中resource具有创建表,索引,视图和其他的oracle对象的能力,同时默认带有unlimited tablespace权限。
一般将connect授予所有的普通用户
connect和resource授予开发人员
oracle声称connect和resource角色是为了与它早期的版兼容而保留的,尽可能不要使用这两个角色,以避免产生安全漏洞。