

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Lambda を使用してシークレットを更新する
<a name="rotate-secrets"></a>

 AWS Well-Architected フレームワークでは、[シークレットを安全に保存して使用することを推奨しています](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/ja_jp/prescriptive-guidance/latest/secure-sensitive-data-secrets-manager-terraform/images/rotate-secrets.png)
