【发布时间】:2013-07-11 16:25:58
【问题描述】:
我正在 postgreSQL 中部署一个数据库,并创建了一个能够执行某些功能的用户。
我撤销了刚刚创建的用户的所有权限,并授予执行连接权限:
REVOKE ALL PRIVILEGES ON DATABASE <database> FROM my_user;
REVOKE ALL PRIVILEGES ON SCHEMA public TO my_user;
GRANT CONNECT ON DATABASE <database> TO my_user;
但是当我用这个用户连接到数据库时,我能够读取所有的表结构和所有的函数源代码。有没有办法对这个用户隐藏它?
我借此机会提出另一个问题:我只想对这个用户执行功能(可能包括对数据库表的选择、插入或更新),但我不想授予选择、更新或删除的权限在桌子上。 我正在使用“SECURITY DEFINER”,然后我批准执行,但我认为它可能有点不安全。我对吗?还有其他方法吗?
提前致谢。 拉米斯
【问题讨论】:
-
我发现以下隐藏函数源代码: REVOKE SELECT ON TABLE pg_proc FROM user; REVOKE SELECT ON TABLE pg_proc FROM public;
标签: database security function postgresql grant