如何确保租户永远无法在共享数据库的多租户中访问其他租户的数据

How to ensure that tenants can never access other tenants' data in multi-tenant with shared db

我正在使用共享数据库实施多租户。但是当我想查询属于特定租户的table时遇到了问题。

例如: 我有一个 table catalogtenant table 相关,在应用程序逻辑中,我总是查询以检查 catalog 属于特定的tenant 或者在有另一个查询来处理 catalog 逻辑之前。

那么有什么方法可以确保 catalog 属于特定的 tenant 而无需步骤检查,因为有时我忘记添加这个验证步骤 => 在 catalog 上做不属于特定 tenant?

我使用postgres作为数据库,sequelize为orm

我认为您正在寻找的是“行级安全性”。在 PostgreSQL 中,它被实现为 Row Security Policies。它允许您控制特定用户对特定行的访问。

如果您的租户使用他们的数据库用户连接到数据库,您可以应用策略:

CREATE POLICY tenants_catalog ON catalog 
    USING (tenant = current_user);