保护用于开发应用程序的系统资源和 API(Java 2 安全性)
Java™ 2 安全性是一种非常普遍的编程模型,对应用程序开发有着巨大的影响。
准备工作
Java 2 安全性与Java Platform, Enterprise Edition( Java EE ) 基于角色的安全性;您可以独立于管理安全性禁用或启用它。
然而,除了Java EE基于角色的授权。 它特别处理系统资源和应用程序编程接口 (API) 的保护。 管理员必须权衡禁用 Java 2 安全性的利弊。
提供下列建议来帮助在测试或生产环境中启用 Java 2 安全性:
- 确保应用程序是使用 Java 2 安全编程模型开发的。 开发人员必须知道应用程序中使用的 API 是否受到 Java 2 安全保护。 在策略文件中声明所使用的 API 所需的权限非常重要,was.policy或者在启用 Java 2 安全性时应用程序无法运行。 开发人员可以参考该网站以获取受 Java 2 安全保护的开发工具包 API。 请参阅“安全性:学习资源”主题的“编程模型和决策”部分,以访问此 Web 站点。
- 确保从前发行版迁移的应用程序已给定必需的许可权。 由于以前的版本不支持或部分支持 Java 2 安全性WebSphere® Application Server版本中,版本 5 之前开发的应用程序很可能没有使用 Java 2 安全编程模型。 没有简单的方法可以找出应用程序的所有必需许可权。 可以执行以下活动来确定应用程序所需的额外许可权:
- 代码复审和代码检查
- 应用程序文档复审
- 使用在预生产环境中启用的 Java 2 安全性对迁移的企业应用程序进行沙盒测试。 启用跟踪WebSphere Java 2 安全管理器帮助确定应用程序策略文件中缺少的权限。 跟踪规范为:com.ibm.ws.security.core.SecurityManager=all=enabled.
- 使用 com.ibm.websphere.java2secman.norethrow 系统属性帮助调试。 不要在生产环境中使用此属性。
应用程序的默认权限集是J2EE 1.3规格。 默认值在应用程序服务器根目录/profiles/profile_name/config/cells/cell_name/nodes/node_name/app.policy开发工具包中定义的权限策略文件(JAVA_HOME/jre/lib/security/java.policy) 策略文件,向所有人授予权限。 但是,应用程序被拒绝在profiles/profile_name/config/cells/cell_name/filter.policy中。 许可权检查期间,将为应用程序过滤在 filter.policy
文件中声明的许可权。
java.policy文件位于java_home目录取决于为配置文件启用的 Java 虚拟机 (JVM)。笔记:只有 Java SE 6 有 JRE。(例如,
对于所有 Java 虚拟机来说,java.policy文件在整个系统范围内使用。 请勿编辑java.policy服务器上的文件。 应用程序被拒绝在配置文件根/config/cells/cell_name/filter.policy中。 许可权检查期间,将为应用程序过滤在 filter.policy 文件中声明的许可权。/QOpenSys/QIBM/ProdData/JavaVM/jdk60/32bit/jre/lib/ext )。- 进入 QShell。
- 执行 cd 命令以切换到 profile_root/bin
- 运行以下命令:
wsadmin -conntype NONE -c '$AdminTask showVariables {-scope Node=myNode -variableName JAVA_HOME}'
定义应用程序所需的权限was.policy文件并嵌入was.policy应用程序企业档案 (EAR) 文件中的文件为YOURAPP.ear/META-INF/was.policy 。
以下步骤描述了如何 WebSphere Application Server Network Deployment 的单元级别和 WebSphere Application Server Express 的服务器级别实施Java 2安全
过程
- 点击安全 > 全球安全。将显示“全局安全性”面板。
- 选择使用 Java 2 安全性限制应用程序对本地资源的访问选项。
- 点击好的或者申请。
- 点击节省保存更改。
- 重新启动服务器以使更改生效。
结果
何时使用 Java 2 安全性
- 启用系统资源保护,例如打开或监听套接字连接、读取或写入操作系统文件系统、读取或写入 Java 虚拟机系统属性时。
- 防止应用程序代码调用具有破坏性的 API,例如,调用
System.exit方法会关闭应用程序服务器。 - 防止应用程序代码获取有特权的信息(密码)或获得额外特权(获取服务器凭证)。
下一步做什么?
您可以在服务器级别实施 Java 2 安全性WebSphere Application Server Network Deployment通过完成以下步骤。
Java 2 安全管理器已得到增强,当应用程序被拒绝访问资源时,可以转储授予调用堆栈上所有类的 Java 2 安全权限。 创建了 java.security.AccessControlException
异常。 但是,缺省情况下此跟踪能力是禁用的。 您可以通过使用以下方式指定服务器跟踪服务来启用此功能com.ibm.ws.security.core.SecurityManager=all=enabled踪迹规范。 当创建异常时,跟踪转储会提供提示,以确定应用程序是否缺少权限,或者产品运行时代码或所使用的第三方库是否未正确标记为privileged访问受 Java 2 安全保护的资源时。笔记:对服务器级别的 Java 2 安全设置的更改将覆盖单元级别的设置。
- 单击服务器 > 应用程序服务器 > server_name。
- 在“安全性”下,单击服务器安全性。
- 选择此服务器的安全性设置覆盖单元设置选项。
- 选择使用 Java 2 安全性限制应用程序对本地资源的访问选项。
- 点击好的或者申请。
- 单击保存以保存更改。
- 重新启动服务器以使更改生效。
查看安全问题判定指南了解详情。