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

问题描述 投票:0回答:1

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

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

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

google-cloud-platform google-cloud-functions
1个回答
5
投票

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

根据您的描述,该函数能够评估用户代码的唯一真正方法本质上是使用

eval
new Function()
。为了确认我提到的风险,我创建了一个云函数,只需将 POST 请求正文传递给
eval
。如果没有任何依赖项,我可以代表云功能发出 HTTP 请求,这可能会很糟糕。

鉴于大多数有用的云函数都具有

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

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

© www.soinside.com 2019 - 2024. All rights reserved.