问题标签 [multi-tenant]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
430 浏览

sql-server - 使用 SQL Server 和 NHibernate 进行不透明的租户识别

我们正在开发一个时下流行的多租户 SaaS 应用程序(共享数据库、共享模式),我不喜欢它的一件事:

TenantID让我发疯了,因为它几乎无处不在,而且从安全的角度来看这是一个麻烦:如果恶意 API 用户更改TenantID为其他值并将混淆事情会发生什么。

我想要做的是在我们的域对象中完全摆脱它TenantID,并让 NHibernate 或 SQL Server 处理它。

根据我已经在 Internet 上阅读的内容,这可以通过CONTEXT_INFO(这里是基于NHibernate 的实现)、NHibernate 过滤器SQL 视图以及它们的组合来完成。

现在,我的要求如下:

  • TenantID从域对象中删除任何提及
  • ...但是让 SQL Server 在适当的地方插入它(我想这是通过default约束实现的)
  • ...并且显然提供基于此标准的过滤支持,以便客户永远不会看到彼此的数据
  • 如果可能,请避免使用 SQL Server 视图。
  • 拥有一个与 NHibernate、SQL Server 的 MARS 以及 SaaS 应用程序的一般性质高度并发的完美配合的解决方案

你对此有何看法?

0 投票
2 回答
1070 浏览

sql - 多租户与多个数据库

我正在开发一个定制的 CRM 解决方案,该解决方案将通过 Web/SaaS 模型进行销售。我预计会有数十或数百个客户使用此解决方案。我将使用 MS SQL 作为数据库引擎。

选项 1 是拥有一个单独的数据库,并在表上包含一个 TenantId 列、一个合适的索引并在每个数据库访问中使用“where tenantId={...}”。

选项 2 是为每个客户端设置一个单独的数据库,从而避免使用 TenantId 和 where 子句。

我预计每个客户将拥有数十万条记录,而不是数百万条记录。

正如我所看到的,无论我选择哪个选项,都会有一定数量的数据页。该决定似乎集中在 SQL 是否更擅长管理多个 DB 或具有 TenantId 和索引的单个 DB。最初,该解决方案将在单个数据库服务器上运行,但最终将迁移到 SAN。

有人对此有什么看法吗?

0 投票
1 回答
1517 浏览

sql-server - SSRS 可以支持多租户使用吗?

我有一个建立在标准 microsoft 堆栈之上的 webforms 应用程序 - asp.net、sqlserver2008、ssis、ssrs。在某些情况下,我想以多租户类型模式运行整个堆栈,这样一个“切片”的用户就不会对其他人有任何可见性。

我们已经在 webapp 和 ssis 端解决了这个问题,但还没有使用 Sql Server Reporting Services。

有没有办法在一台机器上使用一个 Sql Server 2008 实例来划分多个逻辑报告服务“站点”?我需要能够为每个切片分别配置报告、安全性和数据源。

任何帮助将不胜感激。

谢谢!

0 投票
1 回答
624 浏览

asp.net - NHibernate ISession 特定事件监听器

我正在使用 NHibernate(共享模式)创建一个多租户 ASP.NET 应用程序。我曾打算在保存之前使用 NHibernates 事件侦听器检查/修改实体,以确保当前租户 ID 正在针对实体保存。

包含租户 ID 的身份验证令牌由更高层管理并向下传递到数据层。

我的问题是事件侦听器是针对 NHibernate 配置而不是特定的 ISession 配置的。这意味着无法传递任何标识符供它使用,尽管我可以访问导致事件触发的 ISession。

如何将 ISession 特定数据传递到事件侦听器?

0 投票
2 回答
1598 浏览

php - 为多租户架构的 SaaS PHP/mysql 应用程序使用单个或多个 mysql 用户

我们正在构建一个多用户应用程序,每个客户都有一个数据库。所有客户数据库结构都是相同的。现在我们正在生成一个新的 mysql 用户(每个客户端),它只有在自己的数据库上工作的权限。

例如mysql user1 拥有dbase1.* (database1.alltables) 的权限,mysql user2 拥有dbase2.* 的权限。

我们现在注意到,将转储到另一台服务器作为备份已经很痛苦了(我们不使用复制,但尝试偶尔转储文件,但 information_schema dbase 似乎无法从 sql 文件中删除和重新创建。

无论如何,我们想知道是否只使用 1 个可以访问所有客户端数据库的用户会更好?这更不安全吧?还是可以以一种相当安全的方式使用它?肯定会更好管理。

你怎么认为?

0 投票
1 回答
695 浏览

asp.net-mvc - 使用 Entity Framework 4 在运行时更改数据库架构的最佳实现是什么?

我们正在 SQL Server 上构建一个 ASP.Net MVC 2 多租户应用程序,使用在此处此处讨论的“单一数据库,单独架构”模型,其中每个租户都有一个或多个用户,并与其自己的、特定于租户的 SQL Server 架构。

该应用程序使用的是 Entity Framework 4。为了让不同租户的用户能够访问其架构中的数据,我们需要能够在创建实体的 ObjectContext 时指定架构。

我已经看到了对该工具的一些引用(http://efmodeladapter.codeplex.com/)但是(1)我不想每次按照使用说明中的指定生成 EDMX 时都更新代码和(2 ) 它是在 EF4 之前制作的,所以我希望现在有更简单的方法。

那么,在 EF4 中执行此操作的最佳方法是什么?

谢谢

0 投票
2 回答
1456 浏览

asp.net-mvc - 如何使用单个 ASP.NET MVC 应用程序为多个域提供服务?

如何实现一种机制(在单个 ASP.NET MVC 应用程序中)以确保:

  • 如果请求来自 mydomain(用户访问 mydomain.com)-> 使用某些控制器进行处理
  • 如果请求来自其他域(用户访问 otherdomain.com)-> 使用不同的控制器集进行处理

(域别名为相同的虚拟主机)

我应该使用 ASP.NET MVC 中的哪些扩展点来确保所描述的机制有效?

0 投票
1 回答
1382 浏览

css - 如何使用 Asp.Net MVC 管理多租户 Web 门户 css

我正在使用 MVC 设计一个多租户 Web 门户应用程序。

租户将通过 URL 或租户 ID 标识。我们将拥有一组默认的皮肤和主题,但根据要求,每个租户都可以拥有自己的皮肤和主题。

为多租户 Web 门户应用程序处理/附加 CSS 的最佳方法是什么?

0 投票
2 回答
1480 浏览

java - Spring Security and Multitenancy / REST -> 如何?最佳实践?参考应用?

我一直在寻找一种保护 URL 的方法,例如

在用户(不是角色)级别,即只有 ID 为 {ownerId} 的所有者有权访问。此外,我想保护 RESTful 设计,包括。动态异步访问所有者级别的 JSON 服务。

我的问题:

  1. 使用 Spring Security 最好如何做到这一点?
  2. 当通过异步请求访问 /owners/{ownerId}/pets/new 时,这是如何完成的?
  3. 如何从 3rd 方应用程序(例如 iPhone 应用程序)访问上述 URI?
  4. 任何示例/参考应用程序/文章?

谢谢尔

0 投票
1 回答
2300 浏览

java - 如何实现“共享数据库,分离模式”多租户策略

我必须使用共享数据库分离模式方法启用 Web 应用程序多租户。该应用程序是使用 Java/J2EE 和 Oracle 10g 构建的。

我需要一个应用程序服务器,它使用具有多个模式的共享数据库,每个客户端一个模式。

实现这一目标的最佳实施方法是什么?

  • 在中间层(应用程序服务器)级别需要做什么?
  • 我需要每个客户端都有多个主机头吗?
  • 如何根据正在访问应用程序的客户端动态连接到正确的架构?