hlo*_*rey 4 amazon-web-services amazon-rds
我正在尝试为多层Web应用程序创建一个实际的网络设置。我已经在AWS中用1个公共子网和2个私有子网创建了一个新的VPC。然后,我在私有子网中创建了一个Postgres实例,并将其设置为不可公开访问。这在数据库周围增加了一层额外的安全性,但是如何从本地IP访问数据库呢?
我创建了一个安全组,并在创建期间将我的IP分配给了入站规则,并将其分配给了数据库实例:
但是我仍然无法连接到它吗?我是否需要创建一个VPN并通过VPN连接到我的VPC,然后再连接到数据库实例?在建议的体系结构内,如何连接到数据库?
我要实现的架构是允许我创建Lambda函数,这些函数通过API网关与DB进行通信并将数据提供给Web前端。因此,我希望通过私有子网保护数据库。但是我也希望能够从本地笔记本电脑直接连接到数据库。
目前-RDS实例正在VPC中运行,但是我不知道如何连接到它。我需要设置一个Internet网关/ VPN / EC2实例并跳转到数据库吗?
通过将Amazon RDS数据库放置在专用子网中,您已经实现了出色的安全性。这意味着无法从Internet访问它,从而阻止了大多数潜在的安全威胁。
但是,这也意味着您无法从Internet连接到它。
实现目标的最常见方法是在公共子网中启动Amazon EC2实例,并将其用作堡垒或跳箱:
由于您只希望连接到数据库(而不是登录到另一台服务器),因此最好的方法是将SSH与端口转发一起使用。
在Windows中,可以使用SSH客户端完成此操作-例如,如果您使用的是PuTTY,则可以配置隧道。请参阅:如何在PuTTY上配置SSH隧道
对于Mac / Linux,请使用以下命令:
ssh -i YOUR-KEYPAIR.pem -L 5555:RDS-ENDPOINT:5432 ec2-user@YOUR-BASTION-SERVER
Run Code Online (Sandbox Code Playgroud)
然后,将便携式计算机上的SQL客户端指向: localhost:5555
5555可以是任何号码,你的愿望。它只是您自己计算机上的“本地端口”,将用于将流量转发到远程计算机。RDS-ENDPOINT是你的RDS数据库的端点作为RDS控制台提供。它将类似于:db.cnrffgvaxtw8.us-west-2.rds.amazonaws.comBASTION-SERVER 是用于连接的跳转框的IP地址或DNS名称然后,localhost:5555从您的SQL客户端发送的任何流量都将通过SSH连接自动发送到堡垒/跳箱,然后该堡垒/跳箱将其转发到RDS数据库上的端口5432。流量将通过SSH连接进行加密,并且连接的建立需要SSH密钥对。
| 归档时间: |
|
| 查看次数: |
2125 次 |
| 最近记录: |