伙计们,
我可以使用你的帮助,使我的Postgres用户访问控制devise更好,更符合最佳实践。 我正在帮助推出一个小型的Postgres服务器,但我不是一个数据库pipe理员,所以我知道这样做很危险。
有一台服务器安装了Postgres v9.2。 这个安装托pipe多个数据库,每个数据库完全服务于不同的“客户”。 换句话说,customer1不会,不应该使用database2,等等。 在正常的操作过程中,数据库被一个匹配的CakePHP实例所访问,它们全都与Postgres共同位于同一台服务器上。 尽pipe可能会对此部署进行优化,但我最感兴趣的是Psqlangular色。
根据我所读到的,似乎有三种angular色是合理的:
实现这个devise是我不那么自信的地方。 数据库和表的所有权以及谁应该从谁那里inheritance谁是有点泥泞。 以下是我的数据库和我的用户。 有足够的信息来评估实施吗?
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 | UTF8 | en_US | en_US | =Tc/postgres + | | | | | postgres=CTc/postgres+ | | | | | admin=CTc/postgres postgres | postgres | UTF8 | en_US | en_US | template0 | postgres | UTF8 | en_US | en_US | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US | en_US | =c/postgres + | | | | | postgres=CTc/postgres user1 | admin | UTF8 | en_US | en_US | =Tc/admin + | | | | | admin=CTc/admin + | | | | | user1=CTc/admin user2 | admin | UTF8 | en_US | en_US | =Tc/admin + | | | | | admin=CTc/admin + | | | | | user2=CTc/admin
为了防止外部连接和密码清楚,pg_hba.conf是这样的:
local all all md5 host all all 127.0.0.1/32 md5 host all all ::1/128 md5
我知道这是一个古老的问题,但我现在也会试着回答,因为我需要做一些相关的研究。
你所要做的就是在数据库级别称为多租户 。 这可以通过两种方式来实现:
在一个单一的数据库集群中,有些OP是如何描述的,然而,我个人的select是这样的:
每个客户都有自己的数据库集群。 这是我首选的解决scheme,尤其是因为我通常使用每个客户都拥有大型数据库的应用程序。
您也可以使用上述的组合,并使用pgBouncer作为路由器。