我目前在 AWS 中有一个设置,如下所示:
来自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 pull或docker push使用 HTTPS 并且私有子网允许来自所有来源的所有流量,并且出站流量相同。
请建议如何修改网络 ACL 以仅将特定端口列入白名单。
PS:最后的方法是使用 AWS PrivateLink 访问 ECR 存储库,但我还不想这样做。