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

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

开始之前

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

但是,它在 Java EE 基于角色的授权之上提供访问控制保护的额外级别。它特别处理系统资源和应用程序编程接口 (API) 的保护。管理员必须权衡禁用 Java 2 安全性的利弊。

提供下列建议以帮助在测试环境或生产环境中启用 Java 2 安全性:
  1. 确保使用 Java 2 安全性编程模型来开发应用程序。开发者必须了解应用程序中使用的 API 是否受 Java 2 安全性保护。在策略文件 was.policy 中声明所使用 API 的必需许可权非常重要,否则,当启用了 Java 2 安全性时,应用程序无法运行。开发者可以访问 Web 站点以了解受 Java 2 安全性保护的 Development Kit API。请参阅“安全性:学习资源”主题的“编程模型和决策”部分,以访问此 Web 站点。
  2. 确保从前发行版迁移的应用程序已给定必需的许可权。因为 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 安全性

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

[IBM i]应用程序的缺省许可权集合是 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]请使用 AdminTask 对象的 showVariables 命令来检索与服务器概要文件相关联的节点的 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 文件作为 YOURAPP.ear/META-INF/was.policy 嵌入应用程序企业归档 (EAR) 文件中,请参阅配置 Java 2 安全策略文件,以了解详细信息。

以下步骤描述如何在单元级别(对于 WebSphere Application Server Network Deployment)实施 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. 防止应用程序代码获取有特权的信息(密码)或获得额外特权(获取服务器凭证)。

下一步做什么

通过完成以下步骤,可在服务器级别(对于 WebSphere Application Server Network Deployment)实施 Java 2 安全性。
注: 在服务器级别对 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 跟踪规范指定服务器跟踪服务来启用此能力。当产生异常时,跟踪转储提供提示,以确定是应用程序缺少许可权,还是所使用的产品运行时代码或第三方库在访问 Java 2 安全性保护的资源时未正确标记为有特权

请参阅安全性问题确定指南,以了解详细信息。


指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_enablejava2sec
文件名:tsec_enablejava2sec.html