【问题标题】:Revoke ANY Privileges Oracle撤销任何权限 Oracle
【发布时间】:2014-09-18 09:43:13
【问题描述】:

您好,我有这个问题。

是否可以 GRANT ANY 特权,不包括相同架构的某些表。

例如:

 EXECUTE IMMEDIATE 
     'CREATE USER  USREJECUTA_SUI_ABAS
      IDENTIFIED BY VALUES ''test''
      DEFAULT TABLESPACE USERS
      TEMPORARY TABLESPACE TEMP
      PROFILE DEFAULT
      ACCOUNT UNLOCK';
     -- 2 Roles for USREJECUTA_SUI 
   EXECUTE IMMEDIATE 'GRANT CONNECT TO USREJECUTA_SUI_ABAS';
   EXECUTE IMMEDIATE 'GRANT RESOURCE TO USREJECUTA_SUI_ABAS';
   EXECUTE IMMEDIATE 'ALTER USER USREJECUTA_SUI_ABAS DEFAULT ROLE ALL';
     -- 1 System Privileges for USREJECUTA_SUI 
   EXECUTE IMMEDIATE 'GRANT SELECT ANY TABLE TO USREJECUTA_SUI_ABAS';          
   EXECUTE IMMEDIATE 'GRANT UPDATE ANY TABLE TO USREJECUTA_SUI_ABAS';  
   EXECUTE IMMEDIATE 'GRANT INSERT ANY TABLE TO USREJECUTA_SUI_ABAS';  
   EXECUTE IMMEDIATE 'GRANT UNLIMITED TABLESPACE TO USREJECUTA_SUI_ABAS';

现在撤销一些表的权限

REVOKE INSERT,UPDATE ON VELITTDA.TAPROVEEDORESXPAIS      FROM USREJECUTA_SUI';

但系统启动此错误:

ORA-01927:无法撤销您未授予的权限。

您知道这样做吗?我会非常感谢您的帮助。

【问题讨论】:

    标签: oracle permissions sql-grant any


    【解决方案1】:

    不,你不能。如果你给某人SELECT ANY TABLE,你就给了他们查询数据库中任何表的能力。如果您没有授予对象级权限,则不能撤销对象级权限。

    正确的方法几乎总是创建一个对用户需要访问的实际对象集具有对象级权限的角色。将角色授予用户(以及需要类似权限集的任何其他用户)。各种ANY 角色真的只适合像 DBA 这样的人。

    【讨论】:

    • 嗨,贾斯汀,我正在阅读有关角色使用的信息,但是如果将新表添加到架构中,您是否知道某种方法可以自动授予这些新对象的权限?跨度>
    • @OAlavez - 添加新表时,应该通过更改控制。该更改控制应包括这些表所需的授权(否则您将如何知道新表是否是您要排除的表之一)。如果您真的非常想要,您可以创建一个授予权限的触发器,但我强烈建议您不要这样做 (stackoverflow.com/questions/9262539/…)
    • 感谢您的建议,我会为变更控制中的每个表提供 GRANTS,感谢您的帮助。
    【解决方案2】:

    授予 SELECT ANY TABLE(或任何其他 ANY TABLE)权限通常是错误的做法,几乎与将 DBA 授予任意模式用户一样糟糕。

    如果您想避免发出大量授权语句,请使用从数据字典生成 DDL 的简单技巧。

    set head off
    set pagesize 0
    spool grant_foo.sql
    
    select 'GRANT SELECT ON '||table_name||' TO FOO_ROLE;'
    from all_tables where owner = 'FOO'
    order by table_name
    ;
    
    spool off
    

    然后在执行前根据需要编辑grant_foo.sql。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      • 2016-06-05
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多