您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Oracle Default Role 简述

2025/12/21 4:50:34发布10次查看
oracle系统权限基础是建立在三个维度层面上,即系统权限(system privilege)、对象权限(object privilege)和角色权限(role p
oracle系统权限基础是建立在三个维度层面上,即系统权限(system privilege)、对象权限(object privilege)和角色权限(role privilege)。系统权限定义了用户可以执行的某些行为操作;对象权限定义了用户在某个系统对象(如数据表、视图等)的操作权限;角色权限更像是一个容器对象,可以将一组系统权限、对象权限甚至其他角色权限容纳到其中。
三个维度权限在三个层面上构建了oracle权限体系框架。传统应用系统的一种配置方式是在数据库层面建立用户,,配置相关权限进行操作。这样的系统还可以在一些旧应用系统或者国外业务系统中看到。随着web应用的广泛使用,oracle权限体系需求的复杂性其实是在不断降低的。web应用通常只需要连接一个schema用户名即可,用户体系是在应用层面加以实现。
最近笔者遇到一个关于角色role的问题,最后发现是一个default role这个经常被忽视的设置出现问题。本文主要系统介绍一下这个特点功能。
1、环境介绍
oracle的权限体系在过去的版本中都在不断地发展丰富,笔者讨论基于oracle 11g,具体版本号为11.2.0.4。
sql> select * from v$version;
banner
--------------------------------------------------------------------------------
oracle database 11g enterprise edition release 11.2.0.4.0 - 64bit production
pl/sql release 11.2.0.4.0 - production
core      11.2.0.4.0    production
tns for linux: version 11.2.0.4.0 - production
nlsrtl version 11.2.0.4.0 – production
建立一个全新的用户。
sql> create user test identified by test;
user created
2、default role概论
和系统权限、对象权限相比,角色权限是比较特殊的一种权限类型。它更像是一种组合容器,可以将其他权限以组group的方式进行组织。一般来说,角色权限role privilege最常用的场景是简化管理难度,实现标准化配置管理。另一个角色权限的特点是动态赋予。系统权限和对象权限一旦赋予,用户只要登录就直接获得。而对象权限在这个问题上是可以选择的。
首先我们进行默认设置,对用户test进行一系列角色赋予动作。
sql> grant connect, resource to test;
grant succeeded
sql> grant sicspccgrole to test;
grant succeeded
sql> grant sicspctbcgrole to test;
grant succeeded
sql> grant sicspctrrole to test;
grant succeeded
通过视图db_role_privs,可以查看到角色与授予关系。
sql> select * from dba_role_privs where grantee='test';
grantee                        granted_role                  admin_option default_role
------------------------------ ------------------------------ ------------ ------------
test                          resource                      no          yes
test                          sicspccgrole                  no          yes
test                          sicspctbtrrole                no          yes
test                          connect                        no          yes
test                          sicspctbcgrole                no          yes
test                          sicspctrrole                  no          yes
6 rows selected
重点关注default_role列,对应test的几个权限,都被授予为default_role。换而言之,一个用户被赋予角色之后,直接就是默认角色即default role。
3、相关权限变化
如果角色对象底层权限发生变化,已经授权对象有什么影响呢?
sql> create role testrole ;
role created
sql> grant select on sics.cnu_environment to testrole;
grant succeeded
sql> grant testrole to test;
grant succeeded
此时新角色testrole被授予为default role。
sql> select * from dba_role_privs where grantee='test';
grantee                        granted_role                  admin_option default_role
------------------------------ ------------------------------ ------------ ------------
test                          resource                      no          yes
test                          sicspccgrole                  no          yes
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product