创建数据库密钥 - AWS Secrets Manager

创建数据库密钥

要存储 Amazon RDS、Amazon Aurora、Amazon Redshift 或 Amazon DocumentDB 的凭证,请按照以下步骤操作。当您使用 AWS CLI 或者某个 SDK 来存储密钥时,您必须以数据库密钥的 JSON 结构提供该密钥。当您使用控制台来存储某个数据库密钥时,Secrets Manager 会自动以正确的 JSON 结构创建该密钥。

当存储复制到其他区域的源数据库的数据库凭证时,密钥将包含源数据库的连接信息。然后复制密钥时,副本将是源密钥的副本,并且包含相同的连接信息。您可以在密钥中添加其他键值对以记录区域连接信息。

要创建密钥,您需要 SecretsManagerReadWrite AWS 托管式策略授予的权限。

创建密钥(控制台)

  1. 通过 https://console.aws.amazon.com/secretsmanager/ 打开 Secrets Manager 控制台。

  2. 选择 Store a new secret (存储新密钥)

  3. Choose secret type(选择密钥类型)页面上,执行以下操作:

    1. 对于 Secret type(密钥类型)中,请选择要存储的数据库凭证类型:

      • Amazon RDS 数据库(包括 Aurora)

      • Amazon DocumentDB 数据库

      • Amazon Redshift 集群

    2. 对于 Credentials(凭证),请输入数据库的凭证。

    3. 对于 Encryption key(加密密钥),选择 Secrets Manager 用于加密密钥值的 AWS KMS key:

      • 在大多数情况下,请选择 aws/secretsmanager 以将 AWS 托管式密钥 用于 Secrets Manager。使用此密钥不产生任何费用。

      • 如果您需要从另一个 AWS 账户 处访问密钥,或者如果您想使用自己的 KMS 密钥,以便轮换密钥或对其应用密钥策略,请从列表中选择客户托管密钥,或者选择 Add New Key(添加新密钥)以创建密钥。您将需要为您创建的 KMS 密钥付费。

        您必须具有该密钥的以下权限:kms:Encryptkms:Decryptkms:GenerateDataKey。有关跨账户访问的更多信息,请参阅用户在不同账户下的权限

    4. 对于 Database(数据库),请选择您的数据库。

    5. 选择 Next (下一步)

  4. Configure secret(配置密钥)页面上,执行以下操作:

    1. 输入一个描述性的 Secret name(密钥名称)和 Description(说明)。

    2. (可选)在标签部分中,在您的密钥中添加一个或多个标签。有关标记策略,请参阅 标记密钥。请不要将敏感信息存储在标签中,因为它们未加密。

    3. (可选)在资源权限,要将资源策略添加到您的密钥中,请选择编辑权限。有关更多信息,请参阅将权限策略附加到密钥

    4. (可选)在 Replicate secret(复制密钥)中,要将密钥复制到另一个 AWS 区域 中,请选择 Replicate secret(复制密钥)。您可以现在复制密钥,也可以回头再复制。有关更多信息,请参阅将密钥复制到其他区域

    5. 选择 Next (下一步)

  5. (可选)在 Configure rotation(配置轮换)页面上,您可以启用自动轮换。您也可以现在保持关闭轮换,然后稍后将其打开。有关更多信息,请参阅轮换 密钥。选择 Next (下一步)

  6. Review (审核) 页上,审核您的密钥详细信息,然后选择 Store (存储)

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

AWS CLI

要使用 AWS CLI 创建密钥,请首先创建一个包含该密钥的 JSON 文件。要使 Secrets Manager 能够轮换密钥,您必须确保 JSON 符合数据库密钥的 JSON 结构。有关更多信息,请参阅自动轮换 Amazon RDS、Amazon DocumentDB 或 Amazon Redshift 密钥

然后使用 create-secret 操作将密钥存储在 Secrets Manager 中。

创建密钥

  1. 在文件中创建密钥,例如名为 mycreds.json 的 JSON 文件。

    { "engine": "mysql", "host": "<instance host name/resolvable DNS name>", "username": "<username>", "password": "<password>", "dbname": "<database name. If not specified, defaults to None>", "port": "<TCP port number. If not specified, defaults to 3306>" }
  2. 在 AWS CLI 中,使用下列命令。

    $ aws secretsmanager create-secret --name MySecret --secret-string file://mycreds.json

    下面显示了输出。

    { "SecretARN": "arn:aws:secretsmanager:Region:AccountId:secret:MySecret-a1b2c3", "SecretName": "MySecret", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE" }

AWS 开发工具包

要通过使用其中一个 AWS 软件开发工具包创建密钥,请使用 CreateSecret 操作。有关更多信息,请参阅AWS 软件开发工具包