在多租户数据架构中,实现租户过滤视图的最佳方式是什么?

发布于 2024-09-14 09:22:13 字数 627 浏览 9 评论 0原文

我正在使用 ASP.Net MVC 2 和 SQL Server 数据库实现 SaaS 应用程序。我正在使用共享租赁方法。

为了过滤数据,到目前为止我发现了两种方法。

选项 1:http://msdn.microsoft.com/en-us /library/aa479086.aspx#mlttntda_tvf

每个租户使用 sql 登录。因此,在视图中使用 SUSER_SID() 作为过滤器

选项 2: http://blogs.imeta.co.uk/jyoung/archive/2010/03/22/845.aspx

将租户 ID 存储在 Context_Info 中。因此,使用从 Context_Info 读取租户 id 的 sql 函数作为视图中的过滤器。

您能帮我选择合适的选项吗?

谢谢 谢谢

I am implementing a SaaS application using ASP.Net MVC 2 and SQL Server database. I am using Shared Tenancy approach.

To filter data, so far I have found 2 approaches.

Option 1: http://msdn.microsoft.com/en-us/library/aa479086.aspx#mlttntda_tvf

Using sql login per tenant. Thus, using SUSER_SID() as a filter in the views

Option 2: http://blogs.imeta.co.uk/jyoung/archive/2010/03/22/845.aspx

Storing tenant id in the Context_Info. Thus, using a sql function that reads tenant id from the Context_Info as a filter in the views.

Can you please help me pick the appropriate option?

Thanks
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

把回忆走一遍 2024-09-21 09:22:13

我认为这归结为安全模型之战。 DBA 可能会坚持要求您选择前者。更务实的是,我可能会将租户 ID 传递到我的 SP 或从应用程序层进行查询。

我会用大量的单元测试来支持这一点,以确保一个租户永远看不到另一个租户的数据,并且我只会将当前租户以会话或类似方式存储在服务器上,而不会存储在 cookie 或 URL 或其他任何地方可以在客户端上被黑客攻击。

这使得添加新租户变得更加容易,因为不需要数据库配置。

当然,会话可能会被黑客攻击,因此您需要采取一切预防措施,以确保无论您如何在服务器上存储租户 ID,它都不会受到欺骗等。

I think this comes down to a battle of security models. A DBA may insist you do the former. I, being more pragmatic, would likely pass the tenant ID into my SPs or queries from the application layer.

I would back this up with a whole lot of unit tests that ensure one tenant can never see another tenants data, and I would only store the current tenant on the server in session or simmilar, never in a cookie or in URLs, or anywhere else that can be hacked on the client.

This makes it much easier to add new tenants, as there is no DB config required.

Of course, sessions can be hacked, so you need to take all precautions to ensure that however you store tenant ID on the server, it is immune from spoofs, etc.

怀念你的温柔 2024-09-21 09:22:13

我想补充一点,内联表值函数在构建任何隔离层时也很有用。

I would add that inline table-valued functions can also be useful in building any isolation layers.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文