始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

Oracle用户访问权限与PUBLIC角色的关系

发布时间:  2012/7/28 17:03:54

在数据库中创建了一个用户,这是给第三方系统用的。客户强调,这个用户只能访问到有限的表,在我们规定的范围内的表。

于是,我创建 一个用户,如user_third ,只给了connect 角色,用grant select on table 有限授权。

为此,我写了一文,请见 如何实现 Oracle中用户 B只能访问用户 A的视图 ( http://www.linuxidc.com/Linux/2012-06/62061.htm

 

用户访问密码交给客户后,又发现一个新问题,它居然能访问其他用户的表。

我核实了一下,发现它确实能访问别的用户的表。如数据 库中TT 用户下的表。

这是怎么回事?

您从我列出的标题中,一定猜到了吧。这事一定 public 角色有关。

Oracle TimeTen 创建时,它创建的表会自动将它的查询权限授予给 public 角色。

而数据库中任何一个用户都默认拥有 public 角色。

因此,问题就在 public 角色的权限上。我们只需要查询 public 角色授予了哪些权限,再撤销这些权限即可。

通过执行下列 SQL ,我们能判断出哪些权限授予给了 public 角色。

SELECT GRANTOR,OWNER,TABLE_NAME,PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE='PUBLIC';

部分结果如下:

GRANTOR                         OWNER                           TABLE_NAME                      PRIVILEGE

------------------------------ ----------------------------------------

××   GTJA                            TT_03_24577_L                   UPDATE

GTJA                            GTJA                            TT_03_24577_L                   SELECT

GTJA                            GTJA                            TT_03_24577_L                   INSERT

GTJA                            GTJA                            TT_03_24577_L                   DELETE

TT 表的查询更新删除插入权限都授予给了public 角色。这个很恐怖,对数据库系统的安全是有破坏的。

基于此,我们可以判定任何一个数据库用户都可以对这些表做查询更新删除插入操作。

怎么解决这个权限问题,是很简单的。但一定要保证不能影响到TT 的正常使用。这是个权衡的问题,可用性和安全两个角度的权衡。如果TT 不正常了,就考虑将其迁移到其他库上去,最好是独立的仅供TT 使用的库。

具体解决方法如下:

1 、从Oracle TimeTen 上解决,在创建cachegroup 时,将授予公共权限的选项除掉。当然这么做的前提是要保证TT 能够正常使用。

2 、从数据库中将这些权限从public 角色撤销。同样前提是TT 在这些权限撤销后能正常工作。

撤销方法示例如下:

revoke select on   TT_03_24577_L from public;

总结一下,这个实例说明了Oracle 的权限真够复杂的,日常管理时一定要留意一下public 角色的权限。


本文出自:亿恩科技【www.enkj.com】

 

用户访问密码交给客户后,又发现一个新问题,它居然能访问其他用户的表。

我核实了一下,发现它确实能访问别的用户的表。如数据 库中TT 用户下的表。

这是怎么回事?

您从我列出的标题中,一定猜到了吧。这事一定 public 角色有关。

Oracle TimeTen 创建时,它创建的表会自动将它的查询权限授予给 public 角色。

而数据库中任何一个用户都默认拥有 public 角色。

因此,问题就在 public 角色的权限上。我们只需要查询 public 角色授予了哪些权限,再撤销这些权限即可。

通过执行下列 SQL ,我们能判断出哪些权限授予给了 public 角色。

SELECT GRANTOR,OWNER,TABLE_NAME,PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE='PUBLIC';

部分结果如下:

GRANTOR                         OWNER                           TABLE_NAME                      PRIVILEGE

------------------------------ ----------------------------------------

××   GTJA                            TT_03_24577_L                   UPDATE

GTJA                            GTJA                            TT_03_24577_L                   SELECT

GTJA                            GTJA                            TT_03_24577_L                   INSERT

GTJA                            GTJA                            TT_03_24577_L                   DELETE

TT 表的查询更新删除插入权限都授予给了public 角色。这个很恐怖,对数据库系统的安全是有破坏的。

基于此,我们可以判定任何一个数据库用户都可以对这些表做查询更新删除插入操作。

怎么解决这个权限问题,是很简单的。但一定要保证不能影响到TT 的正常使用。这是个权衡的问题,可用性和安全两个角度的权衡。如果TT 不正常了,就考虑将其迁移到其他库上去,最好是独立的仅供TT 使用的库。

具体解决方法如下:

1 、从Oracle TimeTen 上解决,在创建cachegroup 时,将授予公共权限的选项除掉。当然这么做的前提是要保证TT 能够正常使用。

2 、从数据库中将这些权限从public 角色撤销。同样前提是TT 在这些权限撤销后能正常工作。

撤销方法示例如下:

revoke select on   TT_03_24577_L from public;

总结一下,这个实例说明了Oracle 的权限真够复杂的,日常管理时一定要留意一下public 角色的权限。


本文出自:亿恩科技【www.enidc.com】
-->

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线