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

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

为 Amazon Redshift 轮换密钥

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

Secrets Manager 支持 Amazon Redshift 数据库

Secrets Manager 支持 Amazon Redshift,这表示在启用轮换时,Secrets Manager 提供完整且可直接运行的 Lambda 轮换函数。

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

如果您在 Amazon VPC 提供的 VPC 中运行 Amazon Redshift 集群,并且该 VPC 无法访问公有 Internet,则 Secrets Manager 还会将 Lambda 函数配置为在该 VPC 中运行。此外,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 轮换函数