filter.policy 文件许可权
Java™ 2 安全性使用若干策略文件,为每个 Java 程序确定授予的许可权。Java 2 安全策略过滤仅在启用 Java 2 安全性时才生效。
请参阅保护系统资源和 API(Java 2 安全性)以开发应用程序。filter.policy 文件中定义的过滤策略是单元范围的。当限制许可权而不是授予许可权时,filter.policy 文件是唯一使用的策略文件。过滤器策略文件中列出的许可权是从 app.policy 文件和 was.policy 文件中过滤出的。其他策略文件中定义的许可权不受 filter.policy 文件的影响。
当过滤出许可权时,记录审计消息。然而,如果 app.policy 文件和 was.policy 文件中定义的许可权是复合许可权(如 java.security.AllPermission 许可权),那么不会移除许可权。会记录一条警告消息。如果启用了“发出许可权警告”标志(缺省值),并且如果 app.policy 文件和 was.policy 文件包含定制许可权(非 Java API 许可权,以除 java 或 javax 之外的其他字符开始的许可权包名),那么会记录一条警告消息并且不移除许可权。可以更改“全局安全性”面板上对应用程序授予定制许可权时进行警告选项的值。建议不要对企业应用程序使用 AllPermission。
filter.policy 文件中定义的某些缺省许可权。这些许可权是产品建议的最低限度的许可权。如果很多许可权添加到 filter.policy 文件,那么某些操作对于企业应用程序失败。小心地添加许可权到 filter.policy 文件。
您不能使用策略工具编辑 filter.policy 文件。编辑必须在文本编辑器中完成。请仔细验证 filter.policy 文件中没有语法错误。如果 filter.policy 文件中存在任何语法错误,那么产品安全性运行时不会装入该文件,这暗示禁用过滤。
要抽取 filter.policy 文件,请使用环境中的信息输入以下命令:
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
set obj [$AdminConfig extract cells/cell_name/filter.policy c:/temp/test/filter.policy]
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
set obj [$AdminConfig extract cells/cell_name/filter.policy /temp/test/filter.policy]
要检入策略文件,请使用环境中的信息输入以下命令:
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
$AdminConfig checkin cells/cell_name/filter.policy c:/temp/test/filter.policy $obj
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
$AdminConfig checkin cells/cell_name/filter.policy /temp/test/filter.policy $obj
服务器重新启动后,更新的 filter.policy 文件将应用于所有 WebSphere® Application Server 企业应用程序。filter.policy 文件由配置和文件复制服务管理。
对该文件的更改将复制到单元中的其他节点。
WebSphere Application Server 所提供的 filter.policy 文件位于:app_server_root/profiles/profile_name/config/cells/cell_name/filter.policy。
WebSphere Application Server 所提供的 filter.policy 文件位于:profile_root/config/cells/cell_name/filter.policy。
filterMask {
permission java.lang.RuntimePermission "exitVM";
permission java.lang.RuntimePermission "setSecurityManager";
permission java.security.SecurityPermission "setPolicy";
permission javax.security.auth.AuthPermission "setLoginConfiguration"; };
runtimeFilterMask {
permission java.lang.RuntimePermission "exitVM";
permission java.lang.RuntimePermission "setSecurityManager";
permission java.security.SecurityPermission "setPolicy";
permission javax.security.auth.AuthPermission "setLoginConfiguration"; };
filterMask 过滤器中定义的许可权用于静态策略过滤。应用程序启动期间,安全性运行时尝试从应用程序移除许可权。如果应用程序包含 filterMask 过滤器中定义的许可权,并且使用了脚本编制,那么不会移除复合许可权,但会发出警告,并停止应用程序部署。runtimeFilterMask 过滤器定义安全性运行时使用的许可权,以拒绝对应用程序线程的那些许可权的访问。不要添加很多许可权到 runtimeFilterMask 过滤器。可能导致应用程序启动失败或不正确地运行。当添加更多许可权到 runtimeFilterMask 过滤器时要小心。通常,您只需要添加许可权到 filterMask 节。
- exitVM
- 上述许可权使用的 servlet、JavaServer Pages (JSP) 文件、企业 bean 或其他库可能会调用 System.exit API,并导致整个 WebSphere Application Server 进程终止。
- setSecurityManager
- 应用程序可安装其自己的安全管理器并授予更多许可权,或绕过 WebSphere Application Server 安全性管理器执行的缺省策略。
要使更新后的 filter.policy 文件生效,请重新启动相关的 Java 进程。