Performance 在RESTful API中使用docker容器以执行不受信任的代码有哪些安全和性能约束?

Performance 在RESTful API中使用docker容器以执行不受信任的代码有哪些安全和性能约束?,performance,rest,security,docker,Performance,Rest,Security,Docker,我正在开发一套RESTful API,用于提供一些数据分析。调用API时,客户端还可以将脚本函数作为附加参数传递(这些函数将在分析管道中执行)。数据本身将从各种来源检索,如AmazonS3、客户端的Dropbox或Google云存储 我希望能够在非常受控和隔离的环境中执行客户端脚本 因此,我考虑为每个客户端请求实例化一个docker容器,并在受控环境中执行处理管道和客户端脚本 因此,基本上,RESTful端点将动态实例化docker容器,以便处理客户机请求。完成后,处理结果将被推回Dropbox

我正在开发一套RESTful API,用于提供一些数据分析。调用API时,客户端还可以将脚本函数作为附加参数传递(这些函数将在分析管道中执行)。数据本身将从各种来源检索,如AmazonS3、客户端的Dropbox或Google云存储

我希望能够在非常受控和隔离的环境中执行客户端脚本

因此,我考虑为每个客户端请求实例化一个docker容器,并在受控环境中执行处理管道和客户端脚本

因此,基本上,RESTful端点将动态实例化docker容器,以便处理客户机请求。完成后,处理结果将被推回Dropbox/S3/Google云存储,此时相应的docker容器也将被删除或重新分配到另一个请求)

编辑1

  • 从RESTful API的角度来看,客户端请求将被接受(HTTP 202)并推送到处理队列中
  • 处理队列中的每个请求将在将来的某个时候依次分配给docker容器。客户端将能够使用另一个RESTful端点查询处理的状态
编辑2:这里有一个链接解释了类似的方法:

我的问题是:

  • 这种方法对性能的影响是什么。换句话说,系统地为处理而不是使用辅助进程创建docker容器的性能成本是多少

  • 这种方法真的增加了额外的安全性吗


您认为您的API不会只处理HTTP调用,但它需要以一种实际合理的方式编排资源(容器),以便有效地使用资源(更不用说高效地使用资源),对吗?我们能否知道,通过在虚拟化层中隔离流程与将调用发送到后台任务(例如工作人员)相比,您可以预见哪些好处?我相信在任何人都能给出一个正确的答案之前,还有更多的事情要讲。@monchitos82是的,API必须进行某种形式的编排和资源管理。是的,我可以按照你的建议做一些背景工作。我还预计这些任务将运行一段时间。特别使用docker容器的目的实际上是增加额外的安全级别。我不希望客户端的脚本只是“在野外”运行。我假设通过正确配置docker映像,我可以通过在包含的环境中执行客户端脚本来降低安全风险。这是一个合法的问题。对于RESTAPI来说,创建和销毁用于运行脚本的容器是最大的胜利(从性能上看),我并不乐观。。。找到此URL:不确定是否有帮助,但它共享一些不愉快的经历。我会进行概念验证,将处理转发到VM,并以chroot方法运行这些处理,看看这是否满足我的需求,但这只是一个想法。