安全管理器与访问权限

Wu Jun 2020-01-03 16:43:49
Categories: > > Tags:

一旦某个类被加载到虚拟机中,并由校验器检查过后,Java 平台的第二种安全机制就会启动,这个机制就是安全管理器

1 权限检查

SecurityManager 安全管理器是一个负责控制具体操作是否允许执行的类。

默认情况不安装。

安全管理器检查的操作包括:

2 Java 平台安全性

建立了代码来源访问权限之间的映射关系。

每个类都有一个封装类的代码来源和权限集合的保护域。

SecurityManager 检查权限时,找出调用堆栈上所有方法的类,询问所有类的保护域,检查其权限集合。

3 安全策略文件

策略管理器要读取策略文件,包含了将代码来源映射为权限的指令。

grant codeBase "file:${{java.ext.dirs}}/*" {
        permission java.security.AllPermission;
};

grant {
        permission java.lang.RuntimePermission "stopThread";
        permission java.net.SocketPermission "localhost:0", "listen";
        permission java.util.PropertyPermission "java.version", "read";
};

策略文件默存放在 Java 平台主目录和用户主目录的 java.policy 文件中

使用指定策略文件

java -Djava.security.policy = MyApp.policy MyApp

4 定制权限

继承 Permission 类以实现自己的权限类。

5 实现权限类

在方法中增加权限类,设计策略文件