

# 租户隔离
<a name="tenant-isolation"></a>

 您迁移到多租户模式的客户越多，他们就越担心一个租户是否有可能访问另一个租户的资源。SaaS 系统包括明确的机制，可确保每个租户的资源(即使它们运行在共享基础设施上)都是隔离的。

 这就是我们所说的*租户隔离*。租户隔离背后的想法是，您的 SaaS 架构引入了严格控制资源访问权限的结构，并阻止任何访问其他租户资源的尝试。

 请注意，租户隔离与一般安全机制是分开的。您的系统将支持身份验证和授权；但是，租户用户经过身份验证并不意味着您的系统已经实现了隔离。隔离与应用程序中可能包含的基本身份验证和授权分开应用。

 为了更好地理解这一点，假设您使用了身份提供商来验证对您的 SaaS 系统的访问权限。这种身份验证体验提供的令牌还可能包含有关用户角色的信息，这些信息可用于控制该用户对特定应用程序功能的访问权限。这些结构提供了安全性，但不能提供隔离。事实上，系统可能会对用户进行了身份验证和授权，但其仍然可以访问其他租户的资源。任何有关身份验证和授权的内容都不一定会阻止这种访问。

 租户隔离重点关注使用租户上下文来限制对资源的访问。它评估当前租户的上下文，并使用该上下文来确定该租户可以访问哪些资源。它对与该租户关联的所有用户应用此隔离。

 当我们研究如何在所有不同的 SaaS 架构模式中实现租户隔离时，这变得更具挑战性。在某些情况下，可以通过将整个资源堆栈专用于租户来实现隔离，其中网络（或更粗粒度的）策略会阻止跨租户访问。在其他场景下，您可能拥有池化资源（[Amazon DynamoDB](https://aws.amazon.com/dynamodb/) 表中的项目），这些资源需要更精细的策略来控制对资源的访问权限。

 访问租户资源的任何尝试都应该限定在属于该租户的资源范围内。SaaS 开发人员和架构师的职责是，确定结合使用哪些工具和技术可以支持您的特定应用程序的隔离要求。