教程: 使用主密钥旋转用户密钥 - AWS Secrets Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

教程: 使用主密钥旋转用户密钥

本教程基于您在第一个教程中完成的任务: 教程: 为 AWS 数据库。开始本教程之前,请先完成之前的教程。

在本教程中,您将已创建的密钥作为数据库的主用户。您创建一个新的受限用户,并为该用户创建一个密钥。然后,您使用主密钥中的凭证为用户密钥配置轮换。主密钥的 Lambda 轮换函数克隆第一个用户,然后在两个用户之间切换,从而依次更改每个用户的密码。

第1步: 为您的数据库创建新用户并创建用户密钥

首先,在您的 Amazon RDS MySQL 数据库并将这些凭据存储在新密钥中。

第2步: 验证您的初始密钥

在步骤 2 中,确认您可以使用密钥中存储的凭证作为新用户访问数据库。

第3步: 为密钥配置轮换

在步骤 3 中,为用户密钥配置轮换。您指定用于为轮换函数授予访问权限的主密钥。

第4步: 验证成功旋转

在该步骤中,您轮换两次密钥,以说明密钥从两个可访问数据库的备用用户中检索正常工作的凭证。

第5步: 清除

在最后一步,删除您创建的 Amazon RDS 数据库实例和密钥,以免产生任何不必要的费用。

Prerequisites

  • 本教程假定您有权访问 AWS 账户,并假定您可以在控制台中或使用 AWS CLI 中的等效命令,以具有完全权限的用户身份登录到 AWS 以配置 AWS Secrets Manager 和 Amazon RDS。

  • 您必须已完成教程: 为 AWS 数据库教程中的步骤,而没有按照最后一节中所述删除数据库和用户,并为您提供以下项:

    • 一种 Amazon RDS MySQL 数据库被调用 MyTestDatabase 在名为的实例中运行 MyTestDatabaseInstance.

    • 具有管理权限的名为adminuser 的主用户。

    • 名为 adminuser 的密钥,具有存储在 Secrets Manager 中的凭证。

第1步: 为您的数据库创建新用户并创建用户密钥

从原始教程中,您有一个 Amazon RDS MySQL 具有单个管理员的数据库 大师 用户。您还具有一个密钥,您可以用于检索主用户的最新凭证。在该步骤中,您创建一个新的受限用户,并将凭证存储在密钥中。例如,从数据库中查询信息的移动应用程序可能会使用该密钥。用户不需要任何其他权限。

  1. 打开您的 MySQLWorkbench 并选择您的 MyTestDatabaseInstance 连接并登录数据库。

  2. Query 1 (查询 1) 界面中,输入 CREATE USER mytestuser IDENTIFIED BY 'userpassword';

  3. 使用 图标。

    查看 Action Output (操作输出) 以了解查询是否成功完成。

  4. Query 1 (查询 1) 中删除上一个查询。

  5. 在中输入以下文本 查询1: GRANT SELECT on *.* TO mytestuser,并运行查询。

  6. 查看 Action Output (操作输出) 以了解查询是否成功完成。

使用控制台创建新密钥

  1. https://console.amazonaws.cn/secretsmanager/ 打开 Secrets Manager 控制台。

  2. 在包含您的账户中的密钥列表的页面上,选择存储新密钥

  3. Create Secret (创建密钥) 页上的 Select secret type (选择密钥类型) 部分中,选择 Credentials for RDS database (RDS 数据库凭证)

  4. 对于用户名,请键入 mytestuser 以匹配您在步骤 1b 中创建的用户的名称。

  5. 对于密码,请键入您在步骤 1b 中为 mytestuser 提供的相同密码。

  6. 对于 选择加密密钥,将其设置为 DefaultEncryptionKey.

  7. 对于 选择此密钥将访问的RDS数据库,选择实例 MyTestDatabaseInstance 您在上一个教程中创建的。

  8. 选择下一步

  9. Secret name and description (密钥名称和描述) 部分中,为 Secret name (密钥名称) 键入 MyTestDatabaseUserSecret

  10. 配置自动轮换部分中,暂时将轮换保留为“已禁用”。选择下一步

  11. 检查部分中,确认您的详细信息,然后选择存储

    您将返回到密钥列表,其中现在包含新密钥。

第2步: 验证您的初始密钥

在将密钥配置为自动轮换之前,应确认在密钥中包含正确的信息,并且可以连接到数据库。在上一教程中,您安装了 MySQLWorkbench 客户端组件。继续使用 MySQLWorkbench 客户端。

您可以使用 AWS CLI 或 Secrets Manager 控制台来检索密钥。将用户名和密码剪切并粘贴到您的 MySQL 数据库客户端。

  1. 打开您的 MySQLWorkbench 并选择 + 以创建新的连接。

  2. 对于 Connection Name (连接名称),请中输入 MyTestUser

  3. 复制并粘贴您的 MySQL 主机名进入 主机名. 将端口保留为 3306

  4. Username (用户名) 中,输入 mytestuser,然后选择 Test Connection (测试连接)

  5. MySQLWorkbench 返回一条消息,表明您已成功连接到数据库。

第3步: 为密钥配置轮换

在验证密钥中的初始凭证后,您可以配置并启动第一次轮换。

  1. 在 Secrets Manager 控制台,选择密钥 MyTestDatabaseUserSecret.

  2. 在“密钥详细信息”页上的轮换配置部分中,选择编辑轮换

  3. 编辑轮换配置页上,选择启用自动轮换

  4. 对于选择轮换间隔,请选择 30 天

  5. 从列表中选择一个 Lambda 函数。

  6. 选择将用于执行轮换的密钥下面,选择使用我之前存储在 AWS Secrets Manager 中的密钥

  7. 在显示的密钥列表中,选择 MyTestDatabaseMasterSecret.

  8. 选择 Save (保存)

第4步: 验证成功旋转

现已轮换了密钥,您可以确认密钥中的新凭证能够连接到数据库。

  1. https://console.amazonaws.cn/secretsmanager/ 打开 Secrets Manager 控制台。

  2. 密钥列表页上,选择您的用户密钥的名称。

  3. 选择检索密钥值并查看您的当前密码。密钥值应该是原始密码,或者是成功轮换创建的新密码。如果仍然看到原始密码,请关闭 Secret value (密钥值) 部分,然后重新打开,直到密钥值成功更改为止。该步骤可能需要几分钟的时间。

  4. 当新密钥出现时,将其复制并粘贴到 MySQLWorkbench MyTestUser连接。

  5. MySQL Workbench返回一条消息,指出您已成功登录到具有新密钥的数据库。

第5步: 清除

由于数据库和密钥可能会在您的 AWS 账单中产生费用,因此,您应该删除在本教程中创建的数据库实例和密钥。

删除密钥

  1. https://console.amazonaws.cn/secretsmanager/ 打开 Secrets Manager 控制台。

  2. 在密钥列表中,选择 MyTestDatabaseSecret 您为此教程创建的密钥。

  3. 选择操作,然后选择删除密钥

  4. 计划密钥删除对话框中,为输入等待期限键入 7,这是允许的最小值。

  5. 选择计划删除

    在经过恢复时段中的天数后,Secrets Manager 将永久删除密钥。

删除数据库实例

  1. 通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在导航窗格中,选择实例

  3. 在可用实例列表中,选择 MyTestDatabaseInstance 您为此教程创建的实例。

  4. 选择实例操作,然后选择删除

  5. Delete DB Instance (删除数据库实例) 页面上的 Options (选项) 部分中,为 Create final snapshot (创建最终快照) 选择 No (否)

  6. 选择将丢失所有数据的确认消息,然后选择删除