我正在设置一个 API 端点,只希望我的 VPC 内的其他应用程序可以访问它。
该应用程序位于 Elastic Beanstalk 上,看来我可以将负载均衡器设置为内部或公共。AWS 给出了以下解释:
Make your load balancer internal if your application serves requests only from connected VPCs. Public load balancers serve requests from the Internet.
我计划将负载均衡器/应用程序公开,并仅设置入站规则来限制来自 VPC 内其他应用程序的流量。
选择此选项与将负载均衡器设为公共并将安全组设置为仅允许来自我的 VPC 的入站请求相比有什么区别?这实际上不是一样吗?
答案1
这并不等同。
当您将负载均衡器设置为内部时,负载均衡器网络接口将仅根据您放置它的可用区域和子网接收私有 IP 地址。只有使用可路由到负载均衡器 IP 的内部 IP 地址的系统才能够访问负载均衡器。这意味着客户端需要位于同一 VPC 中或通过 VPN、Direct Connect 等方式连接。
将负载均衡器设置为公共时,负载均衡器将根据您放置它的可用区域和子网,在外部接口上接收公共 IP 地址,在内部接口上接收私有 IP 地址。因此,传入负载均衡器的请求将通过公共互联网,使用公共 IP 地址 - 即使它来自与负载均衡器位于同一可用区域的客户端。这也意味着负载均衡器和客户端系统都需要访问公共互联网。如果它们位于 AWS,则意味着必须将它们放置在配置为公共并具有互联网网关的子网中。最后,如果您想根据安全组过滤访问权限,则必须根据客户端系统的公共 IP 地址对其进行过滤。
在内部方面(即负载均衡器和服务器之间),没有任何变化。服务器/服务将仅看到来自负载均衡器内部 IP 地址的连接。
因此,更直接地说,最大的区别在于客户端与内部负载均衡器之间的连接将是私有的并保留在您的 VPC 内,或者客户端与公共负载均衡器之间的连接将是公开的并遍历公共互联网,即使这意味着它位于 AWS 数据中心内的某个地方。这将直接影响您的安全组,无论它们使用私有 IP 地址还是公共 IP 地址。