小编JP *_*dry的帖子

Postgres 角色最佳实践实施

各位,

我可以利用你的帮助使我的 Postgres 用户访问控制设计更好,更符合最佳实践。我正在帮助推出一个小型生产 Postgres 服务器,但我不是数据库管理员,所以我知道足够危险。

一台服务器安装了一次 Postgres v9.2。此安装托管多个数据库,每个数据库都完全服务于不同的“客户”。换句话说,customer1 不会,也不应该使用 database2,依此类推。在正常操作期间,每个数据库都由一个匹配的 CakePHP 实例访问,所有实例都与 Postgres 位于同一服务器上。虽然此部署可能会有优化,但我最感兴趣的是 Psql 角色。

根据我所读到的,似乎三种类型的角色是有意义的:

  • 具有非默认密码的超级用户 postgres
  • 没有日常维护、数据库创建、备份、恢复的超级用户权限的管理员角色。应该能够对所有客户数据库做任何事情。
  • 只能在其各自的数据库中进行 CRUD 的用户角色。如果清理实现,则可以容忍对他们自己的数据库的更多权限。

实现该设计是我不太自信的地方。DB与表的所有权以及谁应该从谁那里继承有点混乱。下面是我的数据库和我的用户。这些信息足以评估实施吗?

     Role name |                   Attributes                   |     Member of     
    -----------+------------------------------------------------+-------------------
     admin     | Create role, Create DB                         | {user1, user2}
     postgres  | Superuser, Create role, Create DB              | {}
     user1     |                                                | {}
     user2     |                                                | {}

    postgres=# \l
                                 List of databases
       Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges   
    -----------+----------+----------+---------+-------+-----------------------
     admin     | postgres …
Run Code Online (Sandbox Code Playgroud)

postgresql psql

24
推荐指数
1
解决办法
7449
查看次数

标签 统计

postgresql ×1

psql ×1