PostgreSQL:有权执行函数(插入到表中),但没有直接插入的权限

PostgreSQL:有权执行函数(插入到表中),但没有直接插入的权限

如果这不是一个适合提问的地方,抱歉。

我创建了一个函数,用于将值插入到多个表中,并且我希望 Web 前端执行该函数。我已向 Web 前端的登录角色授予执行权限,但我不希望 Web 前端代码能够直接将值插入表中,我希望 Web 前端仅使用我为此目的创建的函数。

如果我为 Web 前端的登录角色授予执行权限,但没有授予函数内插入表的插入权限,则会发生访问错误。

我该怎么办?

答案1

您必须拥有另一个角色,该角色具有直接写入表的权限。然后,您使用另一个角色创建函数,并向函数定义添加“SECURITY DEFINER”子句。然后,您将该函数的执行权授予您的 Web 角色。

您可以在以下位置阅读更多内容文档

你可能还想检查一下博客文章我曾经写过有关保护数据库的文章。

相关内容