

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 AWS Lambda 輪換秘密
<a name="rotate-secrets"></a>

 AWS Well-Architected 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)，以及參閱 GitHub 中的[程式碼範例](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas/blob/master/README.md)。以下是 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_tw/prescriptive-guidance/latest/secure-sensitive-data-secrets-manager-terraform/images/rotate-secrets.png)
