我想用PostgreSQL和RLS设计一个多租户的SAAS数据库。我希望能够在同一个数据库中托管所有用户和租户,并使用RLS隔离他们的数据。
在我的用例中,租户共享特定的用户数据以避免重复这些数据是有意义的。租户将请求用户的权限,这些权限存储在权限表中,这些权限用于控制RLS。
但是,我需要租户拥有其组织特有的用户数据,如联接日期或其他数据。我需要知道的是如何设计数据库来保存所有组织特定的数据。我曾经想过使用JSONB来存储这些数据,例如
user_data_for_tenant
id
user_id
tenant_id
data JSONB这个data由前端的租户决定.
这样可以吗?如何更好地设计数据库以适应这个用例?
我将使用Supabase的DB,Auth,存储和其他用途,以便RLS可以控制访问。
发布于 2022-01-02 15:05:25
我想为权限数据管理(AKA用户实体权限)提出以下设计建议
我们可以有一个表,其中包含映射到SaaS应用程序中每个实体的租户用户。将有类似Permission-C的权限,意思是Permission Create,等等,用于更新、删除和读取。
租户管理员可以根据角色为租户中的每个用户配置访问级别,我们可以在内部使用这些角色来管理Postgresql中的策略,以便根据租户级别的限制查询能够正常工作。

在具有记录级安全性的情况下,我们可以对数据库中的每个CRUD操作进行如下所示的所有ID访问。
下面的方法的问题是,随着数据的增长,列的增长,或者您有一个IDS和权限的平面映射。如果该方法适合您的需求,则有一些选项可以对此进行细化。

https://stackoverflow.com/questions/70243282
复制相似问题