在数据库中创建了一个用户,这是给第三方系统用的。客户强调,这个用户只能访问到有限的表,在我们规定的范围内的表。
于是,我创建
一个用户,如
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
角色的权限。
分享到:
相关推荐
实体权限主要用于控制用户对特定表或视图的访问权限。实体权限的授予可以通过`GRANT`语句完成。 ##### 授予权限 例如,向用户`user02`授予对`user01.product`表的`SELECT`, `UPDATE`, `INSERT`权限: ```sql SQL> ...
Oracle数据库系统在权限管理方面提供了精细的控制机制,旨在确保数据的安全...Oracle的权限管理机制确保了数据安全的同时,也提供了灵活的权限分配策略,使得不同用户根据职责的不同,可以恰当地访问和操作数据库资源。
在Oracle中,权限和角色的概念是为用户提供访问控制机制,允许管理员精细地控制用户对数据库对象的访问权限,同时简化权限的分配过程。 1. 权限(Privileges):权限是Oracle中允许用户执行特定操作的能力。例如,...
在Oracle数据库中,用户管理和权限控制是非常重要的组成部分,它们确保了数据的安全性和访问的合理性。通过创建不同的用户并赋予相应的权限,可以实现对数据库资源的有效管理。 #### 二、创建用户与基本操作 1. **...
在Oracle环境中,权限控制是通过授权(GRANT)和回收(REVOKE)操作来实现的,以决定用户或角色可以访问哪些资源以及他们可以执行的操作。 首先,让我们详细了解一下Oracle中的权限类型: 1. **系统权限**:这些...
- 在某些情况下,可能只需要授予用户对特定列的访问权限,例如只允许插入或更新某列的数据。 ```sql GRANT INSERT (id) ON tablename TO zhangsan; GRANT UPDATE (id) ON tablename TO zhangsan; ``` 4. **...
角色是数据库安全策略的重要组成部分,它们可以帮助限制用户的访问权限,防止未经授权的操作。同时,通过角色,管理员可以方便地进行权限调整,提高管理效率。 总结,Oracle角色大全信息涵盖了从角色的创建、分配到...
在Oracle中,权限可以通过`GRANT`命令来分配给用户或角色。 - **基本权限**:例如,`GRANT CREATE SESSION TO zhangsan;`授予用户创建会话的能力,即登录能力。 - **表空间权限**:如`GRANT UNLIMITED TABLESPACE ...
Oracle数据库权限控制是确保数据库安全的关键环节,它涉及到对用户、角色和各种操作的精细化管理。在Oracle中,权限分为系统权限和对象权限两大类,分别对应对数据库整体操作的授权和对具体数据库对象(如表、视图、...
本文将基于提供的文件信息,详细介绍Oracle中如何创建用户、分配及撤销权限等关键操作,并深入探讨相关概念。 #### 一、创建用户 在Oracle中,创建用户的基本语法为: ```sql CREATE USER username IDENTIFIED BY ...
在Oracle数据库管理系统中,用户权限和角色管理是确保数据安全性和访问控制的关键组成部分。本文将深入探讨Oracle中的用户权限和角色管理,以便更好地理解和实践。 首先,权限分为两类:系统权限和实体权限。系统...
Oracle权限管理是数据库管理系统中的核心组成部分,用于控制不同用户对数据库资源的访问和操作。在Oracle中,权限的分配和管理对于确保数据安全性和维护系统稳定性至关重要。以下是一些主要的Oracle权限及其详细说明...
在Oracle数据库管理系统中,为了实现高效且安全的数据管理与访问控制,系统提供了丰富的权限管理机制。这些权限大致可以分为两大类:对象权限和系统权限。其中,系统权限指的是授予用户在整个数据库范围内的操作权限...
Oracle数据库系统权限是管理数据库访问和操作的关键组件。在Oracle 10G中,权限分为三类:对象权限、系统权限和角色权限。这些权限控制着用户能够执行的操作,确保了数据库的安全性和管理效率。 对象权限针对特定的...
然而,sysoper权限不包括创建或删除数据库的能力,登录后默认用户身份为public,限制了其对用户数据的访问。 ### 实验验证与角色转换 当我们以system用户通过as sysdba方式登录时,实际上是以sys用户的身份进行...
在Oracle数据库管理中,...综上所述,Oracle PL/SQL中的用户访问控制涉及用户账户的创建、权限的分配与管理,以及通过角色来简化权限管理。DBA需要谨慎地平衡数据安全与用户需求,以确保系统的稳定运行和数据的完整性。
Oracle提供了一套精细的权限管理系统,包括系统权限、对象权限以及角色,来帮助数据库管理员(DBA)有效地管理和分配用户访问权限。 首先,创建用户是权限管理的基础。DBA可以使用`CREATE USER`语句创建新的数据库...
本文将详细介绍在Oracle创建用户时可授予的所有系统权限及其功能。 #### 一、系统权限详解 ##### 1. 分析相关的权限 - **ANALYZE ANY**:允许用户分析数据库中的任何表、簇或索引。这种权限非常强大,因为它使用户...
在Oracle数据库系统中,用户权限设置是管理数据库访问和安全性的关键方面。Oracle提供了一套精细的权限机制,允许管理员精确地控制用户对数据库对象的访问。本文档将引导初学者了解Oracle用户权限的基本概念、类型...