运行 Google Cloud Functions 中的不可信代码

Run untrusted code at Google Cloud Functions

我实际上还没有列入使用 google 云函数的白名单,但我有这个问题:

我不想 运行 不受信任的 javascript 代码,所以我想将函数用作沙箱,用户可以在其中 运行 简单 javascripts .

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

根据您的描述,该函数能够评估用户代码的唯一真实方式本质上是使用 eval or new Function()。为了确认我提到的风险,我创建了一个云函数,它只是将 POST 请求主体传递给 eval。没有任何依赖项,我可以代表云函数发出 HTTP 请求,这可能非常糟糕。

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

最后,最安全 的运行 服务器上用户提供的代码的方式是在容器中。这实质上会将用户的代码锁定在一个 Linux 框中,您可以在其中完全控制资源和网络功能。在 Google 云平台上,实现此目的的最佳方式可能是使用 App Engine 作为前端来处理用户请求,并使用 Compute Engine VM 为用户代码创建 运行 容器。它更复杂,但不会破坏您的 Google Cloud Platform 项目。