限制对 AWS ECS Fargate 服务的公共访问

限制对 AWS ECS Fargate 服务的公共访问
  • 我在 AWS ECS 上使用 Fargate 部署了一项服务。
  • 此服务使用网络负载均衡器 (NLB) 允许弹性 IP 与服务关联。
  • 这不是 http 服务,并且使用端口 5060(SIP),因此选择 NLB。

我不太了解健康检查方面的一些内容。如果我将与服务相关的安全组中的访问限制为流量端口的几个 /32(单个 IP),则该服务被标记为不健康。如果我允许全世界访问流量端口,则该服务被标记为健康。如果我只允许访问包括 NLB 在内的内部 CIDR 块,则该服务被标记为健康 - 但这也允许全世界访问该端口。

我尝试让健康检查使用容器上的另一个端口,但这并不理想,而且我没有成功运行。虽然我很乐意得到一个详细说明如何根据我的 Fargate/NLB/Elastic IP 要求正确设置的答案,但我宁愿让流量端口只是健康检查端口,但我需要了解如何拒绝全世界访问该端口。

答案1

您必须弄清楚健康检查来自哪里,并将这些 IP 列入白名单。由于它是一个 Fargate 容器,您可能没有 SSH 访问权限,因此您可以尝试以下方法之一:

  1. SIP 服务是否记录传入连接? 如果确实如此,并且日志被转发到例如CloudWatch 日志(他们应该是!)你可以去那里看看。
  2. 使用VPC 流日志找出哪些 IP 连接到您的服务。最好知道弹性网络编号(弹性网络接口 ID)- 它显示在 Fargate 任务详细信息中。

您还提到,当您将内部 VPC IP 范围列入白名单时,服务将向全世界开放。这听起来不对 - 在这种情况下,您可以发布安全组设置的屏幕截图吗?

希望有帮助:)

相关内容