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

时间:2016-11-10 12:40:22

标签: google-cloud-platform google-cloud-functions

我实际上还没有使用谷歌云功能列入白名单,但我有这个问题:

  • http 有哪些功能可以访问我的Google上下文?

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

1 个答案:

答案 0 :(得分:3)

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

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

鉴于最有用的云功能将"@google-cloud"作为依赖项,用户可以访问该上下文。我能够要求@google-cloud并获取该对象可访问的所有信息(应用程序凭据,应用程序信息等)。向恶意用户提供此类信息比第一次测试要糟糕得多。此外,默认情况下,云功能可以通过默认应用程序凭据进行身份验证,从而获得gcloud客户端库的所有功能。

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