假设我正在运行一个托管服务,希望允许第三方客户端编写的插件。
也许是一个提供基础设施但允许客户开发自己的游戏裁判的游戏服务提供商。或者,一个编码竞赛网站,允许编码员提交要运行的代码,作为某些编码问题的解决方案。
您将如何强化/锁定/沙箱此用户代码,以免对打算运行它的服务器造成潜在损害?
您将如何监控和限制资源使用(主要是 CPU、内存)?
This is a good start对于 Python,但我想知道这里是否有人有更具体的经验,他们可以分享无论语言如何(Python、Lua、Ruby 等)。
最佳答案
RestrictedPython (如您提供的链接所示)看起来很有希望。然而,我不能说我真的尝试过做这样的事情。
另一个可能有效的选择是构建一个极其最小的Linux发行版,然后将其复制到每个用户的虚拟化环境中。使用虚拟机的监控机制,在资源达到一定水平时暂停虚拟机,从而限制 CPU 和内存的使用。如果你构建的发行版足够小,那么虚拟机本身对资源的影响就很小,但我想你仍然需要相当大的 RAM 来实现这样的解决方案(只是为了安全起见) )。
只是我的 2 美分。不过,我不是 Python 专家。
关于security - 如何在托管服务中监控、管理和运行不受信任的第三方代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/795888/