日期:2014-05-16 浏览次数:20386 次
角色是一组相关权限的命名集合,使用角色最主要的目的是简化权限管理
而一旦这个集合的权限超过了用户的最低需求,就可能带来数据库的安全风险
角色口令测试
oracle 10g中,无论角色是否有口令,只要你将角色grant给某个用户,那么,默认的情况下,这些角色中的权限,用户都拥有。
oracle 11g中,角色的口令略有修正,当某个角色是拥有口令的话,当你将带有口令的角色 grant 给某个用户的话,那么默认的情况
下,这个带口令的角色下的所有权限,用户是无法拥有的,只有当 set 那个拥有口令的角色后,那么 ,带口令的
角色下的权限才在当前会话下才可以使用,不过,其他的角色都暂时失效,修改只在当前会话有效。
语法: ------只在当前会话有效
SET ROLE
{ role [ IDENTIFIED BY password ] [, role [ IDENTIFIED BY password ] ]... | ALL [ EXCEPT role [, role ]... ] | NONE } ;
oracle 10g 中测试带口令的角色
SYS@ORCL>select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
1. 创建两个角色 role_01 没有密码 role_02 有密码
SYS@ORCL>create role role_01;
Role created.
SYS@ORCL>create role role_02 identified by oracle;
Role created.
2.
赋予角色 role_01 连接、建表权限
SYS@ORCL>grant connect,create table to role_01;
Grant succeeded.
3.
赋予角色 role_02 连接、创建视图权限
SYS@ORCL>grant connect,create view to role_02;
Grant succeeded.
4.
创建测试用户 tyger
SYS@ORCL>create user tyger identified by tyger quota unlimited on users;
User created.
5.
将两个角色赋予tyger
SYS@ORCL>grant role_01,role_02 to tyger;
Grant succeeded.
6.
连接到用户测试
SYS@ORCL>conn tyger/tyger
Connected.
TYGER@ORCL>create table t(x int);
Table created.
TYGER@ORCL>insert into t values(1);