多租户数据库 - 安全和租户过滤

时间:2017-11-20 22:22:16

标签: node.js postgresql multi-tenant

我们正在构建一个应用程序来为多个租户提供服务。它在Postgresql数据库上运行 我们计划为每个租户使用相同的db / schema / architecture。

这意味着当我们发出数据请求时,每个查询都需要通过租户ID进行过滤,才能返回指定租户的数据。

总体问题: 在没有危及安全性的情况下,最快的方法是以最快的方式返回数据。

为每次通话“获取”租户UUID的最佳选择是什么?我一直在考虑的一些选择是:

  1. 验证后,将用户的租户UUID存储到本地存储中,然后在每次通话时传递?
  2. 服务器端,有一个通用函数,用户查找获取租户UUID,然后将其传递给db查询函数。
  3. 租户UUID“过滤”数据的最佳选择是什么?假设我在db查询时有租户UUID,我一直在考虑一些选项:

    1. 将租户UUID添加为数据库筛选器查询。
    2. 获取所有数据,即(SELECT * FROM TABLE),然后使用lodash按租户UUID过滤数据,然后将数据返回给客户端。

1 个答案:

答案 0 :(得分:0)

  • 当用户通过身份验证时,您会在其浏览器上设置会话Cookie 。您还可以将租户ID和其他此类内容存储在服务器
  • 上的会话变量中
  • 当用户发出下一个请求时,您使用会话cookie验证会话,从服务器会话变量中检索租户ID
  • 使用此会话租户ID传递您的查询。
  • 需要将租户ID添加到许多表中,并且可能还需要成为许多索引的一部分。因此,我建议不要将UUID用于您的租户ID。请改用数字字段。如果要将租户ID公开给用户,可以将数字租户ID转换为UUID并公开。