1

我對SQL Oracle Developer中的權限感到困惑。創建的用戶可以訪問所有架構/用戶的表。我想限制數據庫中的特定用戶訪問(ALTER,DROP,UPDATE等)到他自己的表中。任何人都可以指定我如何執行此任務。限制用戶只能在Oracle SQL Developer中訪問他自己的表

我的意思是從系統權限中選擇哪些權限讓用戶只能訪問他自己的表。謝謝

+0

這通常是授予比所需更多特權的情況。你的任務是撤銷一些現有的系統級權限(本來不應該在那裏)。「更改,刪除,更新任何表」到任何非DBA用戶絕對是一個錯誤。 – 2012-07-14 01:50:20

回答

3

的用戶將只對表的權限的模式之外,如果

  • 每個表對象級別的權限已被授予給用戶(直接或通過一個角色),或
  • 已授予用戶(直接或通過角色)的系統級特權,允許他們訪問特定類型的所有對象。

如果用戶已被授予系統級權限(即SELECT ANY TABLE),則可以撤消系統級權限。如果用戶已被授予每個表的顯式權限,則需要撤銷每個表上的權限。

我的猜測是用戶已被授予角色(可能是DBA角色),該角色包含一個或多個ANY系統權限。如果是這樣的話,你需要撤銷用戶的角色或撤銷該角色的權限。

授予用戶什麼角色?

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>>) 
相關問題