IBM System i 對數據庫視圖的權限
我們有一個執行 IBM i OS v6r1 的 IBM System i。在這個系統上,我創建了一些數據庫視圖。我想要做的是讓特定使用者組只能訪問這些視圖,而不是視圖所在的庫中的其他任何內容。這可能嗎?我有一個使用者組,該使用者組對我的視圖所在的庫中的所有表和視圖具有隻讀權限,並且當使用者位於該使用者組下時訪問有效。我嘗試複製使用者組,然後分配權限以僅包含我創建的視圖,並且訪問被拒絕。使用者或使用者組是否還必須對視圖源自的表具有權限才能訪問視圖?
是的。授予使用視圖的權限是不夠的。使用者還必須具有對基礎表的權限。
允許訪問受限使用者的一種方法是採用權限。為了舉例,讓我們假設以下內容:
使用者 RESTRICTED 無權訪問任何表。所有庫都是 AUT(*EXCLUDE) - 或 - 使用者 RESTRICTED 對所有庫都具有 *EXCLUDE 權限。USER PERMITTED 可以訪問(或擁有)表和庫。圖書館 DATA 有表格。Library PROGRAMS 有程序和儲存過程。
已允許在庫 PROGRAMS 中創建 RPG 儲存過程。確保程序指定了 USRPRF(*OWNER)。這意味著當程序執行時,它將使用所有者的權限 (PERMITTED) 而不是執行它的配置文件的權限 (RESTRICTED)。
通過 SQL 授予使用者 PERMITTED *USE 對 RPG 程序對象的權限 - 或 - GRANT。此外,授予使用者 RESTRICTED *USE 對庫程序的訪問權限。這將允許 RESTRICTED 執行儲存過程/程序。
請注意,使用者 RESTRICTED 無權訪問 DATA 中的表,您希望保持這種狀態。
現在讓使用者 RESTRICTED 使用 SQL 呼叫儲存過程。她有權執行該程序,因為她對庫 PROGRAMS 以及編譯的程序對象具有 *USE 權限。儲存過程在所有者 PERMITTED 的權限下執行,並且由於 PERMITTED 對庫 DATA 和其中的表具有完全訪問權限,因此儲存過程可以訪問/更新這些表。RESTRICTED 嘗試使用的任何原始 SQL 都將由於權限不足而失敗——她唯一能做的就是呼叫為她創建的儲存過程。
如果您的程序與您的數據儲存在同一個庫中,您將需要授予該庫的 RESTRICTED *USE 權限,並專門限制她(通過 *EXCLUDE)對該庫中的所有表。創建一個 RESTRICTED 庫可能更容易,它只保存儲存過程並授權她使用該庫。這使得持續維護更容易,因為您不必嘗試記住一直限制她訪問 DATA 中新創建的表。