安全管理器及策略
2017-11-13 17:02
225 查看
SecurityManager
作用:开关,是否启用沙箱环境;启用方式:
JVM启动参数中添加-Djava.security.manager;
通过代码安装System.setSecurityManager(new MySecurityManager());
沙箱策略
策略:指定某些代码对某些资源具有某些访问权限,如/home/admin目录下的代码对/logs目录下文件有只读权限,示例如下图所示:JDK的Policy: 在任何时候JVM中只能有一个Policy对象起作用,可以通过Policy.getPolicy()查看当前安装的Policy对象(需要getPolicy权限),通过调用Policy.setPolicy()更改当前安装的Policy对象(需要setPolicy权限),通过implies()检查代码是否相应权限,并提供refresh()支持策略文件的热更新,如下图所示:
自定义Policy: 通过更改JRE的lib/security目录中安全属性文件java.security文件实现,更新属性policy.provider的值即可,如下图所示:
系统默认Policy:
refresh逻辑:重新加载所有的策略文件,用于热更新;
策略文件加载:首先,加载安全属性文件java.security指定文件;其次,加载系统属性java.security.policy或者java.security.auth.policy指定文件,如下图所示:
策略文件的语法请参考:http://hubingforever.blog.163.com/blog/static/17104057920118238033494/
Policy热更新示例:
import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.security.Policy; public class SandBoxTest { public static void file() { File f = new File("D:/mvn.txt"); InputStream is; try { is = new FileInputStream(f); byte[] content = new byte[1024]; while (is.read(content) != -1) { System.out.println(new String(content)); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { for(int i = 0; i < 10; i++){ System.out.println(i); file(); Thread.sleep(5000); Policy.getPolicy().refresh(); //刷新安全策略 } } }
相关文章推荐
- 安全模式:J2EE、Web服务和身份管理最佳实践与策略
- 系统安全保护以及防火墙策略管理
- 金融领域UNIX网络系统的安全管理策略
- 关于企业级安全管理策略的探讨
- 金融领域UNIX网络系统的安全管理策略
- 关于企业级安全管理策略的探讨
- win2008 域安全策略管理
- 关于企业级安全管理策略的探讨
- 关于企业级安全管理策略的探讨
- 大型企业计算机终端安全管理现状与策略分析
- Linux系统管理.安全动态磁盘策略
- 关于企业级安全管理策略的探讨
- Oracle教程之管理安全和资源(一)--Oracle策略文件
- ENGINEER03 - 系统安全保护 配置用户环境 配置高级连接 防火墙策略管理 常见协议
- 『mcse 2008 系统管理』Unit 10 Windows Server 2008安全策略
- 安全策略管理的概览
- SQL Server数据库的安全和管理策略
- 关于企业级安全管理策略的探讨
- 2012.11月项目管理师论文:论大型信息系统的安全管理策略
- UNIX网络系统的安全管理策略