【发布时间】:2018-01-20 20:06:15
【问题描述】:
我有一个将连接到 PostgreSQL 数据库的 REST 服务。应用程序只会执行 INSERT/UPDATE/DELETE 操作。我想确保我给 API 帐户正确的权限,只执行这些类型的命令,而不是 DROP 和其他危险操作。此类帐户的最佳做法是什么,您能否给我一些 SQL 示例或说明如何在 pgAdmin 4 中执行此操作。
【问题讨论】:
标签: sql postgresql privileges pgadmin-4
我有一个将连接到 PostgreSQL 数据库的 REST 服务。应用程序只会执行 INSERT/UPDATE/DELETE 操作。我想确保我给 API 帐户正确的权限,只执行这些类型的命令,而不是 DROP 和其他危险操作。此类帐户的最佳做法是什么,您能否给我一些 SQL 示例或说明如何在 pgAdmin 4 中执行此操作。
【问题讨论】:
标签: sql postgresql privileges pgadmin-4
当您想要限制访问权限时,通常明智的做法是先清除公共可能拥有的所有权限。除了作为默认模式的名称之外,public 也是一个特殊角色,包括所有角色,因此如果允许 public 做某事,那么每个人都可以做。
REVOKE ALL ON ALL TABLES IN SCHEMA public FROM public;
REVOKE ALL ON SCHEMA public FROM public;
然后为您的用户设置授权。
GRANT USAGE ON SCHEMA public TO api_user;
GRANT SELECT INSERT UPDATE DELETE ON ALL TABLES IN SCHEMA public TO api_user;
如果您有其他架构除了公开重复这些。
【讨论】: