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

dre*_*lax 4 postgresql permissions database-administration

对不起,如果这是问这个问题的错误地方。

我创建了一个将值插入到许多表中的函数,我希望 Web 前端执行此函数。我给web前端的登录角色授予了execute权限,但是我不希望web前端代码能够直接插入值到表中,我希望web前端只使用我为此目的而创建。

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

我该怎么办?

小智 7

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

您可以在文档中阅读更多相关信息。

您可能还想查看我曾经写过的关于保护数据库的博客文章