多租户应用程序最佳实践 - Amazon Cognito

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

多租户应用程序最佳实践

Amazon Cognito 用户池与多租户应用程序一起运行,这些应用程序会生成大量请求,这些请求必须保持在 Amazon Cognito 配额范围内。要在客户群增长时扩大此容量,您可以购买额外的配额容量

注意

Amazon Cognito 配额按和适用。 AWS 账户 AWS 区域这些配额在应用程序中的所有租户之间共享。查看 Amazon Cognito 服务配额,确保配额符合应用程序中的预期容量和预期的租户数量。

本节介绍您可以实施的方法来区分同一区域内的 Amazon Cognito 资源和。 AWS 账户您也可以将租户分配到多个 AWS 账户 或多个区域,并为每个租户分配自己的配额。多区域多租户的其他优势包括尽可能高的隔离级别、为全球分布的用户提供最短的网络传输时间,以及遵守组织中现有的分发模式。

单区域多租户也可以为您的客户和管理员带来好处。

以下列表介绍了使用共享资源实现多租户的一些优势。

多租户的优势
常用用户目录

多租户支持客户在多个应用程序中拥有账户的模式。您可以将来自第三方提供商的身份关联到单个一致的用户池配置文件中。如果用户配置文件是其租户所独有的,则任何具有单用户池的多租户策略都有一个用户管理的切入点。

常见安全性

在共享用户池中,您可以创建单一的安全标准,并将相同的高级安全多因素身份验证 (MFA) 和AWS WAF标准应用于所有租户。由于 AWS WAF Web ACL 必须与您关联的资源 AWS 区域 相同,因此多租户提供对复杂资源的共享访问权限。如果您想在多区域 Amazon Cognito 应用程序中保持一致的安全配置,则必须应用在资源之间复制配置的操作标准。

常用定制

您可以使用自定义用户池和身份池 AWS Lambda。用户池中的 Lambda 触发器和身份池中的 Amazon Cognito 事件的配置可能会变得复杂。Lambda 函数必须与您的用户池或身份池相同 AWS 区域 。共享 Lambda 函数可以强制执行区域内的自定义身份验证流程、用户迁移、令牌生成和其他功能的标准。

常用消息

亚马逊简单通知服务 (AmazonSNS) 需要在某个区域进行额外配置,然后才能向用户发送SMS消息。您可以使用经亚马逊简单电子邮件服务 (AmazonSES) 验证的身份和区域内包含的域名发送电子邮件。

借助多租户,您可以在所有租户之间共享此配置和维护开销。由于 Amazon SNS 和 Amazon SES 并不完全可用 AWS 区域,因此在区域之间分配资源需要额外考虑。

使用自定义消息传递提供商时,您可以获得单个 Lambda 函数的通用自定义功能来管理您的消息传送。

托管用户界面在浏览器中设置会话 Cookie,以便识别已通过身份验证的用户。当您在用户池中对本地用户进行身份验证时,他们的会话 Cookie 会针对同一用户池中的所有应用程序客户端对他们进行身份验证。本地用户仅存在于您的用户群体目录中,无需通过外部 IdP 进行联合身份验证。会话 Cookie 的有效期为 1 小时。您无法更改会话 Cookie 的持续时间。

有两种方法可以防止使用托管界面会话 Cookie 跨应用程序客户端登录。

  • 将您的用户分成每个租户的用户池。

  • 将托管用户界面登录替换为 Amazon Cognito 用户API池登录。