Java 其他SecurityManager实现是否可用?

Java 其他SecurityManager实现是否可用?,java,securitymanager,Java,Securitymanager,是否有Java SecurityManager的其他实现(例如在OSS项目中)比JDK中的实现具有更多功能 我正在寻找像这样的功能 可在运行时配置 可在运行时更新的策略,从security.policy文件以外的其他数据源读取 线程感知,例如每个线程的策略不同 更高级别的策略,例如“禁用网络功能,但允许JDBC通信” 常见的预定义策略,例如“允许对常规系统属性(如file.encoding或line.separator)进行读取访问,但不允许对user.home进行读取访问” 监控和审核跟踪日

是否有Java SecurityManager的其他实现(例如在OSS项目中)比JDK中的实现具有更多功能

我正在寻找像这样的功能

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

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

我不知道有独立的SecurityManager项目。任何应用程序服务器(JBoss、Glassfish)都将包含一个用于控制加载的应用程序可以做什么的服务器

以下是我找到的一些关于滚动你自己的主题的链接:

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

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

      您是否“找到”过解决方案?否,我真的没有找到一个合适的库来提供一个复杂的SecurityManager实现