【问题标题】:AWS ECS Network ACL requirementsAWS ECS 网络 ACL 要求
【发布时间】:2021-07-09 09:55:40
【问题描述】:

我目前在 AWS 中有如下设置:

图片来源来自task networking in aws fargate

我正在使用 AWS ECR 来存储我的 docker 映像,并且在我的任务定义中,作为容器映像,我正在使用提供的存储库 URI。一切都在同一个区域,它们工作得很好。

但是,我想通过仅将特定端口列入白名单来加强 AWS 的安全性。从安全组的角度来看,我已根据需要对其进行了更新,并且一切仍在按预期工作。但是对于网络 ACL,我在 Fargate 任务方面遇到了一些问题。在公共子网的 ACL 部分中,对于入站规则,我希望只允许从 Internet (0.0.0.0/0) 访问 HTTPS 和 HTTP。这样做会导致我的 fargate 任务出现这个问题:ResourceInitializationError: unable to pull secrets or registry auth: pull command failed: : signal: killed。需要注意的是,两个子网(私有和公共)的出站规则都允许流量到任何地方(0.0.0.0/0)。

我了解 Fargate 任务需要连接到 Internet 才能在 ECR 中提取 docker 映像,而 NAT 可以帮助实现这一点。 docker pulldocker push 使用 HTTPS,并且私有子网已允许来自所有来源的所有流量和出站流量。

公共子网的 NACL

请就如何修改网络 ACL 以仅将特定端口列入白名单提出建议。

P.S:最后的手段是使用 AWS PrivateLink 访问 ECR 存储库,但我还不想这样做。

【问题讨论】:

  • 您能提供/截屏您的 NACL 吗?另外我知道,如果您使用默认的 NACL,一切都会按预期进行?
  • 帖子已更新,其中包含适用于公共子网的 NACL。是的,使用默认 NACL 一切正常

标签: amazon-web-services security amazon-ecs amazon-ecr


【解决方案1】:

您的 NACL 中仅允许端口 80 和 443。这不够,因为您还需要允许ephemeral ports

这是因为对 ECR 的请求将使用临时端口返回到您的容器,而不是 80 和 443。这两个端口仅用于您的容器连接到 ECR,而不用于返回流量从 ECR 到您的容器。

【讨论】:

  • 非常感谢,在将临时端口列入白名单后,它按预期工作。
猜你喜欢
  • 2020-12-31
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
  • 2010-10-03
  • 2019-10-09
  • 2023-01-22
相关资源
最近更新 更多