相关疑难解决方法(0)

受限制的Web应用程序的PostgreSQL权限

目标

创建一个有三个用户的数据库并限制他们的权限(我只是大声思考,所以我的用户分离也可以纠正):

  1. 超级用户 - 此用户允许最初的数据库配置.创建应用程序数据库,创建其他用户,设置其权限.默认postgres超级用户适合我,所以这一个完成.
  2. 管理员 - 此用户只能访问在配置期间创建的数据库.管理员可以CRUD所有表中的所有数据,也可以CRUD表等"仅用于此数据库的超级用户"类型的情况.在更新应用程序时,管理员是自动化工具用于处理数据库迁移的用户.
  3. 应用程序用户 - 此用户最终是支持Web应用程序功能的用户.请注意,这与网页上的用户无关 - 这是服务器用来运行查询,插入和删除数据的用户.我明确地希望这个用户能够修改任何东西的权限,也不希望创建/销毁表或索引或任何结构.

我试过的

首先,看看(通常很棒的)PostgreSQL文档,Grant上页面几乎让我眼花缭乱.花了几个小时阅读有关PostgreSQL角色和特权的消息后,我常常感到困惑.我认为通过更多的工作,我将能够确定我想要的管理员用户,但我非常坚持"应用程序用户".我已经知道了这一点(命名和密码都只是占位符):

$ psql -U postgres
postgres=# CREATE USER "app-admin" WITH PASSWORD 'password';
CREATE ROLE
postgres=# CREATE USER "app-user" WITH PASSWORD 'password';
CREATE ROLE
postgres=# CREATE DATABASE "test-database" WITH OWNER "app-admin";
CREATE DATABASE
postgres=# \c "test-database"
You are now connected to database "test-database" as user "postgres".
test-database=# DROP SCHEMA "public";
DROP SCHEMA
test-database=# CREATE SCHEMA "app" AUTHORIZATION …
Run Code Online (Sandbox Code Playgroud)

database postgresql privileges web-applications least-privilege

10
推荐指数
1
解决办法
2254
查看次数