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

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

轮换 Amazon Secrets Manager 密钥

Rotation 是定期更新密钥的过程。当轮换密钥时,会同时更新密钥和数据库或服务中的凭据。在 Secrets Manager 中,您可以为密钥设置自动轮换。

轮换的工作原理

提示

对于某些 由其他服务管理的密钥,可使用托管轮换。要使用 托管轮换,请首先通过管理服务来创建密钥。

Secrets Manager 轮换使用Amazon Lambda函数来更新密钥以及数据库或服务。有关使用 Lambda 函数的成本的信息,请参阅 定价

为了轮换密码,Secrets Manager 会根据您设置的时间表调用 Lambda 函数。您可以将计划设置为在一段时间后轮换,例如每 30 天轮换一次,也可以创建 cron 表达式。请参阅计划表达式。如果在设置自动轮换时也手动更新密钥值,则 Secrets Manager 在计算下一次轮换日期时会认为这是有效的轮换。

出于安全考虑,Secrets Manager 仅允许 Lambda 轮换函数直接轮换密钥。轮换函数无法调用第二个 Lambda 函数来轮换密钥。

轮换过程中,Secrets Manager 用暂存标注标注密钥的不同版本。在轮换过程中,Secrets Manager 调用几次同一函数,每次使用不同的参数。Secrets Manager 调用具有以下 JSON 请求参数结构的函数:

{ "Step" : "request.type", "SecretId" : "string", "ClientRequestToken" : "string" }

轮换函数完成轮换密钥的工作。轮换密码有四个步骤,对应下列 Lambda 轮换函数中的四个步骤:

  1. 创建密钥的新版本(createSecret

    轮换的第一步是创建密钥的一个新版本。在 Secrets Manager 提供的数据库轮换模板中,Lambda 轮换函数会为新版本生成长度为 32 个字符的密码。新版本可以包含新密码、新用户名和密码或更多机密信息。Lambda 轮换函数会标记新版本 AWSPENDING

  2. 更改数据库或服务(setSecret)中的凭证

    然后,Lambda 轮换函数会更改数据库或服务中的凭证,以匹配密钥的 AWSPENDING 版本。此步骤可以创建与现有用户具有相同权限的新用户,具体取决于您的轮换策略。

    适用于 Amazon RDS(Oracle 和 Db2 除外)和 Amazon DocumentDB 的轮换函数将自动使用安全套接字层 (SSL) 或传输层安全性协议 (TLS) 来连接到数据库(如果可用)。否则,他们将使用未加密的连接。

    注意

    如果您在 2021 年 12 月 20 日之前设置了自动密钥轮换,则您的轮换函数可能基于不支持 SSL/TLS 的较旧模板。请参阅确定您的轮换函数的创建时间。如果它是在 2021 年 12 月 20 日之前创建的,那么为了支持使用 SSL/TLS 的连接,您需要重新创建您的轮换函数

  3. 测试新的密钥版本(testSecret

    然后,Lambda 轮换函数将使用该密钥来访问数据库或服务,从而测试密钥的 AWSPENDING 版本。基于 轮换函数模板 测试的轮换函数使用读取访问权限测试新的密钥。根据应用程序所需的访问类型,您可以更新函数以包括其他访问权限,例如写入访问权限。

  4. 完成轮换(finishSecret

    最后,Lambda 轮换函数将标签 AWSCURRENT 从之前的密钥版本移动到此版本,这将同时在同一 API 调用中移除 AWSPENDING 标签。在此之前,您不应移除 AWSPENDING,也不应使用单独的 API 调用将其移除,因为这可能向 Secrets Manager 表明轮换未成功完成。Secrets Manager 添加 AWSPREVIOUS 暂存标注到以前的版本,以便您保留密钥的上次已知良好的版本。

在轮换期间,Secrets Manager 会录入指示轮换状态的事件。有关更多信息,请参阅 使用 Amazon CloudTrail 记录 Amazon Secrets Manager 事件

如果任何轮换步骤失败,Secrets Manager 会多次重试整个轮换过程。

成功轮换后,AWSPENDING 暂存标签可能附加到与 AWSCURRENT 版本相同的版本,也可能未附加到任何版本。如果 AWSPENDING 暂存标签存在但未附加到与 AWSCURRENT 相同的版本,则以后对轮换的任何调用都假定先前的轮换请求仍在进行中并返回错误。轮换不成功时,AWSPENDING 暂存标签可能会附加到空密钥版本。有关更多信息,请参阅 轮换问题排查

轮换成功后,从 Secrets Manager 找回 从 Amazon Secrets Manager 中检索密钥 的应用程序自动获取更新的凭据。有关每个轮换步骤的工作原理的更多详细信息,请参阅 Amazon Secrets Manager 旋转函数模板