之前不是很明白加密角色的作用,今天查了一些资料发现加密角色可以以非default角色授予一个用户,只有在需要的时候再进行启用。一些比较敏感的权限在平时的工作中基本用不到,为了防止误操作完全可以把这些权限单独授予一个角色,只有在有需要的时候进行启用。还有就是对同一用户组的用户可以有一些权限上的分割,不知道加密角色密码的人无法启用这方面的权限。
下面进行实验:
首先创建两个角色r_cs和r_select,并且授予相应的权限:
SYS@ORCL>create role r_cs;
Role created.
SYS@ORCL>grant create session to r_cs;
Grant succeeded.
SYS@ORCL>create role r_select identified by r_select;
Role created.
SYS@ORCL>grant select on dba_objects to r_select;
Grant succeeded.
创建用户test,将r_cs和r_select都授予它,并将r_cs置为default role(default role也可以有多个):
SYS@ORCL>create user test identified by test;
User created.
SYS@ORCL>grant r_cs,r_select to test;
Grant succeeded.
SYS@ORCL>alter user test default role r_cs;
User altered.
这时候我们通过test用户连接后查询dba_objects的数据:
SYS@ORCL>conn test/test
Connected.
EST@ORCL>select count(*) from dba_objects;
select count(*) from dba_objects
*
ERROR at line 1:
ORA-00942: table or view does not exist
会发现无法查询,这时候我们启用r_select角色,然后再进行查询:
TEST@ORCL>set role r_select identified by r_select;
Role set.
TEST@ORCL>select count(*) from dba_objects;
COUNT(*)
----------
50327
本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/