Eon*_*nil 2 postgresql permissions
我是 PostgreSQL 的新手,正在配置一个新数据库。
我写了几个间接访问(读/写)数据的函数,我想禁止所有对表的直接访问。
GRANT CONNECT ON DATABASE db1 TO role1;
GRANT USAGE ON SCHEMA schema1 TO role1;
REVOKE ALL ON table1 FROM role1;
GRANT ALL ON ALL FUNCTIONS IN SCHEMA schema1 TO role1;
Run Code Online (Sandbox Code Playgroud)
如果我不 REVOKE 表权限,将允许直接表访问。如果我 REVOKE 表特权和 GRANT 函数,用户访问这些函数但看到表访问限制错误。
psql:./test1.psql:6: ERROR: permission denied for relation table1
Run Code Online (Sandbox Code Playgroud)
如何让用户role1只能使用函数访问数据,同时禁止对表的所有直接访问?我想我错过了一些东西,但我无法弄清楚。
PS 我使用的是 Postgres 9.2.x。
你想使你的功能SECURITY DEFINER,并让他们拥有由用户不具备必要的权利。
编写SECURITY DEFINER函数时要非常小心。不要让超级用户拥有它们并仔细阅读手册。创建一个仅具有所需权限而没有更多权限的角色;赋予它SECURITY DEFINER功能的所有权。在适当的情况下,为不同的访问级别创建多个角色。
| 归档时间: |
|
| 查看次数: |
2858 次 |
| 最近记录: |