我想做一个服务,让我的每个用户都有自己的PG用户和数据库。除了像这样让每个人都成为他们自己的用户和他们自己的数据库的所有者,并让他们连接到数据库之外,还有其他考虑吗?
create user u2745; create database d2745 owner u2745; -- etc.
ix0qys7i1#
如果你的租户足够少,这种方法就没有根本问题。出于安全原因,我将REVOKE从PUBLIC获得对数据库的CONNECT权限。我看到的两个潜在困难是:
REVOKE
PUBLIC
CONNECT
pg_authid
pg_database
pg_shdepend
SET ROLE
您的设置的最大优点是非常容易横向扩展:只需添加新机器并在那里运行一些数据库。如果您有许多小租户,行级安全性可能是更好的方法。
1条答案
按热度按时间ix0qys7i1#
如果你的租户足够少,这种方法就没有根本问题。出于安全原因,我将
REVOKE
从PUBLIC
获得对数据库的CONNECT
权限。我看到的两个潜在困难是:
pg_authid
、pg_database
和pg_shdepend
可能会变大,这可能会使元数据操作变得非常慢SET ROLE
),这通常会降低性能您的设置的最大优点是非常容易横向扩展:只需添加新机器并在那里运行一些数据库。
如果您有许多小租户,行级安全性可能是更好的方法。