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

Securing Amazon ECS cluster instances with dynamic port mapping behind an ALB

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

我发现为了让 ALB 将请求转发到 ECS 集群中的容器 运行ning,我需要分配给容器实例的安全组允许 all交通。请记住,这些实例(出于我不知道的原因)被分配了 public IPv4 地址 - 不管我已经配置集群以将实例放置在我的私有子网中 - 所以我不舒服这些实例基本上是完全开放的,只需要 ALB 就可以将请求传递给 VPC。

我了解使用动态端口映射,我的容器是否 运行 连接在底层 Docker 主机上的一个端口上,即 运行 连接它们。我也明白,没有一个 IP 可以让请求从 ALB 到达 EC2 实例 ,所以在我看来我无法锁定它 如果我我正在使用动态端口映射,因为进入 EC2 实例的流量没有单一的起点或终点。我觉得我在这里遗漏了一些东西,但我无法终生想出如何做到这一点。

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

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

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

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

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

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