如何确保函数只从一个特定的模式中选择



我需要做些什么来确保sandbox.execute_any_query()只来自模式sandbox中的表SELECT

create function sandbox.execute_any_query(_query text) returns json as 
$$
declare
_result json;
begin
execute format('select row_to_json(t) from (%s) t', _query) into _result;
return _result;
end
$$
language plpgsql;

将函数标记为SECURITY DEFINER,并确保函数所有者对sandbox以外的任何架构都没有权限。

然后,该函数将在所有者的用户上下文中运行,任何访问其他模式的尝试都将导致错误。

最新更新