postgresql - 如何确保函数仅从一个特定模式中选择?
问题描述
我需要做些什么来确保sandbox.execute_any_query()
只有SELECT
s 来自 schema 中的表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;
解决方案
将函数标记为SECURITY DEFINER
并确保函数所有者对除sandbox
.
然后该函数将在所有者的用户上下文中运行,任何访问其他模式的尝试都会导致错误。
推荐阅读
- reactjs - npm start 错误此程序被组策略阻止
- ios - 我的应用程序被jetsam杀死,但原因是“压缩机空间”
- c# - 使用 closedXML 和 C# 将一系列单元格值放入列表中
- javascript - 我怎样才能设法不丢失函数中变量的值?
- java - 异常 - 无法从资源中找到可绘制的图标
- c# - 点网核心不一致
- delphi - TIdSMTP:如何发送在电子邮件正文中正确显示的特殊字符
- clojure - 使用“rest”参数递归/嵌套
- javascript - 需要帮助制作一个无需使用 .math 或 .pow 函数即可计算指数/幂的计算器。使用循环
- snowflake-cloud-data-platform - 雪花用户的默认角色不存在