在 Google Cloud Functions 中运行不受信任的代码

fel*_*ima 1 google-cloud-platform google-cloud-functions

我想运行不受信任的 JavaScript 代码,因此我想使用函数作为沙箱,用户可以在其中运行简单的 JavaScript。

我实际上尚未列入使用 Google Cloud 功能的白名单,但我有一个问题:

HTTP 函数是否可以访问我的 Google Cloud 上下文?

Nic*_*las 6

如果我正确理解您的请求,您希望让 Cloud HTTP Functions 在服务器端评估用户提供的 Javascript 代码。

根据您的描述,该函数能够评估用户代码的唯一真正方法本质上是使用evalor new Function()。为了确认我提到的风险,我创建了一个云函数,只需将 POST 请求正文传递到eval. 如果没有任何依赖项,我可以代表云功能发出 HTTP 请求,这可能会很糟糕。

鉴于大多数有用的云功能都具有"@google-cloud"依赖项,用户可以获得对该上下文的访问权限。我能够要求@google-cloud并获取该对象可访问的所有信息(应用程序凭据、应用程序信息等)。让恶意用户获得此类信息比第一次测试要糟糕得多。此外,Cloud Functions 默认情况下(大概是默认应用程序凭据)经过身份验证,从而获得 gcloud 客户端库的所有功能。

最后,在服务器上运行用户提供的代码的最安全方法是在容器内。这本质上会将用户的代码锁定在 Linux 盒子中,其中的资源和网络功能可以完全由您控制。在 Google Cloud Platform 上,实现此目标的最佳方法可能是使用 App Engine 作为前端来处理用户请求,并使用 Compute Engine 虚拟机为用户代码创建和运行容器。它更复杂,但不会有破坏您的 Google Cloud Platform 项目的风险。