是否可以为默认的安全管理器编写独占的Java安全策略?

时间:2014-09-17 13:29:35

标签: java securitymanager security-policy

我想编写一个java安全策略,它允许除特定类型之外的所有权限。

一个例子可能是:

  • app只能读取名为MY_ACCESSIBLE_SYSTEM_PROP_1MY_ACCESSIBLE_SYSTEM_PROP_2
  • 的系统属性
  • app无法读取任何其他系统属性
  • app无法写入任何系统属性
  • 该应用没有其他安全限制

此安全策略可能如下所示:

grant {
    permission java.util.PropertyPermission "MY_ACCESSIBLE_SYSTEM_PROP_1", "read";
    permission java.util.PropertyPermission "MY_ACCESSIBLE_SYSTEM_PROP_2", "read";
}

...但我可以添加哪些内容以允许除java.util.PropertyPermission 以外的所有其他权限

我已经阅读了很多文档,并开始认为使用默认的Java安全管理器是不可能的。我应该编写自己的安全管理器,允许在我感兴趣的区域之外的任何权限吗?

1 个答案:

答案 0 :(得分:1)

默认的SecurityManager只是查询当前安装的策略(由Policy.getPolicy()返回),以查看是否应该授予给定的权限。

默认策略实现(基于策略文件授予权限)不允许您为已授予的权限定义例外,因此无法授予代码权限以执行任何操作,除了一些重新列入的权限。

如果您需要此类行为,则应实施自定义策略(请参阅http://docs.oracle.com/javame/8.0/sdk-dev-guide/custom_providers.htm