

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

# AWS Lambda 用于轮换密钥
<a name="rotate-secrets"></a>

Well-A AWS rchitected Framework 建议[你安全地存储和](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_identities_secrets.html)使用机密。此最佳实践建议您定期自动轮换证书。*轮换*是指您定期升级密钥以使攻击者更难访问凭据的过程。许多合规框架和法规还要求您轮换机密。

对于 Terraform IaC，您可以使用 AWS Secrets Manager 和[AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)来建立自动轮换。在 Secrets Manager 中，您可以为密钥设置自动轮换。当 Secrets Manager 轮换密钥时，会同时更新密钥和数据库或服务中的凭据。

对于数据库，我们建议您在 Secrets Manager 中管理主凭证，并定期轮换密钥。Secrets Manager 为 Lambda 提供了多种类型的数据库凭证的轮换函数模板。有关更多信息，请参阅 Secrets Manager 文档中的[AWS Secrets Manager 轮换函数模板](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_available-rotation-templates.html)和中的[代码示例](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/blob/master/README.md) GitHub。以下是可用于轮换密钥或敏感数据的 Terraform IaC 示例。

```
resource "aws_secretsmanager_secret_rotation" "createrotation" {
  count               = var.needrotation == true ? 1 : 0
  secret_id           = aws_secretsmanager_secret.initiatesecret.id
  rotation_lambda_arn = aws_lambda_function.rotationlambda.arn

  rotation_rules {
    automatically_after_days = 1
  }
}
```

以下架构图显示了如何使用 Secrets Manager、Amazon VPC 终端节点和 Lambda 函数在中轮换敏感数据。 AWS 账户



![\[使用 Lambda 轮换密钥 AWS Secrets Manager\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/secure-sensitive-data-secrets-manager-terraform/images/rotate-secrets.png)
