其他SecurityManager实现可用吗?

mha*_*ler 5 java securitymanager

Java SecurityManager是否有任何其他实现(例如在OSS项目中)可用,它具有比JDK更多的功能?

我正在寻找像这样的功能

  • 可在运行时配置
  • 策略在运行时可更新,从security.policy文件以外的其他数据源读取
  • 线程感知,例如每个线程不同的策略
  • 更高级别的策略,例如"禁用网络功能,但允许JDBC流量"
  • 常见的预定义策略,例如"允许对通常的系统属性进行读取访问,例如file.encodingline.separator禁止对user.home的读访问"
  • 监视和审计跟踪日志记录,例如"记录所有文件访问,记录所有网络访问权限不归于knownhost.example.org"
  • 阻止作业"请求"权限,直到管理员授予权限,让线程/作业继续
  • ...

我很确定应用程序服务器(至少是商业服务器)有自己的SecurityManager实现或至少有自己的策略配置.我想知道是否有任何类似要求的免费项目.

Tom*_*ine 2

  • Dynamic ProtectionDomains(在 1.4 IIRC 中引入),委托给可修改的Policy.
  • 按线程确定权限是很棘手的。小程序安全管理器通过 这样做ThreadGroup,这通常被认为是一件坏事。
  • 您可以允许连接到特定端口。类似地,您可以拥有一个特权 JDBC 驱动程序,该驱动程序可能代理到另一个驱动程序,通过AccessController.doPrivileged.
  • 可以为每个单独的密钥指定系统属性的权限。
  • AccessControllerSun/Oracle 实现中确实具有跟踪功能。
  • Applets/WebStart 将显示一个对话框,例如打印对话框。但 JNLP 服务方法要好得多。

“Glossitope”试图让系统在每次请求权限时都会弹出一个对话框。当然,这个请求对于只想看跳舞的小猪的用户来说是没有意义的。(Glossitope 是对 Vista 侧面板的 Java 版本的一次尝试。6u10 中添加的功能(拖放安装、非矩形窗口、警告图标而不是横幅、JNLP 服务)使其基本上变得多余。)