保护系统资源和 API(Java 2 安全性)以开发应用程序
Java™ 2 安全性是一种非常普及的编程模型,它对应用程序开发具有巨大的影响。
开始之前
Java 2 安全性与 Java Platform, Enterprise Edition (Java EE) 基于角色的安全性无关;您可以独立于管理安全性禁用或启用 Java 2 安全性。
但是,它在 Java EE 基于角色的授权之上提供访问控制保护的额外级别。它特别处理系统资源和应用程序编程接口 (API) 的保护。管理员必须权衡禁用 Java 2 安全性的利弊。
- 确保使用 Java 2 安全性编程模型来开发应用程序。开发者必须了解应用程序中使用的 API 是否受 Java 2 安全性保护。在策略文件 was.policy 中声明所使用 API 的必需许可权非常重要,否则,当启用了 Java 2 安全性时,应用程序无法运行。开发者可以访问 Web 站点以了解受 Java 2 安全性保护的 Development Kit API。请参阅“安全性:学习资源”主题的“编程模型和决策”部分,以访问此 Web 站点。
- 确保从前发行版迁移的应用程序已给定必需的许可权。因为 Java 2
安全性在先前的 WebSphere® Application Server 发行版中不受支持或部分受支持,所以 V5 之前开发的应用程序很可能不使用
Java 2 安全性编程模型。没有简单的方法可以找出应用程序的所有必需许可权。可以执行以下活动来确定应用程序所需的额外许可权:
- 代码复审和代码检查
- 应用程序文档复审
- 在试生产环境中,在启用 Java 2 安全性的情况下对迁移的企业应用程序进行沙箱测试。在 WebSphere Java 2 安全管理器中启用跟踪,以帮助确定应用程序策略文件中缺少的许可权。跟踪规范为:com.ibm.ws.security.core.SecurityManager=all=enabled。
- 使用 com.ibm.websphere.java2secman.norethrow 系统属性帮助调试。不要在生产环境中使用此属性。
请参阅Java 2 安全性
应用程序的缺省许可权集合是
J2EE 1.3 规范中所定义的推荐许可权集合。缺省许可权集合在 app_server_root/profiles/profile_name/config/cells/cell_name/nodes/node_name/app.policy 策略文件中声明,相应的许可权在 Development Kit (JAVA_HOME/jre/lib/security/java.policy) 策略文件中定义,该文件将许可权授予每个人。但是,应用程序拒绝在
profiles/profile_name/config/cells/cell_name/filter.policy 文件中声明的许可权。许可权检查期间,将为应用程序过滤在 filter.policy
文件中声明的许可权。
应用程序的缺省许可权集合是 J2EE 1.3 规范中所定义的推荐许可权集合。缺省许可权集合在 profile_root/config/cells/cell_name/nodes/node_name/app.policy 策略文件中声明,相应的许可权在 Development Kit 策略文件中定义,该文件将许可权授予每个人。java.policy 文件位于 java_home 目录中,取决于对于概要文件启用的 Java 虚拟机 (JVM)。对于所有 Java 虚拟机,java.policy 文件在系统范围使用。请不要在服务器上编辑 java.policy 文件。应用程序拒绝在 profile_root/config/cells/cell_name/filter.policy 文件中声明的许可权。许可权检查期间,将为应用程序过滤在 filter.policy 文件中声明的许可权。
![[IBM i]](../images/iseries.gif)
- 进入 QShell。
- 执行 cd 命令以切换到 profile_root/bin
- 运行以下命令:
wsadmin -conntype NONE -c '$AdminTask showVariables {-scope Node=myNode -variableName JAVA_HOME}'
在 was.policy 文件中为应用程序定义必需的许可权,并将 was.policy 文件作为 YOURAPP.ear/META-INF/was.policy 嵌入应用程序企业归档 (EAR) 文件中,请参阅配置 Java 2 安全策略文件,以了解详细信息。
以下步骤描述如何在单元级别(对于 WebSphere Application Server Network Deployment)实施 Java 2 安全性。
过程
- 单击安全性 > 全局安全性。 将显示“全局安全性”面板。
- 选择使用 Java 2 安全性来限制应用程序对本地资源的访问选项。
- 单击确定或应用。
- 单击保存以保存更改。
- 重新启动服务器以使更改生效。
结果
- 对系统资源启用保护,例如,在打开或侦听套接字连接、读写操作系统文件系统、读写 Java 虚拟机系统属性时进行保护。
- 防止应用程序代码调用具有破坏性的 API,例如,调用 System.exit 方法会关闭应用程序服务器。
- 防止应用程序代码获取有特权的信息(密码)或获得额外特权(获取服务器凭证)。
下一步做什么
- 单击服务器 > 应用程序服务器 > server_name。
- 在“安全性”下,单击服务器安全性。
- 选择此服务器的安全性设置覆盖单元设置选项。
- 选择使用 Java 2 安全性来限制应用程序对本地资源的访问选项。
- 单击确定或应用。
- 单击保存以保存更改。
- 重新启动服务器以使更改生效。
请参阅安全性问题确定指南,以了解详细信息。