Oracle
Oracle - 在沒有明確權限的情況下對包執行
我正在嘗試了解 Oracle 中的包權限。
如果使用者 A 在使用者 B 擁有/創建的包上被授予 EXECUTE 權限,並且該包對使用者 B 擁有的表進行各種插入和更新,那麼使用者 A 是否還需要對底層對象的顯式權限?
或者授予使用者 B 擁有的包的 EXECUTE 權限是否意味著使用者 A 可以做所有事情而無需使用者 B 擁有的表的權限?
是與否
該
EXECUTE
權限僅授予使用者 A 呼叫(執行)包的能力。它與底層對象的權限無關。使用者 A 需要什麼權限取決於
AUTHID
已編譯包的行的值(以及 CBAC 是否生效)。定義權利
這些包是那些授權線是
AUTHID DEFINER
(預設)程式碼只有Definer(使用者B)的權限
使用者 A 不需要基礎權限。
呼叫者權利
這些是授權行是的包/過程/功能
AUTHID CURRENT_USER
該程式碼僅具有呼叫者(使用者 A)的權限。
使用者 A 將需要基礎權限。
WJEC
CBAC === 基於程式碼的訪問控制
CBAC 通常與呼叫者的權限程式碼結合使用以增強安全性。
Oracle 12c 引入了將角色授予包的功能。
在 CBAC 下,使用者(暫時)擁有通過角色授予包的權限。
該程式碼僅具有授予角色的權限。
當且僅當適當的特權被授予被呼叫的包時,使用者 A 才需要底層特權。
這允許開發人員(臨時)僅將執行程式碼所需的必要權限授予呼叫程式碼的使用者。
您可以在此處閱讀有關 CBAC的更多資訊
筆記
這適用於包和獨立函式和獨立過程