mik*_*era 7 java architecture cloud security plugins
所有,
我正在设计基于云的服务,它将提供执行客户提交的一些"插件"代码的选项.为了完成这项工作,插件不能威胁系统完整性或具有访问其他客户端数据的能力.
理想情况下,我希望客户端可以提交一个简单的jar文件(包含符合某些预定义接口的类),然后在沙箱中运行.
应允许客户端代码:
但我特别需要禁止以下内容:
是否可以使用自定义ClassLoader/SecurityManager设置来实现此目的?或者我是否需要开始寻找更复杂的解决方案(例如启动多个JVM?)
在java中管理资源和限制资源是不可能的。您可以防止恶意代码访问系统资源(磁盘/网络等)或 JVM 本身,但是:...
产生新线程(以便可以公平地管理服务器资源!)
protected void finalize(synchronized(Thread.class) {for(;;) LockSupport.park();}}再见新线程。如果有人故意想要拒绝资源,那么试图抓住黑客就不是一项可行的任务。您需要知道要搜索什么,并在运行时动态检查/增强类以禁止该行为。
任何调用沙箱外部对象(标准 Java 库除外)方法的能力
什么是标准库?您是否知道他们是否/何时必须以特权方法执行某些代码?
每个客户 - 独立的虚拟机,具有完整的限制、进程关联性/优先级、包括最大内存/堆栈等。