我该怎么做才能确保sandbox.execute_any_query()
模式中的表中只有SELECT
个sandbox
?
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;
答案 0 :(得分:0)
将函数标记为SECURITY DEFINER
,并确保函数所有者对sandbox
以外的任何模式都没有权限。
然后该函数将在所有者的用户上下文中运行,任何尝试访问其他架构的操作都会导致错误。