从可公开访问的 rds 数据库转移到使用堡垒 ec2 实例连接到它

moving from publicly accessible rds database to using bastion ec2 instance to connect to it

如果有人在 aws 上有一个 public 可访问的 rds 数据库,并且想改用堡垒 ec2 实例来访问和执行数据库功能(互联网上的任何人都应该能够使用该应用程序并执行数据库功能与应用程序提供的功能一致),应该如何执行这一转变?我曾尝试在互联网上搜索,但我经常会得到大量的信息,其中的术语并不完全容易理解。如有任何帮助,我们将不胜感激。

同样,我希望一般 public 能够使用和访问应用程序提供的数据库功能,但不能让他们直接访问数据库。

您将需要为此创建私有子网,并仅使用私有子网相应地更新 DBsubnet 组。此外,在数据库安全组中添加堡垒和应用程序实例安全组作为数据库端口的源。

如果您使用的是 mysql 引擎,则允许目标实例安全组 ID 为 3306。

典型的 3 层架构是:

  • 负载均衡器 跨 public 个子网,它将流量发送到...
  • 私有子网中的多个 Amazon EC2 实例,最好通过 Amazon EC2 Auto Scaling 进行配置,它可以根据需要进行扩展,也可以替换所有正在通信的失败实例。 ..
  • 私有子网中的数据库,最好是Multi-AZ模式,这意味着数据库或可用区发生故障不会丢失任何数据

但是,您的应用程序可能不需要这么多基础设施。对于低使用率的应用程序,您可以只使用:

  • Amazon EC2 实例作为您的 应用程序服务器 运行 public 子网
  • 私有子网中的 Amazon RDS 数据库,安全组配置为允许从 Amazon EC2 实例访问

用户将连接到您的应用程序服务器。应用程序服务器将连接到数据库。用户将无法直接访问数据库。

但是, 可能需要访问数据库 以进行管理和测试。由于数据库位于私有子网中,因此无法从 Internet 访问它。要为 you 提供访问权限,您可以在 public 子网中启动另一个 Amazon EC2 实例,并将安全组配置为允许 you访问实例。此实例 "sticks out" 在 Internet 上,因此称为 堡垒服务器(以 突出 的城墙部分命名允许弓箭手向爬上种姓墙的入侵者开火。

您可以使用端口转发 连接到堡垒服务器,然后连接到数据库。例如:

ssh -i key.pem ec2-user@BASTION-IP -L 3306:DATABASE-DNS-NAME:3306

这会将 SSH 连接配置为转发 localhost:3306 到指定数据库服务器上的端口 3306。这允许您的本地计算机通过 Bastion 服务器与数据库对话。