轮换支持的 Amazon RDS 数据库的密钥 - AWS Secrets Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

轮换支持的 Amazon RDS 数据库的密钥

您可以将 AWS Secrets Manager 配置为自动轮换 Amazon RDS 数据库的密钥。Secrets Manager 使用 Secrets Manager 提供的 Lambda 函数。

支持的 Amazon RDS 数据库

对于 Secrets Manager 中的 Amazon RDS 选项,支持的数据库是指,在启用轮换时,Secrets Manager 提供一个用于该数据库的完整且可直接运行的 Lambda 轮换函数。有关支持的数据库的完整列表,请参阅支持完全配置且直接可用的轮换的数据库。对于任何其他类型的 数据库,您仍然可以轮换您的密钥。不过,您必须使用用于其他数据库的工作流。有关这些说明,请参阅轮换其他数据库或服务的 AWS Secrets Manager 密钥

如果启用密钥轮换并将 Credentials for RDS database (RDS 数据库凭证) 作为密钥类型,Secrets Manager 将自动为您创建和配置一个 Lambda 轮换函数。然后,Secrets Manager 为您的密钥提供该函数的 Amazon 资源名称 (ARN)。Secrets Manager 创建与该函数关联的 IAM 角色,并为该角色配置所需的所有权限。或者,如果您为另一个密钥使用相同的轮换策略,而您希望为新密钥使用该轮换策略,则可以指定现有函数的 ARN 并将其用于两个密钥。

如果在 Amazon VPC 提供的 VPC 中运行 Amazon RDS 数据库实例,并且该 VPC 无法访问公有 Internet,则 Secrets Manager 还会将 Lambda 函数配置为在该 VPC 中运行。Secrets Manager 还要求 Lambda 轮换函数必须能够访问 Secrets Manager 服务终端节点以调用所需的 API 操作。如果 VPC 中的一个或多个资源必须与 Internet 通信,您可以为 VPC 配置 NAT 网关,以允许 Lambda 轮换函数查询公有 Secrets Manager 服务终端节点。如果您不要求与 Internet 进行通信,您可以为 VPC 配置私有 Secrets Manager 服务终端节点(可从 VPC 中进行访问)。

否则,您通常只需要提供一些详细信息,以确定用于构建 Lambda 函数的模板:

  • 指定包含的凭证有权轮换密钥的密钥:有时,用户可以更改其密码。在其他时候,用户具有非常有限的权限,而无法更改其密码。相反,您必须使用不同管理员或“超级用户”的凭证以更改用户凭证。

    您必须指定轮换函数使用哪些密钥轮换受保护数据库上的凭证:

    • 使用此密钥:如果当前密钥中的凭证有权在数据库中更改密码,请选择该选项。选择该选项将导致 Secrets Manager 实施一个具有轮换策略的 Lambda 函数,以便在每次轮换时更改单个用户的密码。有关该轮换策略的更多信息,请参阅为只有一个密码的一个用户轮换 AWS Secrets Manager 密钥

      注意事项

      Secrets Manager 提供该项以作为“低可用性”选项。在轮换功能删除旧密码以及更新的密码可作为密钥的新版本访问之间,可能会发生登录失败。该时间段可能非常短,数量级为一秒或更短。如果选择该选项,请确保客户端应用程序在代码中实施了相应的“后退并使用抖动重试”策略。只有在较长时间内登录失败几次时,这些应用程序才会生成错误。

    • 使用我之前存储在 AWS Secrets Manager 中的密钥:如果当前密钥中的凭证包含更有限的权限,并且不能用于在受保护服务上更新凭证,请选择该选项。或者请在需要高可用性的密钥时选择该选项。要选择该选项,请创建单独的“主”密钥,它包含的凭证有权在受保护服务上创建和更新凭证。然后,从列表中选择该主密钥。选择该选项将导致 Secrets Manager 实现一个 Lambda 函数。该 Lambda 函数的轮换策略克隆位于密钥中的初始用户。然后,该函数在每次轮换时在两个用户之间切换,并更新变为活动状态的用户的密码。有关该轮换策略的更多信息,请参阅通过在两个现有用户之间交替来轮换 AWS Secrets Manager 密钥

      注意事项

      Secrets Manager 提供该选项以作为“高可用性”选项,因为在准备和测试新版本时旧版本的密钥继续运行并处理服务请求。在客户端切换到新版本后,Secrets Manager 才会弃用旧版本。在版本之间进行切换时,不会发生停机。

      该选项要求 Lambda 函数克隆原始用户的权限,并将其应用于新用户。然后,该函数在每次轮换时在两个用户之间切换。

      如果您需要更改为用户授予的权限,请确保更改两个用户的权限。

  • 自定义函数:您可以自定义 Secrets Manager 提供的 Lambda 轮换函数以满足您的组织的要求。例如,您可以扩展函数的 testSecret 阶段以使用应用程序特定的检查测试新版本,以确保新密钥正常工作。有关说明,请参阅自定义 Secrets Manager 提供的 Lambda 轮换函数