使用 ALB 后面的动态端口映射保护 Amazon ECS 集群实例
Securing Amazon ECS cluster instances with dynamic port mapping behind an ALB
我正在尝试研究如何加强我已分配给 AWS ECS 中的容器实例的安全组。
- 我有一个相当简单的 Express.js Web 服务 运行 在 ECS 上的服务中
- 我运行在 ECS 前面安装应用程序负载均衡器
- 我的 Express.js 容器公开并侦听端口 8080
- 我正在使用 动态端口映射 以允许容器实例 运行 同一端口 (8080) 上的多个容器
我发现为了让 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 的说明,请参阅此页面
我正在尝试研究如何加强我已分配给 AWS ECS 中的容器实例的安全组。
- 我有一个相当简单的 Express.js Web 服务 运行 在 ECS 上的服务中
- 我运行在 ECS 前面安装应用程序负载均衡器
- 我的 Express.js 容器公开并侦听端口 8080
- 我正在使用 动态端口映射 以允许容器实例 运行 同一端口 (8080) 上的多个容器
我发现为了让 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 的说明,请参阅此页面