【问题标题】:Route table for docker hub and vpc endpoints for private hosted instances: AWS私有托管实例的 docker hub 和 vpc 端点的路由表:AWS
【发布时间】:2020-07-22 21:54:32
【问题描述】:

我有一个 docker 镜像,它只是一个 Java 应用程序。 Java 应用程序从 DynamoDB 和 S3 存储桶读取数据并输出一些内容(它是一个测试应用程序)。我已将 docker 映像托管到公共 docker-hub 存储库中。

在 AWS 中,我创建了私有子网,它通过 AWS ECS 托管 EC2。现在有很高的安全性;我正在将 VPC 端点用于容器的 DynamoDB 和 S3 存储桶操作。

我已经使用 NAT 网关来允许 EC2 从 docker-hub 拉取 docker 镜像。

问题:

当我删除 VPC 端点时,应用程序能够通过 NAT 读取 DynamoDB 和 S3。这意味着流量正在通过公共网络。

想法:

  1. 不能将 Dockerhub 的 IP 地址列入白名单,因为它可以更改。
  2. 由于 AWS ECS 处理所有 docker pull 等任务,我无法控制自定义。
  3. 我不想使用 AWS 容器注册表。我更喜欢 dockerhub。
  4. DynamoDB/S3 私有地址未知

问题:

  1. 如何确保 docker hub 的流量只允许通过 NAT?
  2. 如何确保只能通过端点访问 DynamoDB 和 S3?

感谢您的帮助

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2 amazon-dynamodb amazon-ecs


    【解决方案1】:

    如果您只想将通过 NAT(通过 DNS 主机名)的出站流量限制到 DockerHub,您将需要一个第三方解决方案,该解决方案可以在出站流量通过互联网之前允许或拒绝它。

    您可以将此设备安装在具有 NAT 网关访问权限的单独子网中。然后,在您现有的 ECS 子网中,您将更新路由表以使 0.0.0.0/0 路由与此设备通信(通过指定其 ENI)。如果您检查AWS marketplace,则可能已经有解决方案来满足域过滤器。

    或者您可以自动化一个工具,该工具能够为 DockerHub 抓取列入白名单的 IP 地址,然后让它添加这些以允许所有带有 NACL 的流量规则。此 NACL 仅适用于 NAT 网关所在的子网。

    关于您的第二个问题,从 VPC 的角度来看,通过将 S3 和 DynamoDB 端点的前缀列表添加到路由表中,它将通过私有路由转发到达这些 API 端点的任何请求。

    此时 DynamoDB 无法阻止公共路由交互,但 S3 可以。通过adding a condition of the VPCE 对其存储桶策略,您可以拒绝任何尝试在列出的 VPC 端点之外进行交互的访问。但是请注意不要阻止您从控制台访问,只阻止您不希望允许的特定动词。

    【讨论】:

    • 谢谢。市场解决方案我不确定它至少对于基于生产的解决方案有多好。 VPCE 的存储桶策略是一个很好的解决方案。但总的来说,对于基于生产的解决方案,我没有看到更简单的解决方案,除非我选择使用 AWS 容器注册表然后不需要 NAT
    猜你喜欢
    • 2016-03-09
    • 2018-11-22
    • 2019-08-19
    • 2021-06-17
    • 2021-06-22
    • 1970-01-01
    • 2021-08-27
    • 2021-03-30
    • 2022-01-18
    相关资源
    最近更新 更多