【问题标题】:Restricting a user to access only his own tables in Oracle SQL Developer在 Oracle SQL Developer 中限制用户只能访问他自己的表
【发布时间】:2012-07-13 16:18:48
【问题描述】:

我对 SQL Oracle Developer 中的权限、特权感到困惑。创建的用户可以访问所有 schema/user 的表。我想限制数据库中的特定用户只能访问(ALTER、DROP、UPDATE 等)他自己的表。谁能指定我如何执行此任务。

我的意思是从系统权限中选择哪些权限让用户只能访问他自己的表。谢谢

【问题讨论】:

  • 这通常是授予的权限多于要求的情况。你的任务是撤销一些现有的系统级权限(一开始就不应该存在)。对任何非 DBA 用户“更改、删除、更新任何表”绝对是一个错误。跨度>

标签: database oracle11g privileges oracle-sqldeveloper database-permissions


【解决方案1】:

如果

  • 已将每个表的对象级权限授予用户(直接或通过角色),或者
  • 系统级权限已授予用户(直接或通过角色),允许他们访问特定类型的所有对象。

如果用户已被授予系统级权限(即SELECT ANY TABLE),您可以撤销系统级权限。如果用户已被授予对每个表的显式权限,则您需要撤销对每个表的权限。

我的猜测是,用户已被授予包含一个或多个ANY 系统权限的角色(可能是DBA 角色)。如果是这种情况,您需要撤销用户的角色或撤销角色的权限。

授予用户哪些角色?

SELECT granted_role
  FROM dba_role_privs
 WHERE grantee = <<the user name>>

授予用户哪些系统权限?

SELECT privilege
  FROM dba_sys_privs
 WHERE grantee = <<the user name>>

向授予用户的角色授予哪些系统权限?

SELECT *
  FROM dba_sys_privs
 WHERE grantee IN (SELECT granted_role
                     FROM dba_role_privs
                    WHERE grantee = <<the user name>>)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-07
    • 2015-02-25
    • 1970-01-01
    • 2012-07-27
    • 2023-04-11
    • 2020-03-27
    • 1970-01-01
    • 2017-06-20
    相关资源
    最近更新 更多