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

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

教程: 为 AWS 数据库

在本教程中,您为 AWS 数据库创建一个密钥,并将该密钥配置为按计划轮换。您手动触发一次轮换,然后确认密钥的新版本能否继续提供访问权限。

配置测试 MySQL 数据库

在该步骤中,在 Amazon Relational Database Service (Amazon RDS) 中创建一个测试数据库。在本教程中,测试数据库运行 MySQL.

第2步: 创建您的密钥

接下来,使用 Secrets Manager 以创建您的密钥,并使用您的的初始用户名和密码填充密钥 MySQL 数据库。使用返回的凭证登录到数据库以测试密钥。

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

在步骤 3 中,使用新密钥测试凭证,并确保您可以使用这些凭证连接到数据库。

第4步: 配置密钥的旋转

在步骤 4 中,为密钥启用轮换并执行初始轮换。

第5步: 验证成功旋转

在该步骤中,在初始轮换完成后,重复验证步骤以确认可使用在轮换期间生成的新凭证继续访问数据库。

第6步: 清除

在最后一步中,删除 Amazon RDS 数据库实例和密钥,以免产生任何不必要的成本。

Prerequisites

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

教程使用 MySQL 客户工具, MySQLWorkbench:与数据库交互、配置用户以及检查状态。本教程在以下步骤中的相应位置包含安装说明。

在本教程中配置的数据库允许通过端口 3306 访问公有 Internet,这也是为了简化本教程的设置。要完成本教程,您必须能够访问 MySQL 数据库 MySQL 客户工具, MySQLWorkbench。我们建议您遵循 Lambda 和 Amazon EC2 用于安全配置生产服务器的VPC文档。

重要

为了使轮换正常工作,您的网络环境必须允许 Lambda 轮换函数与数据库和 Secrets Manager 服务进行通信。由于本教程为数据库配置了公有 Internet 访问权限,因此,Lambda 自动将轮换函数配置为通过公有 IP 地址访问数据库。如果阻止通过公有 Internet 访问数据库实例,则必须将 Lambda 函数配置为在与数据库实例相同的 VPC 中运行。然后,必须为您的 VPC 配置私有 Secrets Manager 终端节点为 VPC 配置使用 NAT 网关访问公共 Internet 的权限,Lambda 轮换函数才能访问公共 Secrets Manager 终端节点。

所需权限

要成功运行本教程,您必须具有与 SecretsManagerReadWrite AWS 管理策略. 您还必须有权创建 IAM 角色,并将权限策略附加到该角色。您可以授予 IAMFullAccess AWS 管理策略,或明确指派 iam:CreateRoleiam:AttachRolePolicy.

警告

iam:CreateRoleiam:AttachRolePolicy 允许用户为自己授予任何权限,因此,请仅为账户中的受信任用户授予这些策略。

配置测试 MySQL 数据库

  1. 对于本教程的本部分,请登录您的帐户并配置 MySQL 数据库 Amazon RDS.

  2. 执行以下步骤:

    1. 登录 AWS 管理控制台,并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

    2. Dashboard (控制面板) 中,向下滚动到 Create database (创建数据库) 部分,然后选择 Create database (创建数据库)

    3. 请参阅 Amazon RDS 教程, 创建 MySQL 数据库实例,了解有关设置RDS数据库的最新信息。

      创建数据库时,请使用以下信息:

      • 数据库实例标识符: MyTestDatabaseInstance.

      • 主用户名: adminuser.

      • 主密码: 键入安全初始密码,然后在 确认密码盒。请务必记住该密码。 在步骤 2 中创建密钥时,您需要使用该密码。

      注意

      数据库创建可能需要长达 20 分钟才能使数据库实例变得可用。

    4. RDS > Databases (数据库) 下的可用数据库列表中,选择您的数据库,然后选择 Modify (修改)

    5. 网络和安全 部分,设置 公共可访问性Yes.

    6. Backup (备份) 部分中,将 Backup retention period (备份保留期) 设置为 0 days (0 天) 以禁用备份。

    7. 将其他设置保留为默认值。

    8. 选择 Continue (继续)

    9. 修改安排 部分中,选择 Apply immediately 然后 修改数据库实例.

    10. 总结 分节显示 可用 低于 信息,刷新页面,然后向下滚动至 连接和安全 第节。

    11. 安全 选择 默认 低于 VPC安全组. Amazon EC2 的控制台将打开并显示已配置的 Security Groups (安全组)

    12. 选择 Inbound rules (入站规则),然后选择 Edit Inbound Rules (编辑入站规则)

    13. Source type (源类型) 下,选择 Anywhere (任意位置),然后选择 Save rules (保存规则)

注意

要正确配置本教程,请至少使用这些设置。如果您需要使用私有 VPC,则必须将 Lambda 函数配置为在该 VPC 中运行。接下来,必须为您的 VPC 配置私有 Secrets Manager 终端节点或为 VPC 配置使用 NAT 网关访问公有 Internet 的权限。这些配置允许 Lambda 轮换函数访问公共 Secrets Manager 终端节点。

第2步: 创建您的密钥

在该步骤中,您在 Secrets Manager 中创建一个密钥,并在密钥中填入您的测试详细信息,包括数据库和主用户的凭证。

创建密钥

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

  2. 确保将控制台设置为与创建时相同的区域 Amazon RDS MySQL 数据库。

  3. 选择存储新密钥

  4. Store a new secret (存储新密钥) 页面上的 Select secret type (选择密钥类型) 部分中,选择 Credentials for RDS database (RDS 数据库凭证)

  5. 对于用户名,请键入 adminuser 以匹配您以前在步骤 1.3 中提供的主用户的名称。

  6. 对于 Password (密码),请键入您在创建数据库时为 adminuser 提供的相同密码。

  7. 对于 选择加密密钥,将其设置为 DefaultEncryptionKey。 AWS 如果您使用自定义主密钥(CMK)而不是默认CMK,则会向您的帐户收取费用。

  8. 对于 选择此密钥将访问的RDS数据库,然后选择实例 MyTestDatabaseInstance 在第1步中创建的。选择下一步

  9. 秘密名称和描述 部分,用于 秘密名称,类型 MyTestDatabaseMasterSecret。选择 下一步.

  10. 配置自动轮换部分中,暂时禁用轮换。选择下一步

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

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

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

在将密钥配置为自动轮换之前,应确认在密钥中包含正确的信息,并且可以连接到数据库。本教程介绍如何安装基于GUI的应用程序, MySQL 工作台 以测试连接。下载适合您所用操作系统的客户端。

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

测试数据库连接

  1. 在安装 MySQLWorkBench 客户机软件,打开 MySQLWorkbench 客户,以显示 欢迎来到 MySQLWorkbench 接口。

  2. MySQL 连接,选择 + 图标以显示 设置新连接.

  3. 对于“Connection Name (连接名称)”,输入 MyTestDatabaseInstance

  4. 对于 Hostname (主机名),输入数据库的终端节点,例如 MyTestDatabase.hostname.region.rds.amazonaws.com

    您可以在数据库的详细信息页面上找到终端节点。在 Amazon RDS 控制台,选择 数据库 部分 RDS>数据库> MyTestDatabaseInstance.

  5. Port (端口) 保留为默认值 3306。

  6. Username (用户名) 字段中,键入您为数据库创建的用户名 adminuser

  7. 选择 Test Connection 并在 密码 字段。

  8. 如果配置正确, MySQLWorkbench 显示成功连接消息。

  9. 选择 OK.

    故障排除技巧

    如果 MySQLWorkbench 客户端无法连接到数据库,您应该使用数据库检查附加到VPC的安全组。安全组中的默认规则允许所有出站流量,但这些规则阻止所有入站流量,您定义规则以显式允许的流量除外。如果在公有 Internet 上运行计算机,您的安全组必须在配置了数据库通信的 TCP 端口上允许来自 Internet 的入站流量,通常是端口 3306。如果配置了 MySQL 要使用其他TCP端口,请确保更新安全规则以匹配。

第4步: 配置密钥的旋转

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

配置密钥轮换

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

  2. Secret details (密钥详细信息) 页上的 Rotation configuration (轮换配置) 部分中,选择 Edit rotation (编辑轮换)

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

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

  5. Select the secret will be used to perform the rotation (选择将用于执行轮换的密钥) 下,选择 Use this secret (使用此密钥)

  6. 选择 Save (保存)。Secrets Manager 开始为密钥配置轮换,包括创建 Lambda 轮换函数并附加允许 Secrets Manager 调用该函数的角色。

  7. 留在控制台页面上,使用 正在配置旋转 消息,直到消息更改为 您的秘密 MyTestDatabaseMasterSecret 已成功存储,已启用密钥旋转。

第5步: 验证成功旋转

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

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

  2. 选择您的密钥 MyTestDatabaseMasterSecret.

  3. 选择 Retrieve secret value (检索密钥值)

  4. 找到 password (密码) 字段。

    如果成功轮换密钥,则密码应更改为类似于下面的内容:E4%I)rj)vmpRg)U}++=}GHAnNDD1v0cJ,而不是显示原始密钥。

  5. 要访问您的数据库,请打开 MySQLWorkbench 并选择 MyTestDatabase.

  6. 当提示输入密码时,从 Secrets Manager 中复制密码并粘贴到 Password (密码) 字段中。选择 OK (确定)

    您可以使用新密码成功访问数据库,并验证轮换密钥是否有效。

第6步: 清除

重要

如果您还打算执行教程: 使用主密钥旋转用户密钥教程,请在完成该教程后执行这些步骤。

由于数据库和密钥可能会在您的 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. 选择将丢失所有数据的确认消息,然后选择删除