【SaaS架构】SaaS镜头-场景之无服务器SaaS : 防止跨租户访问

视频号

微信公众号

知识星球

Chinese, Simplified

每个SaaS架构还必须考虑如何防止租户访问另一个租户的资源。有些人怀疑是否需要使用AWS Lambda隔离租户,因为根据设计,在给定的时间内,只有一个租户可以运行Lambda功能。虽然这是正确的,但我们的隔离还必须考虑确保运行函数的租户不访问可能属于另一个租户的其他资源。

对于SaaS提供商,在无服务器SaaS环境中实现隔离有两种基本方法。第一个选项遵循筒仓模式,为每个租户部署一组单独的Lambda函数。使用此模型,您将为每个租户定义一个执行角色,并为每个租户部署单独的功能及其执行角色。此执行角色将定义给定租户可以访问哪些资源。例如,您可以在此模型中部署一组高级租户。然而,这可能很难管理,并且可能会遇到帐户限制(取决于系统支持的租户数量)。

这里的另一个选项更符合池模型。在这里,函数部署了一个执行角色,该角色的范围足够大,可以接受来自所有租户的调用。在此模式下,您必须在运行时在多租户函数的实现中应用隔离范围。图2中的图表提供了如何解决这一问题的示例。

图2:无服务器环境中的隔离

在本例中,您将看到我们有三个租户访问一组Lambda函数。因为这些功能是共享的,所以部署它们的执行角色覆盖所有租户。在这些功能的实现中,我们的代码将使用当前租户的上下文(通过JWT提供)从AWS安全令牌服务(AWS STS)获取一组新的租户范围的凭据。一旦我们有了这些凭据,就可以使用它们访问具有租户上下文的资源。在本例中,我们使用这些作用域凭据来访问存储。

需要注意的是,这个模型确实将隔离模型的一部分推到了Lambda函数的代码中。有一些技术(例如函数包装器)可以将这个概念引入开发人员的视野之外。获取这些证书的细节也可以转移到Lambda层,以使其成为一个更无缝的、集中管理的构造。

 

本文地址
https://architect.pub/saas-lens-scenarios-serverless-saas-preventing-cross-tenant-access
SEO Title
saas-lens-scenarios-serverless-saas -Preventing Cross Tenant Access