本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程: 使用主密钥旋转用户密钥
本教程基于您在第一个教程中完成的任务: 教程: 为 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 具有单个管理员的数据库 大师 用户。您还具有一个密钥,您可以用于检索主用户的最新凭证。在该步骤中,您创建一个新的受限用户,并将凭证存储在密钥中。例如,从数据库中查询信息的移动应用程序可能会使用该密钥。用户不需要任何其他权限。
-
打开您的 MySQLWorkbench 并选择您的 MyTestDatabaseInstance 连接并登录数据库。
-
在 Query 1 (查询 1) 界面中,输入
CREATE USER mytestuser IDENTIFIED BY '
。userpassword
'; -
使用
图标。
查看 Action Output (操作输出) 以了解查询是否成功完成。
-
从 Query 1 (查询 1) 中删除上一个查询。
-
在中输入以下文本 查询1:
GRANT SELECT on *.* TO mytestuser
,并运行查询。 -
查看 Action Output (操作输出) 以了解查询是否成功完成。
使用控制台创建新密钥
-
从 https://console.amazonaws.cn/secretsmanager/
打开 Secrets Manager 控制台。 -
在包含您的账户中的密钥列表的页面上,选择存储新密钥。
-
在 Create Secret (创建密钥) 页上的 Select secret type (选择密钥类型) 部分中,选择 Credentials for RDS database (RDS 数据库凭证)。
-
对于用户名,请键入
mytestuser
以匹配您在步骤 1b 中创建的用户的名称。 -
对于密码,请键入您在步骤 1b 中为 mytestuser 提供的相同密码。
-
对于 选择加密密钥,将其设置为 DefaultEncryptionKey.
-
对于 选择此密钥将访问的RDS数据库,选择实例 MyTestDatabaseInstance 您在上一个教程中创建的。
-
选择下一步。
-
在 Secret name and description (密钥名称和描述) 部分中,为 Secret name (密钥名称) 键入
MyTestDatabaseUserSecret
。 -
在配置自动轮换部分中,暂时将轮换保留为“已禁用”。选择下一步。
-
在检查部分中,确认您的详细信息,然后选择存储。
您将返回到密钥列表,其中现在包含新密钥。
第2步: 验证您的初始密钥
在将密钥配置为自动轮换之前,应确认在密钥中包含正确的信息,并且可以连接到数据库。在上一教程中,您安装了 MySQLWorkbench 客户端组件。继续使用 MySQLWorkbench 客户端。
您可以使用 AWS CLI 或 Secrets Manager 控制台来检索密钥。将用户名和密码剪切并粘贴到您的 MySQL 数据库客户端。
-
打开您的 MySQLWorkbench 并选择 + 以创建新的连接。
-
对于 Connection Name (连接名称),请中输入
MyTestUser
。 -
复制并粘贴您的 MySQL 主机名进入 主机名. 将端口保留为
3306
-
在 Username (用户名) 中,输入
mytestuser
,然后选择 Test Connection (测试连接)。 -
MySQLWorkbench 返回一条消息,表明您已成功连接到数据库。
第3步: 为密钥配置轮换
在验证密钥中的初始凭证后,您可以配置并启动第一次轮换。
-
在 Secrets Manager 控制台,选择密钥 MyTestDatabaseUserSecret.
-
在“密钥详细信息”页上的轮换配置部分中,选择编辑轮换。
-
在编辑轮换配置页上,选择启用自动轮换。
-
对于选择轮换间隔,请选择 30 天。
-
从列表中选择一个 Lambda 函数。
-
在选择将用于执行轮换的密钥下面,选择使用我之前存储在 AWS Secrets Manager 中的密钥。
-
在显示的密钥列表中,选择 MyTestDatabaseMasterSecret.
-
选择 Save (保存)。
第4步: 验证成功旋转
现已轮换了密钥,您可以确认密钥中的新凭证能够连接到数据库。
-
从 https://console.amazonaws.cn/secretsmanager/
打开 Secrets Manager 控制台。 -
在密钥列表页上,选择您的用户密钥的名称。
-
选择检索密钥值并查看您的当前密码。密钥值应该是原始密码,或者是成功轮换创建的新密码。如果仍然看到原始密码,请关闭 Secret value (密钥值) 部分,然后重新打开,直到密钥值成功更改为止。该步骤可能需要几分钟的时间。
-
当新密钥出现时,将其复制并粘贴到 MySQLWorkbench MyTestUser连接。
-
MySQL Workbench返回一条消息,指出您已成功登录到具有新密钥的数据库。
第5步: 清除
由于数据库和密钥可能会在您的 AWS 账单中产生费用,因此,您应该删除在本教程中创建的数据库实例和密钥。
删除密钥
-
从 https://console.amazonaws.cn/secretsmanager/
打开 Secrets Manager 控制台。 -
在密钥列表中,选择 MyTestDatabaseSecret 您为此教程创建的密钥。
-
选择操作,然后选择删除密钥。
-
在计划密钥删除对话框中,为输入等待期限键入
7
,这是允许的最小值。 -
选择计划删除。
在经过恢复时段中的天数后,Secrets Manager 将永久删除密钥。
删除数据库实例
-
通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/
。 -
在导航窗格中,选择实例。
-
在可用实例列表中,选择 MyTestDatabaseInstance 您为此教程创建的实例。
-
选择实例操作,然后选择删除。
-
在 Delete DB Instance (删除数据库实例) 页面上的 Options (选项) 部分中,为 Create final snapshot (创建最终快照) 选择 No (否)。
-
选择将丢失所有数据的确认消息,然后选择删除。