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 pull
或 docker push
使用 HTTPS,并且私有子网允许来自所有源的所有流量,出站流量也是如此。
public 个子网的 NACL
请就如何修改网络 ACL 以仅将特定端口列入白名单提出建议。
P.S:最后的办法是使用 AWS PrivateLink 访问 ECR 存储库,但我还不想这样做。
您的 NACL 中只允许端口 80 和 443。这 不够 ,因为您还需要允许 ephemeral ports。
这是因为对 ECR 的请求将使用临时端口返回到您的容器,而不是 80 和 443。这两个端口仅用于您的容器连接到 ECR ,不适用于从 ECR 到您的容器的 return 流量。
我目前在 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 pull
或 docker push
使用 HTTPS,并且私有子网允许来自所有源的所有流量,出站流量也是如此。
public 个子网的 NACL
请就如何修改网络 ACL 以仅将特定端口列入白名单提出建议。
P.S:最后的办法是使用 AWS PrivateLink 访问 ECR 存储库,但我还不想这样做。
您的 NACL 中只允许端口 80 和 443。这 不够 ,因为您还需要允许 ephemeral ports。
这是因为对 ECR 的请求将使用临时端口返回到您的容器,而不是 80 和 443。这两个端口仅用于您的容器连接到 ECR ,不适用于从 ECR 到您的容器的 return 流量。