0

我想从app.my_function函数中撤销执行,所以角色为医生的用户无法调用它,我无法弄清楚我的代码有什么问题,我花了一整天的时间试图找到解决方案。

CREATE SCHEMA app;

CREATE ROLE doctor;

GRANT USAGE ON SCHEMA app TO doctor;

CREATE FUNCTION app.my_function() AS $$ ... $$ LANGUAGE SQL;

REVOKE ALL ON FUNCTION app.my_function() FROM doctor;
4

2 回答 2

1

这是我的问题的解决方案,我不知道用户定义的角色继承自PUBLIC具有EXECUTE特权的角色。

...

REVOKE ALL ON SCHEMA PUBLIC FROM PUBLIC;

ALTER DEFAULT PRIVILEGES REVOKE ALL ON FUNCTIONS FROM PUBLIC;

...
于 2021-09-08T21:35:19.023 回答
0

功能的默认权限(您可以使用 更改ALTER DEFAULT PRIVILEGES)允许EXECUTEPUBLIC即所有人。撤销其他角色的权限将无效。

于 2021-09-09T05:57:03.453 回答