理解 Oracle 多租户体系中(12c,18c,19c)Revoke 回收权限作用域范围
本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个回收可以成功执行?
1. 在CDB级别中对用户进行权限回收,不带 container 子句的效果;
2. 在CDB级别中对用户进行权限回收,带 container=all 子句的效果;
3. 在CDB级别中对用户进行权限回收,带 container=current 子句的效果;
4. 在PDB级别中对用户进行权限回收,不带 container 子句的效果;
5. 在PDB级别中对用户进行权限回收,带 container=all 子句的效果;
6. 在PDB级别中对用户进行权限回收,带 container=current 子句的效果;
请熟悉创建用户作用域、创建角色作用域和授权作用域。本篇将在以上理论基础上进行演示。
演示数据库版本:18.3.0.0.0(18c)
权限回收,针对的是授权,我们回顾下授权的作用域范围:需要注意的是,在考试中,经常考到在CDB级别授权及回收权限的作用域。
1. 在CDB级别中对用户进行授权,不带 container 子句的效果: 仅作用于当前CDB
2. 在CDB级别中对用户进行授权,带 container=all 子句的效果:作用于当前CDB和所有PDB
3. 在CDB级别中对用户进行授权,带 container=current 子句的效果:仅作用于当前CDB
4. 在PDB级别中对用户进行授权,不带 container 子句的效果:仅作用于当前PDB
5. 在PDB级别中对用户进行授权,带 container=all 子句的效果:X错误X PDB级别不能使用 ALL
6. 在PDB级别中对用户进行授权,带 container=current 子句的效果:仅作用于当前PDB
对于授权作用域,我们总结成三句话:也就是授权一共3种情况,仅作用于CDB,作用于全局,仅作用于PDB
仅作用于CDB:CDB级别不带子句或带了 current 都只作用于当前CDB
作用于全局:CDB级别如果带了 ALL,将作用于CDB和所有PDB全局
仅作用于PDB:PDB级别不带子句或带了 current 都只作用于当前PDB,无法带 ALL
注意:以上3种情况的授权,分别又对应3种回收选项(不带子句,带 all,带 current),所以共计9种情况,逐个讨论。
情况一:CDB授权作用于当前CDB,回收不带子句
创建用户 c##r1 并授权。符号 '<>' 代表默认值可省略
SQL> create user c##r1 identified by r1 <container=all>; ---用户默认作用于全局容器 User created. SQL> grant create session to c##r1 <container=current>; ---授权默认作用于当前容器CDB Grant succeeded.
所有容器均存在用户 c##r1 ,但只有CDB级别可以登录,PDB无法登陆。
回收权限,不带子句
SQL> revoke create session from c##r1; Revoke succeeded. SQL> conn c##r1/r1@cdb18c;
ERROR:
ORA-01045: user C##R1 lacks CREATE SESSION privilege; logon denied
不带子句,回收成功,默认作用于当前CDB,回收后,无法登陆。
情况二:CDB授权作用于当前CDB,回收带 ALL
创建用户 c##r2 并授权。
SQL> create user c##r2 identified by r2; User created. SQL> grant create session to c##r2; Grant succeeded.
所有容器均存在用户 c##r2 ,但只有CDB级别可以登录,PDB无法登陆。
回收权限,子句带 ALL
SQL> revoke create session from c##r2 container=all;
revoke create session from c##r2 container=all
*
ERROR at line 1:
ORA-65092: system privilege granted with a different scope to 'C##R2'
子句带 ALL,将报错。因授权只针对当前CDB生效,所以回收无法针对所有容器回收。
情况三:CDB授权作用于当前CDB,回收带 CURRENT
创建用户 c##r3 并授权。
SQL> create user c##r3 identified by r3; User created. SQL> grant create session to c##r3; Grant succeeded.
所有容器均存在用户 c##r3 ,但只有CDB级别可以登录,PDB无法登陆。
回收权限,子句带 CURRENT
SQL> revoke create session from c##r3 container=current; Revoke succeeded. SQL> conn c##r3/r3@cdb18c;
ERROR:
ORA-01045: user C##R3 lacks CREATE SESSION privilege; logon denied
子句带 CURRENT,回收成功,作用于当前CDB,回收后,无法登陆。
情况四:CDB授权作用于全局容器,回收不带子句
创建用户 c##r4 并授权。
SQL> create user c##r4 identified by r4; User created. SQL> grant create session to c##r4 container=all; Grant succeeded.
所有容器均存在用户 c##r4 ,且CDB和所有PDB均可登录。
回收权限,不带子句
SQL> revoke create session from c##r4;
revoke create session from c##r4
*
ERROR at line 1:
ORA-65092: system privilege granted with a different scope to 'C##R4'
不带子句,回收失败。因授权针对的是全局容器生效,所以回收无法针对当前CDB容器进行回收。---OCP考试内容
情况五:CDB授权作用于全局容器,回收带 ALL
创建用户 c##r5 并授权。
SQL> create user c##r5 identified by r5; User created. SQL> grant create session to c##r5 container=all; Grant succeeded.
所有容器均存在用户 c##r5 ,且CDB和所有PDB均可登录。
回收权限,子句带 ALL
SQL> revoke create session from c##r5 container=all; Revoke succeeded. SQL> conn c##r5/r5@cdb18c; ---CDB无法登陆
ERROR:
ORA-01045: user C##R5 lacks CREATE SESSION privilege; logon denied Warning: You are no longer connected to ORACLE. SQL> conn c##r5/r5@orders; ---PDB无法登陆
ERROR:
ORA-01045: user C##R5 lacks CREATE SESSION privilege; logon denied
子句带 ALL,回收成功。针对所有容器,CDB及PDB将无法登陆。
情况六:CDB授权作用于全局容器,回收带 CURRENT
创建用户 c##r6 并授权。
SQL> create user c##r6 identified by r6; User created. SQL> grant create session to c##r6 container=all; Grant succeeded.
所有容器均存在用户 c##r6 ,且CDB和所有PDB均可登录。
回收权限,子句带 CURRENT
SQL> revoke create session from c##r6 container=current;
revoke create session from c##r6 container=current
*
ERROR at line 1:
ORA-65092: system privilege granted with a different scope to 'C##R6'
带 current 回收失败。因授权针对的是全局容器生效,所以回收无法针对当前CDB容器进行回收。
情况七:PDB自己授权,回收不带子句
CDB创建用户 c##r7
SQL> create user c##r7 identified by r7; User created.
所有容器均存在用户 c##r7 ,且CDB和所有PDB现在都不可以登陆。
PDB单独对 c##r7 用户进行授权。
SQL> alter session set container=orders; Session altered. SQL> grant create session to c##r7; ---PDB级别默认授权为 CURRENT,无法进行 ALL 授权 Grant succeeded.
结果为PDB可登录了,CDB无法登陆
SQL> conn c##r7/r7@cdb18c; ---CDB无法登陆
ERROR:
ORA-01045: user C##R7 lacks CREATE SESSION privilege; logon denied Warning: You are no longer connected to ORACLE. SQL> conn c##r7/r7@orders; ---PDB可登陆
Connected.
CDB尝试回收
SQL> conn / as sysdba
Connected.
SQL> revoke create session from c##r7;
revoke create session from c##r7
*
ERROR at line 1:
ORA-01952: system privileges not granted to 'C##R7'
报错,原因是CDB级别根本没有进行授权。
PDB自己尝试回收
SQL> conn sys/oracle@orders as sysdba
Connected.
SQL> revoke create session from c##r7; Revoke succeeded.
也就是说:PDB级别自己针对公共用户的授权,只能由PDB级别自己管理,CDB无法进行权限回收。
情况八:PDB自己授权,回收带 ALL
CDB创建用户 c##r8,PDB级别自己授权
SQL> conn / as sysdba
Connected.
SQL> create user c##r8 identified by r8; User created. SQL> alter session set container=orders; Session altered. SQL> grant create session to c##r8; Grant succeeded.
结果为PDB可登录,CDB无法登陆
PDB 带子句 ALL 进行回收
SQL> revoke create session from c##r8 container=all;
revoke create session from c##r8 container=all
*
ERROR at line 1:
ORA-65040: operation not allowed from within a pluggable database
报错,在PDB级别操作不被允许,无法使用子句 container=all
情况九:PDB自己授权,回收带 CURRENT
CDB创建用户 c##r9,PDB级别自己授权
SQL> conn / as sysdba
Connected.
SQL> create user c##r9 identified by r9; User created. SQL> alter session set container=orders; Session altered. SQL> grant create session to c##r9; Grant succeeded.
结果为PDB可登录,CDB无法登陆
PDB 带子句 CURRENT 进行回收
SQL> revoke create session from c##r9 container=current; Revoke succeeded.
回收成功,PDB级别默认和CURRENT情况一致。
综上:
情况一:CDB授权作用于当前CDB,回收不带子句 回收当前CDB权限
情况二:CDB授权作用于当前CDB,回收带 ALL X错误X
情况三:CDB授权作用于当前CDB,回收带 CURRENT 回收当前CDB权限
-----------------------------------------------------------------------------------------------------------
情况四:CDB授权作用于全局容器,回收不带子句 X错误X
情况五:CDB授权作用于全局容器,回收带 ALL 回收全局容器权限
情况六:CDB授权作用于全局容器,回收带 CURRENT X错误X
-----------------------------------------------------------------------------------------------------------
情况七:PDB自己授权,回收不带子句 回收当前PDB权限
情况八:PDB自己授权,回收带 ALL X错误X
情况九:PDB自己授权,回收带 CURRENT 回收当前PDB权限
理解 Oracle 多租户体系中(12c,18c,19c)Revoke 回收权限作用域范围的更多相关文章
- 理解 Oracle 多租户体系中(12c,18c,19c)Grant授权作用域范围
本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个授权可以成功执行? 1. 在CDB级别中对用户进行授权,不带 container 子句的效果: 2. 在CDB级别中对用户进行授权,带 co ...
- 理解 Oracle 多租户体系中(12c,18c,19c)创建角色作用域范围
本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个可以成功创建角色? 1. 在CDB级别中创建公共角色,不带 container 子句的效果: 2. 在CDB级别中创建公共角色,带 cont ...
- 理解 Oracle 多租户体系中(12c,18c,19c)创建用户作用域范围
本篇探讨以下几个问题:你可提前猜测下面6个场景语句中,哪几个可以成功创建用户? 1. 在CDB级别中创建公共用户,不带 container 子句的效果: 2. 在CDB级别中创建公共用户,带 cont ...
- Oracle 12c 多租户家族(12c 18c 19c)如何在 PDB 中添加 HR 模式
Oracle 12c 多租户家族(12c [12.2.0.1].18c [12.2.0.2].19c [12.2.0.3])如何在 PDB 中添加模式:19c (19.3) 手工添加示例 HR 用户 ...
- OCP培训 Oracle 12c/18c/19c OCP认证实战培训【送OCP优惠名额】
一.OCP培训 Oracle 12c/18c/19c OCP认证全套实战培训[送OCP优惠名额],本课程内容 课程目标: 为满足想参加Oracle OCP考证的学员,风哥设计的一套比较全面OCP实战培 ...
- 深入理解Oracle RAC 12c 笔记
深入理解Oracle RAC 12c 跳转至: 导航. 搜索 文件夹 1 概述 2 集群件管理和故障诊断 3 执行实践 4 新特性 5 存储和ASM 6 应用设计上的问题 7 管理和调优一个复杂的RA ...
- 理解oracle中连接和会话
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp44 理解oracle中连接和会话 1. 概念不同:概念不同: 连接是指物 ...
- 前端知识体系:JavaScript基础-原型和原型链-理解原型设计模式以及 JavaScript中的原型规则
理解原型设计模式以及 JavaScript中的原型规则(原文地址) 1.原型对象:我们创建的每一个函数(JavaScript中函数也是一个对象)都有一个原型属性 prototype,原型属性实质上是一 ...
- ORACLE--12C--多租户体系架构概念
一,概念 1,何为多租户? 官网链接: 飞机直达>> 多租户这个概念并不是12C的新特性,而是体系架构,多租户架构使得oracle 数据库成为了一个多租户的容器数据库,也就是contain ...
随机推荐
- mysql随机抽取数据
-- 慢 ; -- 较慢 SELECT * FROM `table` WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `t ...
- kuangbin专题 专题九 连通图 Warm up HDU - 4612
题目链接:https://vjudge.net/problem/HDU-4612 题目:一个大地图,给定若干个连通图,每个连通图中有若干个桥,你可以在任意某个连通图的 任意两个点添加一条边,问,添加一 ...
- Git操作:查看所有分支的提交修改
我们在廖雪峰Git教程或者一些书籍学习git分支时,大都会学习到这样一个命令git log --graph或者就是单纯的git log,他可以用来查看当前分支.但是这个弊端就是:它只能查看与当前分支有 ...
- Redis常用命令之操作String类型
场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 Re ...
- MongoDB批量操作时字段为null时没有入库
今天在Java后端批量插入数据至MongoDB后,在MongoDB数据库中发现某个字段没有成功入库,一查看代码,在List的元素对象中是有这个字段的,不知为啥就没有入库了. (1)调试 遇到此情况,赶 ...
- 优酷爱奇艺视频转换为MP4格式工具
本君今天分享两个免费的视频格式转换工具,分别是爱奇艺和优酷的(腾讯的有点复杂,等整理完再分享).教程都是一步步亲手操作的,每一步都有配图.希望各位老板多转发分享,谢谢! 一爱奇艺QSV转MP4格式 解 ...
- pip 配置国内源
网上已经有很多人介绍了,我写在这儿就是为了找起来方便. https://www.cnblogs.com/schut/p/10410087.html 这篇博客还是很有意思的,他介绍了两种方法.可以一 ...
- ubuntu--- tracker/libdeepsort.so 找不到cv报错
一.刚开始解决尝试:因为“删掉lib下的libdeepsort.so报错”,原先以为是 libdeepsort.so 需要拷贝到 /lib路径下的问题,可是因为后来的工程有的好使,又的不好使了.''' ...
- Projected coordinate systems 和 wkid
Projected coordinate systems Well-known ID Name Well-known text 2000 Anguilla_1957_British_West_Indi ...
- sip 常见问题和总结
1. 加入课堂,成功后,会返回在sdp中会返回所有流媒体的信息?2. 切换镜头 客户端自动切换推流数据 其他不变? * EXOSIP_CALL_REINVITE 底层是怎么区分出来的? * 注册时,4 ...