

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

# 创建密 AWS Secrets Manager 钥
<a name="create_secret"></a>

*密钥*可以是密码、一组证书（例如用户名和密码）、 OAuth 令牌或您以加密形式存储在 Secrets Manager 中的其他机密信息。

**提示**  
对于 Amazon RDS 和 Amazon Redshift 管理员用户凭证，我们建议您使用[托管密钥](service-linked-secrets.md)。您可以通过管理服务创建托管密钥，然后可以使用[托管轮换](rotate-secrets_managed.md)。

当使用控制台存储复制到其他区域的源数据库的数据库凭证时，密钥将包含源数据库的连接信息。然后复制密钥时，副本将是源密钥的副本，并且包含相同的连接信息。您可以向密钥中添加其他 key/value 配对，以获取区域连接信息。

要创建密钥，您需要[SecretsManagerReadWrite 托管策略](reference_available-policies.md)授予的权限。

当你创建密钥时，Secrets Manager 会生成一个 CloudTrail 日志条目。有关更多信息，请参阅 [使用记录 AWS Secrets Manager 事件 AWS CloudTrail](monitoring-cloudtrail.md)。

**创建密钥（控制台）**

1. 打开 Secrets Manager 控制台，网址为[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)。

1. 选择**存储新密钥**。

1. 在 **Choose secret type**（选择密钥类型）页面上，执行以下操作：

   1. 对于 **Secret type**（密钥类型），执行以下操作之一：
      + 要存储数据库凭证，请选择要存储的数据库凭证类型。然后选择**数据库**，并输入**凭证**。
      + 要存储非用于数据库的 API 密钥、访问令牌和凭证，请选择**其他类型的密钥**。

        在**键值对**中，请以 JSON **键值**对格式输入密钥，或者选择**明文**选项卡，然后以任何格式输入密钥。您可以在密钥中存储最多 65536 个字节。一些示例：

------
#### [ API key ]

         key/value 成对输入：

        **ClientID** : *my\$1client\$1id*

        **ClientSecret** : *wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY*

------
#### [ OAuth token ]

        输入明文：

        *AKIAI44QH8DHBEXAMPLE*

------
#### [ Digital certificate ]

        输入明文：

        ```
        -----BEGIN CERTIFICATE-----
        EXAMPLE
        -----END CERTIFICATE-----
        ```

------
#### [ Private key ]

        输入明文：

        ```
        –--- BEGIN PRIVATE KEY ----
        EXAMPLE
        ––-- END PRIVATE KEY –---
        ```

------
      + 要存储来自 Secrets Manager 合作伙伴的托管外部密钥，请选择**合作伙伴密钥**。然后选择合作伙伴并提供可识别合作伙伴秘密的详细信息。有关更多信息，请参阅 [使用 AWS Secrets Manager 托管的外部机密来管理第三方机密](managed-external-secrets.md)。

   1. 对于**加密密钥**，选择 Secrets Manager 用来加密密钥值的。 AWS KMS key 有关更多信息，请参阅 [密钥加密和解密](security-encryption.md)。
      + 在大多数情况下，请选择 **aws/secretsmanager 来使用 secrets Manager**。 AWS 托管式密钥 使用此密钥不产生任何费用。
      + 如果您需要从其他密钥访问密钥 AWS 账户，或者想要使用自己的 KMS 密钥以便轮换密钥或对其应用密钥策略，请从列表中选择客户托管密钥，输入客户托管密钥的密钥 ARN 或别名 ARN，或者选择**添加新密钥来创建密钥**。有关使用客户托管密钥的成本的信息，请参阅 [定价](intro.md#asm_pricing)。

        您必须具有 [KMS 密钥的权限](security-encryption.md#security-encryption-authz)。有关跨账户访问的更多信息，请参阅[从其他账户访问 AWS Secrets Manager 密钥](auth-and-access_examples_cross.md)。

   1. 选择**下一步**。

1. 在 **Configure secret**（配置密钥）页面上，执行以下操作：

   1. 输入一个描述性的 **Secret name**（密钥名称）和 **Description**（说明）。密钥名称可以包含 1-512 个字母数字和 /\$1\$1=.@- 字符。

   1. （可选）如果您创建了外部密钥，请输入保存该密钥的 Secrets Manager 合作伙伴所需的元数据。

   1. （可选）在**标签**部分中，在您的密钥中添加一个或多个标签。有关标记策略，请参阅 [在中标记机密 AWS Secrets Manager](managing-secrets_tagging.md)。请不要将敏感信息存储在标签中，因为它们未加密。

   1. （可选）在**资源权限**，要将资源策略添加到您的密钥中，请选择**编辑权限**。有关更多信息，请参阅 [基于资源的策略](auth-and-access_resource-policies.md)。

   1. （可选）在**复制密钥**中，要将您的密钥复制到另一个密钥 AWS 区域，请选择**复制密钥**。您可以现在复制密钥，也可以回头再复制。有关更多信息，请参阅 [多区域复制](replicate-secrets.md)。

   1. 选择**下一步**。

1. （可选）在 **Configure rotation**（配置轮换）页面上，您可以启用自动轮换。您也可以现在保持关闭轮换，然后稍后将其打开。有关更多信息，请参阅 [轮换 密钥](rotating-secrets.md)。选择**下一步**。

1. 在 **Review (审核)** 页上，审核您的密钥详细信息，然后选择 **Store (存储)**。

   Secrets Manager 将返回到密钥列表。如果您的新密钥未显示，请选择 Refresh（刷新）按钮。

## AWS CLI
<a name="create_secret_cli"></a>

当您在命令 shell 中输入命令时，存在访问命令历史记录或实用程序可以访问您命令参数的风险。请参阅[降低使用存储 AWS Secrets Manager 密钥 AWS CLI 的风险](security_cli-exposure-risks.md)。

**Example 根据 JSON 文件中的数据库凭证创建密钥**  
以下 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/create-secret.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/create-secret.html) 示例将根据文件中的凭证创建密钥。有关更多信息，请参阅《 AWS CLI 用户指南》中的[从文件加载 AWS CLI 参数](https://docs.aws.amazon.com//cli/latest/userguide/cli-usage-parameters-file.html)。  
要使 Secrets Manager 能够轮换密钥，您必须确保 JSON 符合[密钥的 JSON 结构](reference_secret_json_structure.md)。  

```
aws secretsmanager create-secret \
    --name MyTestSecret \
    --secret-string file://mycreds.json
```
mycreds.json 的内容：  

```
{
    "engine": "mysql",
    "username": "saanvis",
    "password": "EXAMPLE-PASSWORD",
    "host": "my-database-endpoint.us-west-2.rds.amazonaws.com",
    "dbname": "myDatabase",
    "port": "3306"
}
```

**Example 创建密钥**  
以下 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/create-secret.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/secretsmanager/create-secret.html) 示例将创建包含两个键值对的密钥。  

```
aws secretsmanager create-secret \
    --name MyTestSecret \
    --description "My test secret created with the CLI." \
    --secret-string '{"user":"diegor","password":"EXAMPLE-PASSWORD"}'
```

**Example 创建密钥**  
以下 [https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/create-secret.html](https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/create-secret.html) 示例将创建包含两个标签的密钥。  

```
aws secretsmanager create-secret \
    --name MyTestSecret \
    --description "My test secret created with the CLI." \
    --secret-string '{"user":"diegor","password":"EXAMPLE-PASSWORD"}'  \
    --tags '[{"Key": "FirstTag", "Value": "FirstValue"}, {"Key": "SecondTag", "Value": "SecondValue"}]'
```

## AWS SDK
<a name="create_secret_sdk"></a>

要使用其中一个来创建密钥 AWS SDKs，请使用[https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)操作。有关更多信息，请参阅 [AWS SDKs](asm_access.md#asm-sdks)。