亚马逊AWS官方博客
使用 Amazon Cognito 多区域复制提高应用程序韧性
作为一名与 Web 和移动应用程序开发者合作的开发者布道师,我经常听到一项需求:在不太可能发生的区域性服务中断情况下,也要保持一致的用户身份验证。随着代理式人工智能、微服务、自动化和服务帐户越来越普及,对对机器间身份验证也催生了同样的需求。今天,我很高兴与大家分享 Amazon Cognito 的两项重要更新:多区域复制(用于提高韧性)和支持客户托管密钥(用于强化加密控制)。
许多应用程序依赖 Amazon Cognito 来处理用户和机器间身份验证以及管理用户个人资料。在构建高可用性架构时,跨 AWS 区域的数据一致性是关键方法,但在此之前,实现该目标面临诸多挑战。工程团队花费了大量时间来构建和维护自定义复制解决方案,以跨区域同步配置。在区域间手动导出和导入用户数据存在数据泄露安全隐患,并且容易引发数据不一致问题。在区域过渡期间,终端用户会经历强制重置密码、重新登录等中断。对于机器间通信,团队必须在辅助区域创建新的应用程序客户端,这意味着重新配置其应用程序并更新受 OAuth 保护的资源,以接受新区域签发者签发的访问令牌。这些挑战使得各区域难以保持不间断运营。
借助多区域复制,Amazon Cognito 可自动在您选择的辅助 AWS 区域中维护您的用户数据和计算机密钥的同步副本。复制流程是单向的,仅从主区域复制至辅助区域,覆盖用户资料、凭证和池配置。辅助区域以只读模式运行,重点是维护身份验证功能。现有会话不受中断影响。
如果需要将流量引导到辅助区域,现有用户可以继续使用其现有凭证登录,不会中断。当前登录用户将保持其身份验证有效,因为是两个区域都可以识别对方签发的访问令牌。多区域复制支持所有身份验证方法,包括通过社交提供商(Amazon、Google、Apple、Facebook)进行联合登录、安全断言标记语言(SAML)和 OpenID Connect(OIDC)集成以及 API 授权流程。这种方法可以保持后端服务中面向客户的应用程序和机器间通信的可用性。尽管身份验证不会中断,但在失效转移期间,新用户注册或用户信息更新等操作不可用。
在配置多区域复制之前,您必须配置存储在 AWS Key Management Service(AWS KMS)中的多区域客户托管密钥,以加密您的静态用户数据。这些密钥可实现跨区域一致加密,同时让您能够自主控制加密策略。
实际操作演示
我从 us-west-2(俄勒冈州)区域的现有 Cognito 用户池开始本次演示。我想将配置复制至 us-east-1(弗吉尼亚州北部)区域。我还在这两个区域复制了一个客户自主管理型密钥。
配置多区域复制仅需三步。AWS 管理控制台引导我完成以下步骤:设置自定义加密密钥、配置多区域 OIDC 端点以及配置复制本身。
首先,我设置了一个自定义 AWS KMS 密钥来加密静态数据。
我选择我创建的自定义密钥。我还更新了密钥策略,允许 Amazon Cognito 访问和使用密钥。控制台会显示需要添加至密钥策略的合规 IAM 策略语句。
选定自定义密钥且配置无误后,控制台会弹出确认提示。
其次,按照控制台说明配置 OIDC 签发者类型。在步骤 2 — 可选中,我选择配置。
确保使用这些新端点更新我的客户端应用程序。这是一项必要的更改,需要重新部署服务器端应用程序,并在 App Store 和 Google Play 上提交移动应用程序的更新。如果不更新端点,我的用户将遭遇服务中断,因为发往旧端点的请求将无法再正确路由。
在下一个屏幕上,选择已更新。记下新的 URL。确认更改并选择更改签发者类型。
最后,选择要复制的目标区域。只有已复制自定义加密密钥的区域可供选择。选择目标区域后,选择创建。
。
服务开始进行数据准备工作。所需的时间取决于用户池中的数据量。
复制的用户池准备就绪后,手动将其激活。
复制状态变为活动。已准备好将流量引导至副本。
其他配置
控制台可以帮助我跟踪需要规划的其他配置。使用 Lambda 函数进行自定义身份验证流程或者短信或电子邮件通知时,还必须在新区域部署和配置这些资源。
同样,开始将身份验证流量定向到目标区域之前,必须在目标区域手动配置日志流或 AWS WAF 配置。
运行状况检查和失效转移
主要和辅助区域端点均保持活动状态,随时准备为您的流量提供服务。要监控系统运行状况并管理失效转移,您需要设计符合应用程序特定要求和安全态势的策略。您可以实施运行状况检查来监控主要区域中身份验证服务的状态,并定义何时启动失效转移的标准。这些检查可能会查找错误率、延迟模式或特定的服务警报。
当您的监控系统检测到符合失效转移标准的问题时,您可以通过 DNS 更新将流量重定向到辅助区域。这种方法使您可以控制失效转移流程,同时维护安全性。考虑在非高峰时段测试失效转移策略:重定向一小部分流量,以验证身份验证在辅助区域是否继续按预期运行。
将托管登录和自定义域联合身份验证一起使用时,您还可以通过提供 Amazon Route 53 运行状况检查 ID 来使用内置流量路由功能。
定价和可用性
多区域复制现已作为附加功能,向使用 Essentials 和 Plus 套餐的 Amazon Cognito 用户开放。对于用户身份验证,该附加组件的费用为每个副本区域每月活跃用户 0.0045 美元(对于 Essentials 套餐客户);每个副本区域每月活跃用户 0.006 美元(对于 Plus 套餐客户)。对于机器对机器(M2M)身份验证,在原有成功签发令牌的按量标准定价基础上,额外加收 30% 附加服务费。有关详细定价信息,请参阅 Amazon Cognito 定价。
多区域复制现已在以下区域推出:美国东部(俄亥俄州、弗吉尼亚州北部)、美国西部(加利福尼亚北部、俄勒冈州)、亚太地区(孟买、首尔、新加坡、悉尼、东京)、加拿大(中部)、欧洲地区(法兰克福、爱尔兰、伦敦、巴黎、斯德哥尔摩)以及南美洲(圣保罗)。
上述任一区域都可以作为复制的源或目标。
Essentials 和 Plus 套餐支持客户自主管理型密钥。该功能已在以下区域推出:美国东部(俄亥俄州、弗吉尼亚北部)、美国西部(加利福尼亚北部、俄勒冈州)、非洲(开普敦)、亚太地区(香港、海得拉巴、雅加达、马来西亚、墨尔本、孟买、新西兰、大阪、首尔、新加坡、悉尼、泰国、东京)、加拿大(中部)、加拿大西部(卡尔加里)、欧洲地区(法兰克福、爱尔兰、伦敦、米兰、巴黎、西班牙、斯德哥尔摩、苏黎世)、以色列(特拉维夫)、墨西哥(中部)、南美洲(圣保罗)和 AWS GovCloud(美国东部、美国西部)
从我与客户的对话来看,在区域事件期间保持业务连续性,同时满足安全要求是当务之急。多区域复制使企业无需自己管理复杂的复制逻辑即可构建更具韧性的应用程序。用户数据和配置自动同步可减少运营开销,同时维护安全性。
对于受监管行业的客户而言,新增的客户自主管理型密钥支持功能进一步强化了对数据加密的控制。现在,您可以使用自己的加密密钥来保护静态用户数据,从而帮助满足医疗保健和金融服务等行业的监管要求。
要开始使用多区域复制和客户自主管理型密钥加密,请访问 Amazon Cognito 控制台或查看文档以获取详细的设置说明。期待听到各位借助该功能强化应用程序架构的消息。






