缺省情况下, Java™ 应用程序对 Java API 请求的活动没有安全限制。 要使用 Java 安全性防止 Java 应用程序执行潜在的不安全操作,您可以为应用程序运行所在的 JVM 启用安全管理器。
关于此任务
安全管理器会强制执行一种安全策略,该策略是一组分配给代码源的许可权(系统访问特权)。 Java 平台随附了缺省策略文件。 但是,要使 Java 应用程序在 Java 安全性处于活动状态时能够在 CICS ® 中成功运行,必须指定额外的策略文件,以授予 CICS 运行应用程序所需的许可权。
您必须为已启用安全管理器的每种 JVM 指定此额外的策略文件。 CICS 提供了一些示例,您可以使用这些示例来创建自己的策略。
注: 在 Liberty JVM 服务器中不支持启用 Java 安全管理器。
- OSGi 安全代理程序示例会在您包含安全概要文件的项目中创建一个名为 com.ibm.cics.server.examples.security 的 OSGi 中间件束。 本概要文件适用于安装该概要文件的框架中的所有 OSGi 束。
- example.permissions 文件包含特定于在 JVM 服务器中运行应用程序的许可权,包括一项检查,用于确保应用程序未使用 System.exit() 方法。
- CICS 必须对部署 OSGi 捆绑软件的 zFS 中的目录具有读和执行访问权。
对于在 JVM 服务器的 OSGi 框架中运行的应用程序:
过程
- 在 IBM® CICS SDK for Java 中创建插件项目,然后选择提供的 OSGi 安全代理程序示例。
- 在项目中,选择 example.permissions 文件以编辑安全策略的许可权。
- 验证是否正确指定了 CICS zFS 和 DB2® 安装目录。
- 根据需要添加其他许可权。
- 将 OSGi 捆绑软件部署到 zFS 中的合适目录,例如
/u/bundles。
- 编辑 JVM 服务器的 JVM 概要文件,以将 OSGi 捆绑软件添加到 OSGI_BUNDLES 选项中的任何其他捆绑软件之前:
OSGI_BUNDLES=/u/bundles/com.ibm.cics.server.examples.security_1.0.0.jar
- 将以下 Java 属性添加到 JVM 概要文件以启用安全性。
-Djava.security.policy=all.policy
- 将以下 Java 环境变量添加到 JVM 概要文件以在 OSGi 框架中启用安全性:
org.osgi.framework.security=osgi
- 要允许 OSGi 框架以 Java 2 安全性启动,请添加以下策略:
grant { permission java.security.AllPermission; };
- 保存您的更改,并启用 JVMSERVER 资源,以在 JVM 服务器中安装中间件束。
- 可选: 激活 Java 2 安全性。
- 要激活 Java 2 安全策略机制,请将其添加到相应的 JVM 概要文件。 您还必须编辑 Java 2 安全策略以授予相应的许可权。
- 要在 Java 2 安全策略机制处于活动状态的情况下使用 Java 应用程序中的 JDBC 或 SQLJ ,请使用 IBM Data Server Driver for JDBC and SQLJ。
- 要激活 Java 2 安全策略机制,请编辑 JVM 概要文件。
- 通过添加示例 1 中显示的行, 编辑 Java 2 安全策略以授予对 JDBC 驱动程序的许可权。 代替 db2xxx,指定所有 Db2 库所在的目录。 许可权适用于此级别下的所有目录和文件。 这样可支持您使用 JDBC 和 SQLJ。
- 编辑 Java 2 安全策略以授予读许可权,方法是添加示例 2 中显示的行。 如果不添加读许可权,那么运行 Java 程序会产生 AccessControl异常和不可预测的结果。 可以将 JDBC 和 SQLJ 与 Java 2 安全策略配合使用。
示例 1:grant codeBase "file:/usr/lpp/db2xxx/-" {
permission java.security.AllPermission;
};
示例 2:grant {
// allows anyone to read properties
permission java.util.PropertyPermission "*", "read";
};
结果
调用 Java 应用程序时, JVM 会确定该类的代码源,并在授予该类相应许可权之前咨询安全策略。