

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

# 使用生成随机密码 AWS Secrets Manager
<a name="generate-random-passwords"></a>

Well-A AWS rchitected Framework 建议[你安全地存储和](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_identities_secrets.html)使用机密。您可以使用 AWS Secrets Manager API 生成随机密码，也可以自定义密码复杂度要求。该`GetRandomPassword`操作支持长度介于 1 到 4,096 个字符之间的密码字符串。有关更多信息，请参阅《AWS Secrets Manager API Reference》**中的 [GetRandomPassword](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetRandomPassword.html)。我们建议您使用这种方法来生成密钥，而不是允许用户手动定义密钥。

以下代码示例显示了如何生成长度为 20 个字符的随机密码，包括数字、不包括标点符号和不包括空格。您可以修改此代码示例，以满足贵组织的密码安全要求。

```
data "aws_secretsmanager_random_password" "test" { 
password_length = 20 
exclude_numbers = false 
exclude_punctuation = true 
include_space = false 
}
```

在部署 IaC 时使用随机生成密钥可以帮助您从一开始（即*零小时*）保护敏感数据。从部署阶段开始，任何人都不知道敏感数据。



![Terraform使用 AWS Secrets Manager 来创建和使用随机密钥。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/secure-sensitive-data-secrets-manager-terraform/images/terraform-get-secrets-from-secrets-manager.png)


1. 通过Terraform， AWS Secrets Manager 用于生成随机密码密钥。

1. Terraform使用存储在中的 AWS Secrets Manager随机密码密钥访问数据库。

**重要**  
当你Terraform用作数据源时，机密不会存储在[状态文件](https://developer.hashicorp.com/terraform/language/state)中。但是，在数据库或任何服务中使用该密钥后，它就会存储在状态文件中。我们建议您立即轮换密钥或创建非常严格的权限来访问状态文件。有关更多信息，请参阅本指南中的[保护Terraform状态文件中的敏感数据](terraform-state-file.md)。