如何在多租户PostgreSQL中安全地隔离数据库/用户?

oipij1gg  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(214)

我想做一个服务,让我的每个用户都有自己的PG用户和数据库。
除了像这样让每个人都成为他们自己的用户和他们自己的数据库的所有者,并让他们连接到数据库之外,还有其他考虑吗?

create user u2745;
create database d2745 owner u2745;
-- etc.
ix0qys7i

ix0qys7i1#

如果你的租户足够少,这种方法就没有根本问题。出于安全原因,我将REVOKEPUBLIC获得对数据库的CONNECT权限。
我看到的两个潜在困难是:

  • 如果租户太多,目录表pg_authidpg_databasepg_shdepend可能会变大,这可能会使元数据操作变得非常慢
  • 如果每个租户使用不同的数据库用户,则不能轻松地使用单个连接池(必须使用SET ROLE),这通常会降低性能

您的设置的最大优点是非常容易横向扩展:只需添加新机器并在那里运行一些数据库。
如果您有许多小租户,行级安全性可能是更好的方法。

相关问题