我想为应用程序托管服务构建一个相当简单的安全沙箱 - 因此主要目标是:
- 在沙盒“中”运行的应用程序无法在系统上安装可执行文件运行所在目录之外的任何内容。
- 通常拒绝访问系统(注册表访问等)。
- 明确拒绝访问指定目录之外的文件系统(甚至是只读的)。它将是一个在沙箱内运行的 .NET 应用程序,所以我不确定这是否会顺便否认运行时和核心依赖项?
我目前的计划是使用 System.DirectoryServices 命名空间在 .NET 中构建沙箱,方法是:
- 为每个启动的实例创建一个新的半永久用户帐户
- 从访客类用户派生它以拒绝对系统的广泛访问
- 然后专门授予对有限数量的应用程序应该运行的目录的读写访问权限。
有人能看出这个计划有什么特别的缺陷吗?用户帐户的安全性是否足以安全地满足上述要求?我们现在正在使用一个商业软件来处理这个问题(它的沙盒更全面);但它对我们的业务来说不够自动化 - 因此希望将其构建到我们的核心自动化软件中。