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



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

例如:

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

对此的安全策略可能看起来像:

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安全管理器中是不可能的。我应该写我自己的安全经理,允许在我感兴趣的领域之外的任何权限吗?

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

默认的策略实现(根据策略文件授予权限)不允许您定义已授予权限的例外情况,因此除了一些反向列出的权限外,无法授予代码执行任何操作的权限。

如果您需要这种行为,您应该实现一个自定义策略(请参阅http://docs.oracle.com/javame/8.0/sdk-dev-guide/custom_providers.htm)

相关内容

最新更新