了解和自定义您的 Lambda 轮换函数 - AWS Secrets Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

了解和自定义您的 Lambda 轮换函数

有关 Lambda 轮换函数的详细信息,请参阅Lambda 轮换函数概述

如果您为密钥类型选择支持的数据库之一,AWS Secrets Manager 将为您创建和配置 Lambda 轮换函数。您可以按照为 Amazon RDS 数据库密钥启用轮换中的步骤为这些数据库启用轮换。不过,如果要为另一个服务创建自定义 Lambda 轮换函数,您必须按照 为其他数据库或服务启用密钥轮换 中的步骤进行操作。

本节详细介绍了 Lambda 函数的运行方式,以及如何配置该函数以成功轮换密钥。

重要

Lambda 函数和调用函数的 Secrets Manager 密钥必须位于同一个 AWS 区域。如果位于不同的区域中,在尝试将函数的 Amazon 资源名称 (ARN) 添加到密钥元数据时,将会收到“Lambda 不存在”错误消息。

在创建您自己的 Lambda 函数以进行轮换时,请考虑以下方案。您可以根据保护受保护资源的身份验证系统支持的功能以及考虑的安全事项以应用方案。

  • 您可以只更改单个用户的密码。 一种常见方案是,服务是由访问服务的用户以外的其他人拥有的。服务所有者允许客户创建一个用户账户,通常将用户电子邮件地址作为用户名或至少作为唯一性键。在该方案中,服务通常允许用户根据需要多次更改密码。但该方案不允许用户创建额外的用户,并且通常不允许更改用户名。

    用户通常可以更改其密码,并且不需要使用具有管理员权限的单独用户执行密码更改。不过,由于您更改单个活动用户的密码,因此,在处理密码更改时,使用该用户访问服务的客户端可能暂时无法登录。

    在您更改密码和客户端均收到通知以使用密码的新版本之间,存在停机的可能性。这通常应该为几秒钟,并且您必须在使用密钥的应用程序代码中留出该时间。请务必启用具有一定延迟的重试,以允许在轮换期间出现这种短暂中断。

  • 您可以创建两个用户,以便在他们之间进行切换。 在该方案中,您可以创建一个用户,轮换过程克隆该用户以创建两个具有受保护资源的相同访问权限的用户。轮换过程在两个用户之间切换。Secrets Manager 更改密码,并在用户使用“活动”密钥中的凭证继续访问数据库或服务时测试“非活动”密钥。

    在客户端查询附加了默认 AWSCURRENT 暂存标签的版本以使用一个用户名访问受保护资源时,轮换函数更改第二个非活动用户的密码。轮换函数将更新的密码存储在具有 AWSCURRENT 暂存标签的新密钥版本中。在测试后,您将 AWSCURRENT 暂存标签移动到指向切换用户和新密码的新版本。所有客户端立即开始使用切换用户和更新的密码访问受保护资源。

    在到达下次轮换时间时,您可以更改现在闲置的原始用户账户的密码。从而创建密钥的另一个新版本并重复此周期。

    该方案需要使用第二个密钥,它指向有权更改两个用户的密码的管理员或超级用户。

  • 您可以为单个用户创建新凭证。 某些系统允许您创建具有多组访问凭证的单个用户。每个访问凭证提供一组完整的凭证,并且彼此独立地使用。在 Secrets Manager 使用第二个访问凭证时,您可以删除并重新创建第一个访问凭证。然后,您可以将所有客户端切换到新的第一个访问凭证。下次轮换时,您删除并重新创建第二个访问凭证,而客户可以继续使用第二个访问凭证。

要获取其他详细信息以及有关如何配置每个方案的说明,请参阅以下主题: