保护用于开发应用程序的系统资源和 API(Java 2 安全性)

Java™ 2 安全性是一种非常普遍的编程模型,对应用程序开发有着巨大的影响。

准备工作

Java 2 安全性与Java Platform, Enterprise Edition( Java EE ) 基于角色的安全性;您可以独立于管理安全性禁用或启用它。

然而,除了Java EE基于角色的授权。 它特别处理系统资源和应用程序编程接口 (API) 的保护。 管理员必须权衡禁用 Java 2 安全性的利弊。

提供下列建议来帮助在测试或生产环境中启用 Java 2 安全性:
  1. 确保应用程序是使用 Java 2 安全编程模型开发的。 开发人员必须知道应用程序中使用的 API 是否受到 Java 2 安全保护。 在策略文件中声明所使用的 API 所需的权限非常重要,was.policy或者在启用 Java 2 安全性时应用程序无法运行。 开发人员可以参考该网站以获取受 Java 2 安全保护的开发工具包 API。 请参阅“安全性:学习资源”主题的“编程模型和决策”部分,以访问此 Web 站点。
  2. 确保从前发行版迁移的应用程序已给定必需的许可权。 由于以前的版本不支持或部分支持 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 系统属性帮助调试。 不要在生产环境中使用此属性。

[AIX Solaris HP-UX Linux Windows][z/OS]应用程序的默认权限集是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 文件中声明的许可权。

[IBM i]应用程序的缺省许可权集合是 J2EE 1.3 规范中所定义的推荐许可权集合。 默认值在配置文件根/config/cells/cell_name/nodes/node_name/app.policy具有在开发工具包策略文件中定义的权限的策略文件,该策略文件向所有人授予权限。 这java.policy文件位于java_home目录取决于为配置文件启用的 Java 虚拟机 (JVM)。
笔记:只有 Java SE 6 有 JRE。(例如,/QOpenSys/QIBM/ProdData/JavaVM/jdk60/32bit/jre/lib/ext )。
对于所有 Java 虚拟机来说,java.policy文件在整个系统范围内使用。 请勿编辑java.policy服务器上的文件。 应用程序被拒绝在配置文件根/config/cells/cell_name/filter.policy中。 许可权检查期间,将为应用程序过滤在 filter.policy 文件中声明的许可权。
[IBM i]使用showVariables指挥AdminTask对象来检索与服务器配置文件关联的节点的 JAVA_HOME。 例如,如果节点为 myNode:
  1. 进入 QShell。
  2. 执行 cd 命令以切换到 profile_root/bin
  3. 运行以下命令:
    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安全

过程

  1. 点击安全 > 全球安全
    将显示“全局安全性”面板。
  2. 选择使用 Java 2 安全性限制应用程序对本地资源的访问选项。
  3. 点击好的或者申请
  4. 点击节省保存更改。
  5. 重新启动服务器以使更改生效。

结果

服务器已启用并强制实施 Java 2 安全性。 调用受 Java 2 安全保护的 API 时,选择 Java 2 安全权限。
何时使用 Java 2 安全性
  1. 启用系统资源保护,例如打开或监听套接字连接、读取或写入操作系统文件系统、读取或写入 Java 虚拟机系统属性时。
  2. 防止应用程序代码调用具有破坏性的 API,例如,调用 System.exit 方法会关闭应用程序服务器。
  3. 防止应用程序代码获取有特权的信息(密码)或获得额外特权(获取服务器凭证)。

下一步做什么?

您可以在服务器级别实施 Java 2 安全性WebSphere Application Server Network Deployment通过完成以下步骤。
笔记:对服务器级别的 Java 2 安全设置的更改将覆盖单元级别的设置。
  1. 单击服务器 > 应用程序服务器 > server_name
  2. 在“安全性”下,单击服务器安全性
  3. 选择此服务器的安全性设置覆盖单元设置选项。
  4. 选择使用 Java 2 安全性限制应用程序对本地资源的访问选项。
  5. 点击好的或者申请
  6. 单击保存以保存更改。
  7. 重新启动服务器以使更改生效。
Java 2 安全管理器已得到增强,当应用程序被拒绝访问资源时,可以转储授予调用堆栈上所有类的 Java 2 安全权限。 创建了 java.security.AccessControlException 异常。 但是,缺省情况下此跟踪能力是禁用的。 您可以通过使用以下方式指定服务器跟踪服务来启用此功能com.ibm.ws.security.core.SecurityManager=all=enabled踪迹规范。 当创建异常时,跟踪转储会提供提示,以确定应用程序是否缺少权限,或者产品运行时代码或所使用的第三方库是否未正确标记为privileged访问受 Java 2 安全保护的资源时。

查看安全问题判定指南了解详情。