使用ALB后面的动态端口映射保护Amazon ECS群集实例

时间:2017-10-05 09:54:07

标签: amazon-web-services amazon-ec2 amazon-ecs aws-security-group amazon-alb

我正在努力弄清楚如何收紧我在AWS ECS中分配给容器实例的安全组。

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

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

我理解通过动态端口映射,我的容器或者不运行在运行它们的底层Docker主机上的一个端口上。我也明白,没有单个IP请求可以从ALB 到达EC2实例,所以在我看来如果我使用动态端口我无法将其锁定映射,因为进入EC2实例的流量没有单一的起点或目的地。我觉得我在这里错过了一些东西,但我不能为我的生活找到解决方法。

如何配置ECS或我的EC2安全组以允许我仅允许从ALB访问容器实例而不允许从其他互联网访问?

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

1 个答案:

答案 0 :(得分:1)

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

如果实例位于私有子网中,那么路由不应该允许ingres ...

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

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