0

我正在尝试弄清楚如何加强分配给 AWS ECS 中容器实例的安全组。

  • 我有一个相当简单的 Express.js Web 服务在 ECS 上的服务中运行
  • 我在 ECS 前运行应用程序负载均衡器
  • 我的 Express.js 容器暴露并监听 8080 端口
  • 我正在使用动态端口映射来允许容器实例在同一个端口(8080)上运行多个容器

我发现为了让 ALB 将请求转发到 ECS 集群中运行的容器,我需要分配给容器实例的安全组以允许所有流量。请记住,这些实例(出于我不知道的原因)被分配了公共 IPv4 地址 - 不管我已将集群配置为将实例放置在我的私有子网中的事实 - 所以我对这些实例本质上并不满意完全开放,只是 ALB 可以传递请求,以便它们在 VPC 中。

我了解,通过动态端口映射,我的容器或不在运行它们的底层 Docker 主机上的单个端口上运行。我也明白,请求可能不会从 ALB到达 EC2 实例的单个 IP ,所以在我看来,如果我使用动态端口映射,我无法锁定它,因为没有单点来源或进入 EC2 实例的流量的目的地。我觉得我在这里遗漏了一些东西,但我一生都无法弄清楚如何做到这一点。

我应该如何配置 ECS 或我的 EC2 安全组以允许我只允许从 ALB 访问容器实例,而不允许从 Internet 的其余部分访问?

我试图在没有用不必要的细节淹没问题的情况下包含尽可能多的信息。如果有任何我没有包含的有用的细节,请发表评论,我很乐意提供。

4

1 回答 1

1

1) 没有理由必须在容器实例上拥有公共 IP 地址。只是不要在启动时设置选项,请参阅此页面,特别是步骤“e” http://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_container_instance.html?shortFooter=true

如果实例位于私有子网中,则路由无论如何都不应允许入口...

2) 可以使用安全组锁定安全性。使用“安全组 ID”而不是 IP 地址意味着您不必知道 ALB 的确切地址。有关以这种方式配置 ALB 的说明,请参阅此页面

http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-update-security-groups.html

于 2017-10-05T12:22:19.103 回答