Oracle

Oracle - 在沒有明確權限的情況下對包執行

  • November 11, 2021

我正在嘗試了解 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的更多資訊

筆記

這適用於包和獨立函式和獨立過程

引用自:https://dba.stackexchange.com/questions/302460