gpt4 book ai didi

postgresql - 撤销对 PostgreSQL 中插入函数的执行权限

转载 作者:行者123 更新时间:2023-11-29 14:36:15 24 4
gpt4 key购买 nike

我有角色为 viewer 的数据库:

CREATE ROLE viewer WITH NOSUPERUSER NOCREATEDB NOCREATEROLE;

还有称为i 的数据库模式(对于i接口(interface))。模式 i 中有插入函数,即:

SELECT * FROM i.insert_machine(1,2,3);

在表 data.machine 中插入新行。还有一些非插入函数,例如i.error_table(integer) 应允许用户查看器执行。资助选项是:

GRANT USAGE ON SCHEMA i TO viewer;
GRANT SELECT ON ALL TABLES IN SCHEMA i TO viewer;

我想禁止用户查看器调用这些 insert_* 方法。我应该怎么做?如果我同时尝试:

REVOKE ALL ON FUNCTION i.insert_machine(int, int, int) FROM viewer;
REVOKE EXECUTE ON FUNCTION i.insert_machine(int, int, int) FROM viewer;

我仍然能够运行此方法并获得结果。

最佳答案

我想我已经找到了。我必须撤销 public 的执行权并仅选择加入特定角色:

REVOKE EXECUTE ON FUNCTION i.insert_machine(integer, integer, integer) FROM public;
GRANT EXECUTE ON FUNCTION i.insert_machine(integer, integer, integer) TO writer;

关于postgresql - 撤销对 PostgreSQL 中插入函数的执行权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44307463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com