5 java security tomcat securitymanager
我正在编写一个应该在 Ubuntu 上的 Tomcat 上运行的 Web 应用程序。在 Ubuntu 上,Tomcat 默认配置为与 Java SecurityManager 一起运行。除了我自己的 Web 应用程序之外,只会有一些众所周知的第三方 Web 应用程序与我自己的相关,例如 BIRT 报告引擎。
如果其中一个 Web 应用程序出现故障或受到威胁,它可能会无害地关闭所有其他应用程序,因为它们都属于一起。我不会发生的情况是,受感染的 Web 应用程序会危及系统本身,例如调用 rm -r /
我是否需要使用 java 安全管理器来实现这一点?还是只需要保护一个 Web 应用程序免受另一个 Web 应用程序的影响?我真的很想阻止为我打算使用的所有 3rd 方 Web 应用程序创建 .policy 文件的努力。
理论上是的。但我听说人们在尝试使用安全管理器“锁定”服务器端代码时遇到了很多问题。应用程序的设计通常没有考虑到这一点,并且您花费大量时间调试 SecurityExceptions,直到获得正确的所有权限设置。
编辑:
我建议更简单地运行两个 Tomcat 实例,以避免一个应用程序执行某些操作会导致单个 Tomcat 中的所有内容崩溃的问题。(例如,填充堆、泄漏文件描述符或...调用 System.exit()。)
如果您仍然担心应用程序“突破”Java 并执行相当于“rm /*”的操作,那么您可以在单独的“chroot 监狱”或虚拟主机中运行每个 Tomcat 实例。或者,您可以简单地从受限用户帐户运行 Tomcat,并确保该帐户无法访问/更新不应访问/更新的文件。