使用 Visual Guard 在多租户应用程序中进行访问控制
随着公司寻求不同的 IT 需求管理方式,“多租户”和“SaaS”应用程序变得越来越普遍。然而,它们也带来了独特的挑战。我们将通过 Visual Guard 来探讨多租户应用程序中的安全管理和用户管理。
引言
“多租户”和“软件即服务”应用程序正变得越来越普遍。公司正在寻求不同的 IT 需求管理方式。他们期望解决方案能够适应其内部组织结构并降低部署和维护成本。多租户应用程序正是实现了这一点——低成本和灵活的架构。然而,多租户应用程序也带来了独特的挑战。在本文中,我们将通过 Visual Guard 来探讨多租户应用程序中的安全管理和用户管理。
背景
多租户是一个概念,其中应用程序的单个副本在服务器上运行,并由多个独立的用户集(租户)同时使用,这与多实例架构相反,在多实例架构中,每个用户集都使用真正独立的软件实例。因此,该应用程序被设计成将数据和配置划分为“隔离区”,以便每个租户使用定制的私有应用程序实例。
对于以 Saas(软件即服务)模式销售的应用程序,租户期望感受到他们各自拥有独立应用程序的优势,但却能享受共享服务的成本节省。然而,与所有结构一样,重新划分应用程序也存在缺点。例如,客户可能会担心他们的数据仅通过虚拟分区是不安全的。计划提供其产品的公司必须能够应对此类担忧。
用户管理
访问控制数据,包括用户帐户和管理数据,必须为每个租户单独保存。然而,这一切都必须在一个中央应用程序上进行。这对访问控制提出了挑战,因为集成到应用程序中的任何系统都必须在所有客户之间共享。
简而言之,多租户应用程序访问控制解决方案需要满足两个关键标准:
- 保护数据免受其他租户的侵害
多租户应用程序的数据泄露风险更高。用户应该相信他们私密数据是安全的,即使他们正在与其他组织共享应用程序。
强大的访问控制系统可以隔离每个租户的数据,以提供适当级别的保护。该系统应提供以下功能:
- 定义和管理租户(用户集)
- 将用户帐户定义为租户的成员并进行管理
- 限制每个租户内的数据访问
- 委托管理权限
信息的所有者应能够决定谁有权查看和访问它。每个客户组织应能够独立地为每个用户自定义访问权限。
因此,访问控制系统应允许用户:
- 将安全管理委托给每个客户组织内的本地经理
- 保护数据机密性:租户管理员不应访问其他租户的安全数据
- 保持数据可用性:数据在需要安全的同时,还需要及时可访问和可用。管理功能也一样
使每个租户都能访问管理功能
简化管理功能的访问非常重要。
- 多租户应用程序在多个站点上使用。管理界面应与应用程序本身一样易于部署。
- 为了能够以非常灵活的方式分发管理权限,每个用户都应该能够访问管理功能,无论他们身在何处或技术水平如何。
默认情况下,主要有两种解决方案:
- 自定义访问控制系统
为多租户应用程序开发的任何系统都需要足够灵活,以允许每个客户根据其个体安全策略自定义其安全策略和用户帐户。这意味着帐户配置应由最终客户完成,并且您的系统需要支持此选项。它还应可扩展以适应任意数量的客户。并且必须安全,以至于没有客户可以访问另一个客户的安全数据。此类解决方案通常非常复杂、耗时且成本高昂。 - Visual Guard
Visual Guard 是一个适用于大多数应用程序架构的访问控制系统。它集成了用户帐户管理、权限和审计,适用于一个或多个应用程序。它允许您定义用户组层次结构,每个组包含用户或其他组。在多租户应用程序中,每个客户被分配到一个组,并通过创建子组来复制其内部结构。所有客户使用相同的安全系统,但每个客户仅拥有其用户的管理权限。
Visual Guard
Visual Guard 有助于解决保护多租户应用程序的难题。
管理独立的租户
![]() |
示例 1:商业 SaaS 应用程序可能会将其“客户”放在层次结构的第一级。然后,每个客户将创建自己的子组来重建其组织结构。 |
示例 2:管理部门可以为使用其系统的每个机构定义一个租户。如果这些机构属于管理部门的部门或分支机构,则它们可以放置在层次结构的较低级别。 |
![]() |
![]() |
示例 3:如果一个组织需要管理内部和外部用户的混合人群,它可以定义租户来独立管理每个用户集。 注意:在这种情况下,VG 还允许您将 Windows帐户(内部用户)的身份验证与用户名/密码帐户(外部用户)结合使用。有关更多信息,请参阅混合模式身份验证。 |
除了这些基本示例外,Visual Guard 还支持多种其他配置。例如,您可以对用户进行身份验证,无论每个租户是否使用自己的 Active Directory。在这种情况下,Visual Guard 允许您联合不属于同一网络的多个 Active Directory。在某些情况下,您还可以基于用户的 Windows帐户实现单点登录(SSO)。
阅读有关 Visual Guard 和 SSO 的更多信息。
限制租户的管理权限
通常,Visual Guard 允许您授予管理员权限,以便他们可以管理用户并为每个应用程序授予权限。
管理权限也可以限制在用户组。在这种情况下,管理员只能查看和管理其组内的用户。
使用多租户应用程序时,建议为每个租户至少命名一名管理员,并将他们的管理权限限制在该租户内。
但是,Visual Guard 还可以做更多:我们可以将管理权限限制在组层次结构的任何级别。该系统为在每个租户内的任何实体中分发管理权限提供了极大的灵活性。
深入了解
您可以组合多个标准来限制管理权限。
- 如上所示,您可以将这些权限限制为特定用户组。
- 您还可以将这些权限限制为特定应用程序。
- 您可以将它们限制为特定的管理操作(例如,管理员可以创建用户并授予他们角色,但不能定义角色)。
使每个租户都能访问管理功能
简化管理功能的访问非常重要。
- 多租户应用程序在多个站点上使用。管理界面应与应用程序本身一样易于部署。
- 为了能够以非常灵活的方式分发管理权限,每个用户都应该能够访问管理功能,无论他们身在何处或技术水平如何。
默认情况下,主要有两种解决方案:
- Visual Guard Web 控制台
该应用程序允许您管理用户及其组、角色、权限等?
- 它由一个 Web 应用程序(ASP.NET)组成,可以通过简单浏览器访问。
- 它可以与应用程序一起部署,并且对相同的用户可用。
- 它包括一个扩展机制:将自定义 asp.net 页面添加到控制台以符合特定的安全要求。
- 自定义管理用户界面
还可以开发自定义 ASP.NET 或 WCF/Silverlight 管理界面。
- 它可以作为独立的管理控制台部署,也可以集成到您的应用程序中。
- 它们调用 Visual Guard API 来执行所有必要管理操作。这些 API 按上述方式进行保护。它们特别允许您管理租户并将管理限制委托给每个租户。在此处查看有关 API 的更多信息。
审计:集中式还是分布式视图和控制?
与管理权限类似,也可以同时授予和限制查看和控制多租户应用程序安全的权限。
根据具体情况,我们可能希望集中或分发这些权限。
示例 1:大型组织多个部门使用的内部应用程序
- 默认情况下,此类应用程序需要集中控制其安全性。
- 审计员必须能够查看所有访问权限和所有敏感操作,无论涉及用户、部门或租户。
- 然后,每个组织可以自由地将审计员的范围限制为特定用户集和/或应用程序。
示例 2:多个客户使用的 SaaS 商业应用程序
- 软件供应商可以向每个客户提供控制其用户安全的能力。在这种情况下,每个审计员的范围仅限于一个租户(客户)。
- 每个租户的审计员可以看到其用户的访问权限。他们还可以控制其租户的用户和管理员执行的操作。
- 如有必要,软件供应商可以控制其客户执行的某些操作。这在某些技术支持情况下可能很有用,例如了解应用程序使用和管理的历史。
集成 Visual Guard
集成 Visual Guard 是一个简单的过程。例如,以下是将 Visual Guard 集成到 .NET 应用程序的 4 个步骤:
- 将 Visual Guard 运行时添加到应用程序的 Visual Studio 项目中。
- 插入代码以标识用户并激活安全性。
- 创建 Visual Guard 存储库,并通过管理控制台声明您的应用程序。
- 生成 Visual Guard 配置参数。这些参数将存储在 2 个配置文件中:VisualGuardConfiguration.config 和 VisualGuardConfiguration.exe.config。
这些步骤只是 .NET 应用程序的一个示例,因为 Visual Guard 可以集成到任何可以发出 HTTP 请求的应用程序中。
结论
多租户应用程序为客户数据的安全性带来了独特的挑战。像 Visual Guard 这样的解决方案允许您为多租户应用程序使用单一访问控制系统,同时确保客户数据的隐私。