本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 AWS Secrets Manager 设置单用户轮换
在本教程中,您将学习如何为包含数据库凭证的密钥设置单用户轮换。单用户轮换是一种轮换策略,在该策略中,Secrets Manager 将同时在密钥和数据库中更新用户的凭证。有关更多信息,请参阅 轮换策略:单用户。
完成本教程后,我们建议您清理教程中的资源。请勿在生产环境中使用它们。
Secrets Manager 轮换使用 AWS Lambda 函数来更新密钥和数据库。有关使用 Lambda 函数的成本的信息,请参阅 定价。
权限
本教程的先决条件为,您需要对 AWS 账户 的管理权限。在生产环境中,最佳实践是为每个步骤使用不同的角色。例如,具有数据库管理员权限的角色将创建 Amazon RDS 数据库,而具有网络管理员权限的角色将设置 VPC 和安全组。在执行教程步骤时,我们建议您继续使用相同身份。
有关如何在生产环境中设置权限的信息,请参阅 AWS Secrets Manager 的身份验证和访问控制。
先决条件
本教程的先决条件是 为 AWS Secrets Manager 设置交替用户轮换。在第一个教程结束时,请不要清理资源。在该教程之后,您将拥有一个现实环境,其中包含一个 Amazon RDS 数据库和一个内含数据库管理员凭证的 Secrets Manager 密钥。您还有另一个密钥包含数据库用户的凭证,但您在本教程中不使用该密钥。
您还在 MySQL Workbench 中配置了一条连接,可以使用管理员凭证连接到数据库。
步骤 1:创建 Amazon RDS 数据库用户
首先,您需要一个用户,其凭证将被存储在秘密中。要创建用户,请使用存储在密钥中的管理员凭证登录 Amazon RDS 数据库。为简单起见,在本教程中,您将创建具有数据库完全权限的用户。在生产环境中,这并不常见,建议您遵循最低权限原则。
检索管理员密码
在 Amazon RDS 控制台中,导航到您的数据库。
-
在 Configuration(配置)选项卡的 Master Credentials ARN(主凭证 ARN)下,选择 Manage in Secrets Manager(在 Secrets Manager 中管理)。
此时将打开 Secrets Manager 控制台。
在密钥详细信息页面上,选择 Retrieve secret value(检索密钥值)。
密码显示在 Secret value(密钥值)部分中。
创建数据库用户
-
在 MySQL Workbench 中,右键单击连接 SecretsManagerTutorial,然后选择 Edit Connection(编辑连接)。
-
在 Manage Server Connections(管理服务器连接)对话框中,对于 Username(用户名),输入
admin
,然后选择 Close(关闭)。 -
返回 MySQL 工作台,选择连接 SecretsManagerTutorial。
-
输入从密钥中检索到的管理员密码。
-
在 MySQL Workbench 中,在 Query(查询)窗口中,输入以下命令(包括强密码),然后选择 Execute(执行)。轮换函数使用 SELECT 测试更新的密钥,因此
dbuser
必须至少具有该权限。CREATE USER 'dbuser'@'%' IDENTIFIED BY '
EXAMPLE-PASSWORD
'; GRANT SELECT ON myDB . * TO 'dbuser'@'%';在 Output(输出)窗口中,您会看到这些命令执行成功。
步骤 2:为数据库用户凭证创建密钥
接下来,您将创建一个密钥用于存储您刚创建的用户的凭证,并且将启用自动轮换(包括立即轮换)。Secrets Manager 会轮换密钥,这意味着密码是以编程方式生成的,没有人看到过这个新密码。立即开始轮换也可以帮助您确定轮换设置是否正确。
在 https://console.aws.amazon.com/secretsmanager/
打开 Secrets Manager 控制台。 -
选择 存储新密钥。
-
在 Choose secret type(选择密钥类型)页面上,执行以下操作:
-
对于 Secret type(秘密类型),选择 Credentials for Amazon RDS database(Amazon RDS 数据库凭证)。
-
对于 Credentials(凭证),输入用户名
dbuser
,以及您为使用 MySQL Workbench 创建的数据库用户输入的密码。 -
对于 Database(数据库),选择 secretsmanagertutorialdb。
选择下一步。
-
-
在 Configure secret(配置密钥)页面上,对于 Secret name(密钥名称),输入
SecretsManagerTutorialDbuser
,然后选择 Next(下一步)。 -
在 Configure rotation(配置轮换)页面上,执行以下操作:
-
启用 Automatic rotation(自动轮换)。
-
对于 Rotation schedule(轮换计划),设置计划 Days(天数):
2
天,以及 Duration(持续时间):2h
。使 Rotate immediately(立即轮换)处于已选择状态。 -
对于 Rotation function(轮换函数),选择 Create a rotation function(创建轮换函数),然后对于函数名称,输入
tutorial-single-user-rotation
。 -
对于轮换策略,选择单用户。
-
选择下一步。
-
-
在 Review(检查)页面上,选择 Store(存储)。
Secrets Manager 会返回到密钥详细信息页面。您可以在该页面顶部查看轮换配置状态。Secrets Manager 使用 CloudFormation 创建资源,如 Lambda 轮换函数和运行 Lambda 函数的执行角色。当 CloudFormation 完成后,横幅将更改为 Secret scheduled for rotation(秘密已计划轮换)。第一次轮换已完成。
步骤 3:测试轮换的密码
在第一次密钥轮换(可能需要几秒钟)之后,您可以检查秘密是否仍包含有效凭证。秘密中的密码已从原始凭证发生更改。
从秘密中检索新密码
打开 Secrets Manager 控制台,网址为 https://console.aws.amazon.com/secretsmanager/
。 -
选择 Secrets(秘密),然后选择秘密
SecretsManagerTutorialDbuser
。 -
在 Secret details(秘密详细信息)页面上,向下滚动并选择 Retrieve secret value(检索秘密值)。
-
在 Key/value(键/值)表中,为
password
复制 Secret value(秘密值)。
测试凭证
-
在 MySQL Workbench 中,右键单击连接 SecretsManagerTutorial,然后选择 Edit Connection(编辑连接)。
-
在 Manage Server Connections(管理服务器连接)对话框中,对于 Username(用户名),输入
dbuser
,然后选择 Close(关闭)。 -
返回 MySQL 工作台,选择连接 SecretsManagerTutorial。
-
在 Open SSH Connection(打开 SSH 连接)对话框中,对于 Password(密码),粘贴您从秘密中检索到的密码,然后选择 OK(确定)。
如果凭证有效,则 MySQL Workbench 将打开至数据库的设计页面。
步骤 4:清理资源
为避免潜在费用,请删除您在本教程中创建的秘密。有关说明,请参阅 删除 AWS Secrets Manager 密钥。
要清理前面教程中创建的资源,请参阅 步骤 4:清理资源。
后续步骤
-
了解如何在您的应用程序中检索秘密。请参阅 从 AWS Secrets Manager 获取密钥。
-
了解其他轮换计划。请参阅 轮换计划。