AWS ECS 网络 ACL 要求

AWS ECS Network ACL requirements

我目前在 AWS 中进行了如下设置:

图片来源task networking in aws fargate.

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

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

我知道 Fargate 任务需要连接到互联网才能在 ECR 中拉取 docker 图像,而 NAT 有助于做到这一点。 docker pulldocker push 使用 HTTPS,并且私有子网允许来自所有源的所有流量,出站流量也是如此。

public 个子网的 NACL

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

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

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

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