实验目的:掌握Oracle数据库的访问控制策略;掌握用户、权限和角色的管理方法。
实验要求:
- 创建两个用户,他们分别采用操作系统认证和数据库认证。
采用操作系统认证创建用户
先查看初始化参数OS_AUTHENT_PREFIX设置,创建用户时加上该前缀;
show parameter OS_AUTHENT_PREFIX;
create user ops$chen
identified externally;
采用数据库认证创建用户
create user zhang
identified by zhang123
password expire
default tablespace users
quota 10M on users
temporary tablespace temp;
- 授予用户系统权限(如创建会话和表等)和对象权限(如scott.emp的相关权限)。
授予用户系统权限
grant create session, create table to zhang;
grant create session, create table to ops$chen;
授予用户对象权限
grant insert,update,delete on scott.emp to zhang;
grant insert,update,delete on scott.emp to ops$chen;
- 创建两个角色,并为角色授予一定的权限,然后将角色授予上面创建的用户。设置默认角色和在会话中启用角色,然后执行用户通过角色所获得权限的相应操作。
创建角色
create role sr_admin identified by admin;
create role sr_query identified by query;
为用户授权
grant create session to sr_admin;
grant insert,update,delete on scott.dept to sr_admin;
grant select on scott.dept to sr_query;
将角色授予上面创建的用户
grant sr_admin to zhang;
grant sr_query to zhang with admin option;
设置默认角色
alter user zhang default role sr_admin;
在会话中启用角色
set role sr_query identified by query;
执行用户通过角色所获得权限的相应操作
select * from role_role_privs where ROLE='SR_ADMIN';
select * from role_sys_privs where role='SR_ADMIN';//角色的系统权限
select * from role_tab_privs where role='SR_ADMIN';//角色的对象权限
select * from dba_role_privs where grantee='ZHANG';
- 通过数据字典查询上面创建的用户和角色信息,以及为用户授予的权限和角色信息,以及当前会话启用的角色信息。
select username,default_tablespace,temporary_tablespace
from dba_users
where account_status = 'OPEN';//查询创建用户信息
select * from dba_role_privs where grantee='OPS$CHEN';//授予用户的角色信息
select role from session_roles;//查询当前会话启用的角色信息。
select * from user_role_privs;