PostgreSQL - 更正 API 用户帐户的数据库权限

PostgreSQL - correct db privileges for an API user account

我有一个将连接到 PostgreSQL 数据库的 REST 服务。该应用程序将仅执行 INSERT/UPDATE/DELETE 操作。我想确保我给 API 帐户正确的权限,只执行这些类型的命令,而不是 DROP 和其他危险操作。此类帐户的最佳做法是什么?您能否给我一些 SQL 示例或说明如何在 pgAdmin 4 中执行此操作。

当您想要限制访问时,明智的做法通常是先清除 public 可能拥有的所有权限。除了作为默认模式的名称 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;

如果除了 public 之外还有其他模式,请重复这些。