我有一个REST服务,它将连接到PostgreSQL数据库。应用程序将只执行INSERT / UPDATE / DELETE操作。我想确保给予API帐户正确的权限,只执行这些类型的命令而不是DROP和其他危险操作。这类帐户的最佳做法是什么?您能否在pgAdmin 4中为我提供一些SQL示例或说明如何执行此操作。
答案 0 :(得分:1)
当您想限制访问时,通常明智的做法是清除公共可能拥有的所有权限。除了作为默认模式的名称之外,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;
如果除了公开重复之外还有其他模式。