`
mikixiyou
  • 浏览: 1086622 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:349501
社区版块
存档分类
最新评论

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

阅读更多

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

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

为此,我写了一文,请见 如何实现 Oracle 中用户 B 只能访问用户 A 的视图 http://mikixiyou.iteye.com/blog/1543530

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

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

这是怎么回事?

miki 西游 @mikixiyou 的文档,原文链接 : http://mikixiyou.iteye.com/blog/1546581

您从我列出的标题中,一定猜到了吧。这事一定 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

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

××    XXYY                            TT_03_24577_L                   UPDATE

XXYY                            XXYY                            TT_03_24577_L                   SELECT

XXYY                            XXYY                            TT_03_24577_L                   INSERT

XXYY                            XXYY                            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 角色的权限。

 

2
0
分享到:
评论

相关推荐

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。  DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE,SELECT_CATALOG_ROLE这些角色...

    最全的oracle常用命令大全.txt

    ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用 6、startup force 强制启动方式 当不能关闭数据库时,可以用startup force来完成数据库的关闭 先关闭数据库,再执行正常启动数据库命令 7、...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    6.5.1 PUBLIC权限 192 6.5.2 对安全性至关重要的实例参数 193 6.6 使用标准数据库审核 197 6.6.1 审核SYSDBA活动 198 6.6.2 数据库审核 198 6.6.3 使用触发器执行基于值的审核 200 6.6.4 细粒度审核(FGA) 201...

    Oracle9i的init.ora参数中文说明

    Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

    Oracle事例

    查看当前用户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; 查看用户下所有的表 SQL>select * from user_tables; <7> alter user语句的quota子句限制用户的磁盘...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第1/2部分)

    6.5.1 PUBLIC权限 192 6.5.2 对安全性至关重要的实例参数 193 6.6 使用标准数据库审核 197 6.6.1 审核SYSDBA活动 198 6.6.2 数据库审核 198 6.6.3 使用触发器执行基于值的审核 200 6.6.4 细粒度审核(FGA) 201...

    数据库安全基线.doc

    用户权限最小化 5 1.1.1.7. public权限 6 1.1.1.8. 数据库角色管理 6 1.1.1.9. 启用日志审计 7 1.1.1.10. 日志记录及保存 7 1.1.1.11. 日志文件保护 8 1.1.1.12. 开启监听器日志 8 1.1.1.13. 数据字典保护 8 1.1....

    二十三种设计模式【PDF版】

    类,再定义类的接口和继承层次,建立对象之间的基本关系。你的设计应该对手头的问题有针对性,同时对将来的问题和需求 也要有足够的通用性。 你也希望避免重复设计或尽可能少做重复设计。有经验的面向对象设计者会...

    SQL21日自学通

    将你的表的权限赋予其它的用户361 在载入数据时解除对数的约束363 一次创建多个同义字364 为你的表创建视图368 在一个计划中清除其所有的表的内容369 使用SQL 来生成SHELL 脚本371 再建表和索引372 总结373 问与答...

    java 面试题 总结

    抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。...

    亮剑.NET深入体验与实战精要3

    2.3 private、protected、public和internal的区别 86 2.4 sealed、new、virtual、abstract与override 87 2.5 abstract class与interface 91 2.6 公共变量与属性的区别 93 2.7 参数修饰符params、out和ref的区别 96 ...

    亮剑.NET深入体验与实战精要2

    2.3 private、protected、public和internal的区别 86 2.4 sealed、new、virtual、abstract与override 87 2.5 abstract class与interface 91 2.6 公共变量与属性的区别 93 2.7 参数修饰符params、out和ref的区别 96 ...

    超级有影响力霸气的Java面试题大全文档

    1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是...

    21天学习SQL V1.0

    LPAD 与RPAD................................................................................................. 82 LTRIM 与RTRIM..............................................................................

Global site tag (gtag.js) - Google Analytics