我是亚马逊网络服务的新手,我正在尝试使用公共和私有子网实施虚拟私有云。私有子网将托管我的数据库服务器,公有子网将包含我的应用程序的Web服务器。我按照亚马逊自己的分步教程来实现这一目标:
Scenario 2: VPC with Public and Private Subnets
我已按照教程中的说明配置了所有VPC安全组,并成功设法让我的Web服务器与我的数据库服务器通信。我还想从本地机器上的MSSQL Management Studio远程连接到数据库,这样我就可以创建/删除模式,并且通常可以看到数据库中的内容。但是,我根本无法连接到数据库服务器。
问题的一部分是我不确定我的意思是连接到什么。在完成本教程之前,我创建了一个简单的数据库并使用其端点作为URL,我可以从本地计算机远程连接到它。现在,由于数据库服务器位于私有子网上,并且只能通过NAT实例与外界通信,这是否意味着我应该使用NAT的弹性IP作为数据库URL并为NAT的安全组添加额外的规则?我对网络的了解有些欠缺,所以我不太确定,教程也没有帮助。
我的安全组包含以下条目:
NAT实例安全组入站:
Port | Source
22 | my external ip
80 | 10.0.1.0/24 (private subnet)
443 | 10.0.1.0/24 (private subnet)
1433 | my external ip
NAT实例安全组出站:
Port | Destination
80 | 0.0.0.0/0
443 | 0.0.0.0/0
1433 | 0.0.0.0/0
数据库安全组入站:
Port | Source
1433 | sg-d6ec33b9 (web servers security group)
数据库安全组出站:
Port | Destination
80 | 0.0.0.0/0
443 | 0.0.0.0/0
Webservers安全组入站:
Port | Source
22 | 0.0.0.0/0
80 | 0.0.0.0/0
443 | 0.0.0.0/0
8080 | 0.0.0.0/0
Webservers安全组出站:
Port | Destination
80 | 0.0.0.0/0
443 | 0.0.0.0/0
1433 | sg-b5ec33da (database security group id)
主路由表与私有子网(10.0.1.0/24)相关联,并具有以下路由:
Destination | Target
10.0.0.0/16 | local
0.0.0.0/0 | i-cf8605ad (NAT instance id)
自定义路由表与公有子网(10.0.0.0/24)相关联,并具有以下路由:
Destination | Target
10.0.0.0/16 | local
0.0.0.0/0 | igw-a4ed3aca (internet gateway id)
因此,在这种设置下,我需要做些什么才能获得对私有子网上的数据库服务器的外部访问权限,并受到NAT实例的保护?我是否需要在安全组中添加/更改规则?
提前致谢。
答案 0 :(得分:3)
您的问题比安全组更改要大一些。主要问题是您的私有 vpc是私有的,因为“无法访问互联网”。
您可以从外部连接几个选项:
使用堡垒机作为中间跳(在公共网络上)并添加相关的SG规则以将该机器跳转到您宝贵的数据库中。您的用户需要连接到该计算机,然后在该计算机上运行客户端工具以连接到数据库或设置到您的数据库的SSH隧道(这样您的办公室计算机就可以连接)。就用户体验和安全性而言,这不是一个很好的解决方案(堡垒成为一个非常大的安全风险),但设置起来很简单。 (注意:既然你是MS老兄,那么请为RDP切换SSH [并取消隧道事物])
设置VPN - 带上一把大枪射击苍蝇。设置VPN(使用AWS VPN终端,或设置OpenVPN或类似的东西)。定义路由,SG规则,密钥客户端并在此处更新,如果您设法在合理的努力下配置它。我不会选择完整的站点到站点VPN(到您的办公室网络),因为您不希望办公室中运行的每个恶意软件都到达您的“私人”数据中心。
从办公室为您的数据库实例创建一个小直通。配料: 从办公室IP到专用网络的自定义路由,Proper SG规则允许办公室IP到DB SG,弹性IP使实例可以访问互联网。
您可以使用Dome9的访问租约来改善解决方案1,3安全性。这将允许您限制对堡垒/ passthrough的访问,并根据需要为授权用户启用它们(免责声明 - 我是一个自豪的Dome9'er)
享受