【发布时间】:2020-04-23 19:14:14
【问题描述】:
我正在使用 Cloud Run 容器来运行不受信任的(用户提供的)代码。容器接收 POST 请求,运行代码,并以结果响应。出于安全原因,它部署在锁定的服务帐户上,但我还想阻止所有其他网络活动。这如何实现?
【问题讨论】:
标签: google-cloud-platform google-cloud-run
我正在使用 Cloud Run 容器来运行不受信任的(用户提供的)代码。容器接收 POST 请求,运行代码,并以结果响应。出于安全原因,它部署在锁定的服务帐户上,但我还想阻止所有其他网络活动。这如何实现?
【问题讨论】:
标签: google-cloud-platform google-cloud-run
Cloud Run(托管)目前不提供防火墙限制来选择性地阻止 IP/主机的入站或出站流量。我假设您正在尝试阻止从容器到外部发起的连接。未来,Cloud Run 计划添加对 Google Cloud VPC 服务控制功能的支持,这可能会有所帮助。
但是,如果您有机会使用 Cloud Run for Anthos(在 GKE 上),它具有类似的开发人员体验但在 Kubernetes 集群上运行,您实际上可以轻松编写 Kubernetes NetworkPolicy 策略(我有一些食谱 @987654321 @) 来控制哪些流量可以来自运行的容器。使用 Kubernetes 集群时也可以使用GCE firewall rules 和VPC service controls。
除此之外,您在 Cloud Run(完全托管)环境中的唯一选择是在启动容器时使用 Linux iptables 命令来阻止某些网络模式。重要的是,请注意 Cloud Run(完全托管)在模拟系统调用的 gVisor 沙箱上运行。 iptables 中的许多功能目前在 gVisor 中没有实现/支持。通过查看 issue tracker 和 patches ,我可以看出它在路线图上,有些甚至可能在今天起作用。
【讨论】:
iptables 解决方案?假设我只有一个允许向云运行容器发出请求的云功能。有没有一种简单的方法可以使用iptables 只允许传出流量返回该云功能? /这是你提议的吗?谢谢!
您可以将 Cloud Run(托管)部署耦合到没有任何互联网访问权限的 VPC Network。
【讨论】: