PostgreSQL授予对函数的选择权限,而无需对表进行SELECT访问

时间:2015-04-11 08:21:59

标签: postgresql postgresql-9.3 grant

我知道如何在选定的表或视图甚至列上仅授予对用户的SELECT访问权限。另一方面,我不希望它们能够执行SELECT column1,column2 FROM .....创建视图不是一个选项,因为SELECT column1,column2 FROM视图将完全相同。另一方面,我创建了一个pgpsql函数,它需要两个ID并查询同一个表,但只从DB表中检索最多两行(对于id = ID1 AND id = ID2)。有没有办法限制用户只使用此函数查询表,而不是给他这个表的完全SELECT权限?

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是仅将表格的权限授予OWNER;这是PostgreSQL中的默认行为。

然后,您可以使用SECURITY DEFINER创建一个函数,这意味着该函数将使用创建该函数的任何人的权限执行。如果该用户与表的所有者相同,那么该部分就完成了。

现在剩下的就是GRANT EXECUTE关于任何需要访问数据的函数的函数。