以编程方式限制外部流程资源

时间:2015-10-25 14:31:08

标签: c# c++ vb.net sandbox

我正在开发一个.NET应用程序,它有第三方插件。这些插件作为EXE文件提供,可与应用程序API和数据一起使用。

出于安全方面的考虑,我希望能够成为" sandbox"他们,当他们通过我的应用程序启动时。特别是,最重要的是能够限制对文件系统的驱动器或目录的访问。

有没有办法通过AppDomain执行此操作?或者以任何其他方式?

由于我的软件向COM公开API,因此可能无法在托管代码中编写某些外部插件,但可以删除非.NET插件支持。对我们来说更重要的是对这些插件进行沙盒化。

任何解决此问题的方法都表示赞赏。

1 个答案:

答案 0 :(得分:1)

鉴于您需要为一个非(必然)完全基于.NET的进程执行此操作,AppDomain可能不适合该任务。

我会考虑在Windows Job Object中运行处理。这使您可以设置一个沙箱,限制进程对CPU和内存等事物的使用。

已使用自由访问控制列表(DACL s)基于用户帐户处理对文件系统的访问。要限制对文件系统的某些特定部分的访问,请设置用于运行沙盒作业的帐户,并为允许使用的文件系统部分设置允许访问的ACE。如果您需要支持多个运行沙盒作业的用户,您可能需要为沙盒作业设置用户组,并将ACE与组关联,而不是将各个用户关联。