当前位置: 首页 > news >正文

【转自ITPUB】SYNONYM关于underlying table权限的小小发现

本帖最后由 macrowho 于 2014-2-19 11:35 编辑




最近使用到同义词,在做测试的时候发现SYNONYM针对underlying表权限方面有一个特别需要注意的地方,在这里贴出实验过程,方便大家回忆起这个特点。


测试步骤如下:
SYS@DB10G SQL> create user a identified by a ;


User created.


SYS@DB10G SQL> create user b identified by b;


User created.


SYS@DB10G SQL> grant connect,resource,create public synonym,drop public synonym to a;


Grant succeeded.


SYS@DB10G SQL> grant connect to b;


Grant succeeded.




登录A用户
A@DB10G SQL> create table t as select object_id,object_name from all_objects where rownum<11;


Table created.


A@DB10G SQL>  select count(1) from t;


  COUNT(1)
----------
        10


A@DB10G SQL> create or replace public synonym syn_t for t;


Synonym created.




登录B用户
B@DB10G SQL> select  count(1) from syn_t;
select  count(1) from syn_t
                      *
ERROR at line 1:
ORA-00942: table or view does not exist


B@DB10G SQL> select  count(1) from a.t;                  
select  count(1) from a.t
                      *                             
ERROR at line 1:
ORA-00942: table or view does not exist


B@DB10G SQL> SELECT table_schema, table_name, privilege  FROM all_tab_privs WHERE grantee = 'B';


no rows selected


B@DB10G SQL> select  count(1) from t;                  
select  count(1) from t
                      *                             ---B用户下并没有T表
ERROR at line 1:
ORA-00942: table or view does not exist


登录A用户
A@DB10G SQL> grant select on syn_t to b;
Grant succeeded.




登录B用户


B@DB10G SQL> SELECT table_schema, table_name, privilege  FROM all_tab_privs WHERE grantee = 'B';


TABLE_SCHEMA                   TABLE_NAME                     PRIVILEGE
------------------------------ ------------------------------ ----------------------------------------
A                              T                              SELECT


解释如下:
Be aware that when you grant the synonym  to another user, the grant applies to the underlying object (同义词的源表)that the synonym represents, not to the synonym itself.


B@DB10G SQL> select  count(1) from syn_t;


  COUNT(1)
----------
        10


B@DB10G SQL> select  count(1) from t;
select  count(1) from t
                      *
ERROR at line 1:
ORA-00942: table or view does not exist


B@DB10G SQL> select  count(1) from a.t;


  COUNT(1)
----------
        10




登录A用户     
A@DB10G SQL> drop public synonym syn_t;           --A用户删除同义词


Synonym dropped.




登录B用户


B@DB10G SQL> select  count(1) from syn_t;
select  count(1) from syn_t
                      *
ERROR at line 1:
ORA-00942: table or view does not exist


B@DB10G SQL> select  count(1) from a.t;                 


  COUNT(1)                                                      --这次实验的重点就在这里
----------
        10








让我们来回忆一下实验步骤:
   A用户创建了一个同义词syn_t指向A schema下的表T,并赋予了B用户针对同义词SYN_T的SELECT权限;
   此时B用户拥有的是对A schema下T表的select权限,而非public synonym syn_t,当我删除掉同义词SYN_T时,B用户对T表的SELECT权限任然存在的。




在日常工作中,如果我们对对象权限的粒度管理的比较细致的话,在删除同义词的时候记得revoke掉用户在underlying表上的权限,否则会悲剧的,尤其是敏感数据。


原贴地址:点击打开链接

转载于:https://www.cnblogs.com/JSD1207ZX/p/9386302.html

相关文章:

  • allocator 的用法
  • IOS 绘制图表
  • Array types are now written with the brackets around the element type
  • linux_apache服务知识总结(二)(关于用户的访问控制及编译安装)
  • 特定字符输出及二分搜索 简单面试编程题
  • 【翻译】EXTJS 编码风格指南与实例
  • 操作符.*
  • Datax与hadoop2.x兼容部署与实际项目应用工作记录分享
  • 网站伪静态的好处与坏处
  • Android ListView只加载当前屏幕内的图片(解决list滑动时加载卡顿)
  • 使用jQuery快速添加一个页面的悬浮覆盖层
  • 自制小型Linux
  • 反转字符串
  • kali linux 渗透测试视频教程 第五课 社会工程学工具集
  • 查看apache,nginx,mysql,linux,php版本
  • 2019.2.20 c++ 知识梳理
  • Angular数据绑定机制
  • axios 和 cookie 的那些事
  • CSS3 变换
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • spring boot 整合mybatis 无法输出sql的问题
  • underscore源码剖析之整体架构
  • V4L2视频输入框架概述
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端临床手札——文件上传
  • 十年未变!安全,谁之责?(下)
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 走向全栈之MongoDB的使用
  • MyCAT水平分库
  • 阿里云服务器如何修改远程端口?
  • ​2021半年盘点,不想你错过的重磅新书
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​香农与信息论三大定律
  • # 数论-逆元
  • #pragma once
  • (¥1011)-(一千零一拾一元整)输出
  • (2)STM32单片机上位机
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (java)关于Thread的挂起和恢复
  • (python)数据结构---字典
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (算法)求1到1亿间的质数或素数
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • .equals()到底是什么意思?
  • .Net MVC4 上传大文件,并保存表单
  • .NET 常见的偏门问题
  • .NET 反射的使用
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .net反编译的九款神器