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

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

教程:将用户密钥轮换为主密钥

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

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

步骤 1:创建新的数据库用户和用户密钥

首先,您在 Amazon RDS MySQL 数据库上创建一个具有有限权限的新用户,并将这些凭证存储在新密钥中。

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

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

步骤 3:为您的密钥配置轮换

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

步骤 4:确认成功轮换

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

第 5 步:清除

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

先决条件

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

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

    • 在名为 MyTestDatabaseInstance 的实例中运行的名为 MyTestDatabase 的 Amazon RDS MySQL 数据库。

    • 具有管理权限的名为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. Query 1 (查询 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. 选择 Next

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

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

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

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

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

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

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

  1. 打开 MySQLWorkbench,选择 + 以创建新连接。

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

  3. 复制您的 MySQL 主机名并粘贴到 Hostname (主机名) 中。将端口保留为 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. 选择保存

步骤 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. 在导航窗格中,选择 Instances

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

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

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

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