在回答這個問題時,我給出了一些(毫無根據的)建議
create policy test_policy on policy for all to public using (
user_id = session_user_id());
順便說一句,您應該對
session_user_id()呼叫進行架構限定以使您的策略真正安全,以便用戶無法session_user_id通過search_path.
但事實真的如此嗎?我記錯了函式的search_path問題SECURITY DEFINER。
如何以及何時決議行級安全策略?參考是在定義期間還是在評估期間決議?
將識別符號放在早期系結而不是晚期系結中是有意義的,但我在檔案中找不到任何關于此的內容。
uj5u.com熱心網友回復:
策略定義存盤在 中pg_policy,其中USING子句存盤在polqual列中,WITH CHECK運算式存盤在 中polwithcheck。
兩列都是資料型別pg_node_tree,它是一個決議過的 SQL 陳述句。所以策略是在創建時決議的,而不是在執行時決議,很像視圖或符合標準的 SQL 函式(v14 中的新功能)。這意味著 的設定search_path僅在創建策略時相關,而不是在執行時相關。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/337140.html
標籤:PostgreSQL 角色 行级安全 搜索路径
