2014-03-19 74 views
0

我想在oracle apex中設置grant/revoke並創建角色。然而,我不想爲用戶做這些事情,但是對於表中的數據,例如基於表中的Id,我想撤銷其更新任何數據的權限。這是可能的,什麼是最好的方式來做到這一點。授予/撤銷Oracle SQL

回答

0

您無法對錶格中的特定行執行此操作。您只能爲整個表格發佈GRANT/REVOKE。

http://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqljgrant.html

你將不得不處理在應用(PL/SQL)級更新到您的表中特定的數據。

+0

我的問題不是我想授予/撤銷特定的行。這是我想從一列中獲取數據以撤銷其訪問權限。例如,如果我有一個充滿Employee_Ids的列,我只希望員工能夠看到他們的Id所分配的數據,而不讓他們成爲公共用戶 – user1643333

0

幾個選項:

  • 您既可以使用Oracle Label Security

  • 您可以在表格頂部創建一個視圖,該視圖將根據當前用戶的EMPLOYEE_ID進行查詢。

0

一些筆記,在PostgreSQL上做過這樣的事情。

  1. 有可能在這類事情的數據之上創建視圖。
  2. 行級別的安全性是你通常想要做的。有關教程,請參閱http://www.dba-oracle.com/concepts/restricting_access.htm

第一種方法有第二種方法,然後是一些問題。原因是你必須在你的視圖中編寫一個策略引擎。在第二種方法中,您獲得一個策略引擎,您可以將策略應用於該策略。

從經驗中的幾個注意事項:

  1. 真的要避免在表中查找其他行的許可數據,如果你曾經打算以時間來審查事多行。
  2. 在實施之前仔細考慮權限檢查的性能影響。

這類事通常是性能頭痛,需要一些時間來解決。準備好長時間的優化,因爲你沒有想到的用例變得重要。