如何确保租户永远无法在共享数据库的多租户中访问其他租户的数据
How to ensure that tenants can never access other tenants' data in multi-tenant with shared db
我正在使用共享数据库实施多租户。但是当我想查询属于特定租户的table时遇到了问题。
例如:
我有一个 table catalog
与 tenant
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);
我正在使用共享数据库实施多租户。但是当我想查询属于特定租户的table时遇到了问题。
例如:
我有一个 table catalog
与 tenant
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);