如何限制对 ALB 的访问,使其仅从 AWS 中的 Ec2 机器读取流量?

How to restrict access to ALB so that it reads traffic only from a Ec2 machine in AWS?

我在非默认 VPC 中有以下架构。

Route53 -> ALB(web server) - > Ec2 (web servers) - > ALB(application server) - > Ec2 (application server) - > RDS.

我希望我的应用服务器 ALB 只读取来自 Ec2 Web 服务器的流量。 我尝试在 ALB 的安全性中添加一条规则,并将源作为 Ec2 Web 服务器的安全组。

由于某种原因,它不起作用。但是当我添加 0.0.0.0/0 作为规则的来源时它正在工作。

我觉得我在这里遗漏了一些东西。 谁能帮我解决这个问题?

由于您的 ALB(application server) 面向互联网,因此只能通过 public IP 访问它。这意味着您的 Ec2 (web servers) 正在使用互联网访问 ALB(application server):

Route53 -> ALB(web server) - > Ec2 (web servers) - > INTERNET -> ALB(application server) - > Ec2 (application server) - > RDS

在这种情况下,您的安全组 (SG) 只能使用 0.0.0.0/0 规则,不能通过引用网络服务器的 SG。 SG 引用仅在流量为 VPC 内而不是来自 Internet 时才有效。

在您的设置中,您的 ALB(application server) 应该是 私有子网 中的内部 ALB,而不是 public 子网。由于您的设置遵循 三层架构 ,请查看下面的一些示例设计。请注意,在所有这些中,第二个 ALB 是内部的,应用程序服务器位于私有子网中。这允许以您想要的方式使用 SG。