安全性规划概述

当您访问因特网上的信息时,通过 Web 服务器和产品服务器连接到后端的企业数据。 本节分析某些典型配置和常见安全性做法。

本节还会检查每个安全层和常见安全实例提供的安全保护,以获得端到端安全性中的高质量保护。 下图说明了构成 WebSphere® Application Server中安全性的操作环境的构建块:

本节还会检查每个安全层和常见安全实例提供的安全保护,以获得端到端安全性中的高质量保护。 下图说明了构成 WebSphere® Application Server 中安全性的操作环境的构建块
以下信息描述了上图中说明的 WebSphere Application Server 安全性, Java™ 安全性和平台安全性的每个组件。
WebSphere Application Server 安全性
WebSphere 安全性
WebSphere Application Server 安全性以统一方式在访问 Web 资源,企业 Bean 和 JMX 管理资源时实施安全策略和服务。 它由 WebSphere Application Server 安全技术和功能部件组成,以支持安全企业环境的需求。
Java 安全性
Java Platform, Enterprise Edition (Java EE) 安全应用程序编程接口 (API)
安全合作者实施基于 Java Platform, Enterprise Edition (Java EE) 的安全策略,并支持 Java EE 安全 API。
Java 2 安全性
Java 2 安全性模型提供对系统资源的细颗粒度访问控制,包括文件系统,系统属性,套接字连接,线程技术,类装入等。 应用程序代码必须明确授予必需的许可权,以便访问受保护资源。
Java 虚拟机 (JVM) 5.0
除操作系统层外, JVM 安全模型还提供了一层安全性。 例如,JVM 安全性具有下列作用:防止内存受到不受限制的访问,当线程中发生错误时创建异常,定义数组类型。
平台安全性
[AIX Solaris HP-UX Linux Windows][IBM i]操作系统安全性

底层操作系统的安全基础结构为 WebSphere Application Server提供了某些安全服务。 这些服务包括用于保护 WebSphere Application Server的产品安装中敏感文件的文件系统安全性支持。 系统管理员可以将产品配置为从操作系统用户注册表直接获取认证信息。

底层操作系统的安全基础结构为 WebSphere Application Server提供了某些安全服务。 STARTED 概要文件建立的服务方、控制器和守护程序“已启动任务”的操作系统标识是用于控制对系统资源(例如,文件或套接字)的访问的标识。 (可选) 操作系统安全性可以使用本地操作系统的用户注册表提供认证服务,和/或使用 SAF 授权为 WebSphere 管理控制台和在应用程序服务器下运行的应用程序提供授权服务。

除了了解安全套接字层 (SSL) 和传输层安全性 (TLS) 之外,管理员还必须熟悉系统授权工具 (SAF) 和资源访问控制工具 (RACF ®) 或基于 SAF 的等效产品。

可以使用本地操作系统作为用户注册表, RACF 或等效 SAF 基本产品来管理用户的身份和验证。 或者,可以使用 LDAP、定制或联合用户注册表。

可以将 WebSphere 配置为使用 SAF 授权,这将使用 RACF 或基于 SAF 的等效产品来管理和保护用户和组资源。 或者,可以将 WebSphere 配置为使用 WebSphere Authorization 或 JACC 外部授权提供程序。

当使用本地操作系统作为用户注册表和/或使用 SAF 授权时,安全性审计是 RACF 或基于 SAF 的等效产品的继承功能。

网络安全性
“网络安全性”层提供传输级别认证以及消息完整性和机密性。 可以将不同应用程序服务器之间的通信配置为使用安全套接字层 (SSL)。 另外,您可以将 IP 安全性和虚拟专用网 (VPN) 用于已添加的消息保护。

每个产品应用程序服务器都由一个 Web 容器,一个 Enterprise Java Bean (EJB) 容器和管理子系统组成。

管理控制台是一个特殊的 Java EE Web 应用程序,它提供用于执行管理功能的接口。 WebSphere Application Server 配置数据存储在 XML 描述符文件中,这些文件必须受操作系统安全性保护。 可使用管理控制台修改密码和其他敏感配置数据。 但是,必须保护这些密码和敏感数据。 有关更多信息,请参阅 对文件中的密码进行编码

管理控制台 Web 应用程序具有设置数据约束,仅当启用了 管理安全性 时,才需要通过 SSL 连接访问管理控制台 Servlet 和 JavaServer Pages (JSP) 文件。

[AIX Solaris HP-UX Linux Windows][IBM i]WebSphere Application Server V 6.0.x 和更低版本中, 管理员控制台 HTTPS 端口已配置为将 DummyServerKeyFile.jksDummyServerTrustFile.jks 与缺省自签名证书配合使用。 在 WebSphere Application Server 安装之后,必须立即替换哑元证书和密钥; 这些密钥在所有安装中都是公共的,因此不安全。 WebSphere Application Server Version 6.1 提供集成证书和密钥管理,这将生成具有嵌入式服务器主机名的不同专用密钥和自签名证书,以启用主机名验证。 WebSphere Application Server Version 6.1 还支持与外部证书 (CA) 权限集成以使用 CA 颁发的证书。 WebSphere Application ServerV 6.1 安装过程提供了在安装期间启用管理安全性的选项。 因此,安装后将立即保护 WebSphere Application Server 进程。 WebSphere Application Server Version 7.0 通过创建链式证书 (由根证书签署的个人证书) 来扩展嵌入式证书管理功能,以允许刷新个人证书而不影响建立的信任。 它还允许在创建概要文件(您可以导入自己的概要文件,也可以更改缺省情况下创建的概要文件的专有名称 (DN))期间修改证书,并且可以更改缺省密钥库密码。

管理安全性

[AIX Solaris HP-UX Linux Windows][IBM i]WebSphere Application Server 通过 CSIv2 和安全认证服务 (SAS) 安全协议以及 HTTP 和 HTTPS 协议相互交互。
重要信息: SAS 仅在 V 6.0.x 和已在 V 6.1 单元中联合的先前版本服务器之间受支持。

当您启用 WebSphere Application Server 管理安全性时,可以将这些协议配置为使用安全套接字层 (SSL)。 每个服务器中的 WebSphere Application Server 管理子系统都使用 SOAP , Java 管理扩展 (JMX) 连接器和基于因特网 ORB 间协议 (RMI/IIOP) JMX 连接器的远程方法调用来传递管理命令和配置数据。 禁用 管理安全性 时, SOAP JMX 连接器使用 HTTP 协议, RMI/IIOP 连接器使用 TCP/IP 协议。 启用 管理安全性 时, SOAP JMX 连接器始终使用 HTTPS 协议。 启用 管理安全性 后,可以将 RMI/IIOP JMX 连接器配置为使用 SSL 或 TCP/IP。 建议您启用 管理安全性 并启用 SSL 以保护敏感配置数据。

Java EE 资源的安全性

Java EE 资源的安全性由 Web 容器和 EJB 容器提供。 每个容器提供两种类型的安全性:声明式安全性和程序化安全性。

在声明式安全性中,应用程序安全性结构包含网络消息完整性和机密性、认证要求、安全角色和访问控制。 访问控制以应用程序的外部格式表述。 尤其是,部署描述符是 Java EE 平台中声明式安全性的主要工具。 WebSphere Application Server 维护 Java EE 安全策略,包括从部署描述符派生并由部署者和管理员在一组 XML 描述符文件中指定的信息。 在运行时,容器使用 XML 描述符文件中定义的安全策略来强制执行数据约束和访问控制。

当仅使用声明式安全性不足以表示应用程序的安全模型时,可以使用程序化安全性来作出访问决策。 启用 管理安全性 并且未在服务器级别禁用应用程序服务器安全性时,将强制实施 Java EE 应用程序安全性。 为 Web 资源指定安全策略后,当 Web 客户机请求资源时 Web 容器会执行访问控制。 如果不存在任何认证数据,那么 Web 容器会根据指定的认证方法来质询 Web 客户机以获取认证数据,从而确保满足数据约束,并确定已认证的用户是否具有需要的安全角色。 Web 安全性协调程序通过使用访问管理器实现来执行基于角色的访问控制。 访问管理器基于源自部署描述符的安全策略作出授权判定。 如果已认证的用户主体具有某个必需的安全角色,那么它可以访问请求的 Servlet 或 JSP 文件。 Servlet 和 JSP 文件可以使用 HttpServletRequest 方法 isUserInRole 和 getUserPrincipal。

[AIX Solaris HP-UX Linux Windows][IBM i]如果启用了管理安全性和应用程序安全性,并且未禁用应用程序服务器级别应用程序安全性,那么 EJB 容器将对 EJB 方法调用实施访问控制。

无论是否为特定 EJB 方法定义了方法许可权都会进行认证。 EJB 安全性协调程序通过使用访问管理器实现来执行基于角色的访问控制。 访问管理器基于源自部署描述符的安全策略作出授权判定。 如果已认证的用户主体具有必需的安全角色之一,那么它可以访问请求的 EJB 方法。 EJB 代码可以使用 EJBContext 方法 isCallerInRole 和 getCallerPrincipal。 使用基于 Java EE 角色的访问控制来保护有价值的业务数据不被未经授权的用户通过因特网和内部网进行访问。 请参阅 使用组装工具保护 Web 应用程序保护企业 Bean 应用程序

基于角色的安全性

WebSphere Application Server 将安全性,基于角色的访问控制扩展至管理资源,包括 JMX 系统管理子系统,用户注册表以及 Java 命名和目录接口 (JNDI) 名称空间。 WebSphere 管理子系统定义了四个管理安全角色:
监视员角色
监视员可以查看配置信息和状态,但是不能进行任何更改。
操作员角色
操作员可以触发运行时状态更改(例如,启动应用程序服务器或停止应用程序),但是不能进行配置更改。
配置员角色
配置员可以修改配置信息,但是不能更改运行时的状态。
管理员角色
操作程序和配置程序,它们还可以修改敏感安全配置和安全策略,例如设置服务器标识和密码,启用或禁用 管理安全性 和 Java 2 安全性,以及将用户和组映射到管理员角色。
iscadmins
iscadmins 角色拥有管理员特权,它只能从管理控制台中管理用户和组。
WebSphere Application Server 定义了仅当您使用 wsadmin 脚本编制时可用的另外两个角色。
部署员
部署者可以对应用程序执行配置操作和运行时操作。
Adminsecuritymanager
管理安全管理器可以将用户映射至管理角色。 并且,在使用细颗粒度的管理安全性时,被授予此角色的用户可以管理权限组。
审计员
审计员可以查看和修改安全审计子系统的配置设置。

具有配置员角色的用户可执行管理工作,包含安装新应用程序和应用程序服务器。 在启用 管理安全性 时,配置程序没有足够权限执行某些配置任务,包括修改 WebSphere Application Server 身份和密码,轻量级第三方认证 (LTPA) 密码和密钥, 并将用户分配给管理安全角色。 因为服务器标识映射至管理员角色,所以执行那些敏感的配置任务需要管理角色。

启用 WebSphere Application Server 管理安全性以保护管理子系统完整性。 如果没有敏感信息需要保护,那么可以有选择性地禁用应用程序服务器安全性。 要保护管理安全性,请参阅 授予对管理角色的访问权将用户和组分配给角色

Java 2 安全性许可权

WebSphere Application Server 使用 Java 2 安全模型来创建安全环境以运行应用程序代码。 Java 2 安全性提供了一个基于策略的细颗粒度访问控制,以保护系统资源,例如文件,系统属性,打开套接字连接,装入库等。 Java EE V 1.4 规范定义了一组 Web 和 EJB 组件期望具有的典型 Java 2 安全许可权。

表 1. Java EE 为 Web 组件设置的安全许可权 下表显示了为 Web 组件设置的 Java EE 安全许可权。
安全许可权 目标 操作
java.lang.RuntimePermission loadLibrary  
java.lang.RuntimePermission queuePrintJob  
java.net.SocketPermission * 连接
java.io.FilePermission * 读,写
java.util.PropertyPermission * 阅读
表 2。 Java EE 为 EJB 组件设置的安全许可权 下表显示了为 EJB 组件设置的 Java EE 安全许可权。
安全许可权 目标 操作
java.lang.RuntimePermission queuePrintJob  
java.net.SocketPermission * 连接
java.util.PropertyPermission * 阅读
WebSphere Application Server Java 2 安全缺省策略基于 Java EE V 1.4 规范。 该规范为 Web 组件授予对文件系统中的任何文件(可能涉及面很广)的读写文件访问许可权。 WebSphere Application Server 缺省策略授予 Web 组件对安装了 Web 模块的子目录和子树的读和写许可权。 所有 Java 虚拟机和 WebSphere Application Server 进程的缺省 Java 2 安全策略包含在以下策略文件中:
[IBM i]/QIBM/ProdData/Java400/jdk15/lib/security/java.policy
[IBM i]用作 Java 虚拟机 (JVM) 的缺省策略。
[AIX Solaris HP-UX Linux Windows]${java.home}/jre/lib/security/java.policy
[AIX Solaris HP-UX Linux Windows]此文件用作 Java 虚拟机 (JVM) 的缺省策略。
[AIX Solaris HP-UX Linux Windows][IBM i]${USER_INSTALL_ROOT}/properties/server.policy
[AIX Solaris HP-UX Linux Windows][IBM i]此文件用作所有产品服务器进程的缺省策略。

为了简化策略管理, WebSphere Application Server 策略基于资源类型而不是代码库 (位置)。 以下文件是 WebSphere Application Server 子系统的缺省策略文件。 这些策略文件是 WebSphere Application Server 运行时的扩展,称为服务提供者编程接口 (SPI) ,由多个 Java EE 应用程序共享:

[AIX Solaris HP-UX Linux Windows]
  • 概要分析根/config/cells/cell_name/nodes/node_name/spi.policy

    此文件用于 resources.xml 文件中定义的嵌入式资源,例如 Java 消息服务 (JMS) , JavaMail和 JDBC 驱动程序。

  • 概要分析根/config/cells/cell_name/nodes/node_name/library.policy

    此文件由 WebSphere Application Server 管理控制台定义的共享库使用。

  • 概要分析根/config/cells/cell_name/nodes/node_name/app.policy

    此文件用作 Java EE 应用程序的缺省策略。

[IBM i]
  • 概要分析根/config/cells/cell_name/nodes/node_name/spi.policy

    用于 resources.xml 文件中定义的嵌入式资源,例如 Java 消息服务 (JMS) , JavaMail和 JDBC 驱动程序。

  • 概要分析根/config/cells/cell_name/nodes/node_name/library.policy

    WebSphere Application Server 管理控制台定义的共享库使用。

  • 概要分析根/config/cells/cell_name/nodes/node_name/app.policy

    用作 Java EE 应用程序的缺省策略。

通常,应用程序不需要比 Java EE 规范建议的许可权更多的许可权来在各种应用程序服务器之间可移植。 但是,某些应用程序可能需要更多许可权。 WebSphere Application Server 支持将 was.policy 文件与每个应用程序打包在一起,以向该应用程序授予额外许可权。
注意: 由于可能影响系统完整性,因此只有在仔细考虑后,才会向应用程序授予额外许可权。

将库装入到 WebSphere Application Server 中确实允许应用程序离开 Java 沙箱。 WebSphere Application Server 使用许可权过滤策略文件在应用程序安装由于其他许可权需求而失败时向您发出警报。 例如,建议您不向应用程序授予 java.lang.RuntimePermission exitVM 许可权,以便应用程序代码无法终止 WebSphere Application Server

过滤策略由 profile_root/config/cells/cell_name/filter.policy 文件中的 filtermask 定义。 此外, WebSphere Application Server 还会执行基于运行时过滤策略的运行时许可权过滤,以确保应用程序代码未被授予被视为对系统完整性有害的许可权。

因此,为 WebSphere Application Server 的先前发行版开发的许多应用程序可能未准备好 Java 2 安全性。 要快速将这些应用程序迁移到最新版本的 WebSphere Application Server,您可以在 was.policy 文件中临时向这些应用程序授予 java.security.AllPermission 许可权。 测试这些应用程序以确保它们在 Java 2 安全性处于活动状态的环境中运行。 例如,如果具有额外的许可权,那么确定需要哪些额外的许可权,并且只将这些许可权授予给特定应用程序。 不将 AllPermission 许可权授予给应用程序可以降低破坏系统完整性的风险。 有关迁移应用程序的更多信息,请参阅 迁移 Java 2 安全策略

WebSphere Application Server 运行时使用 Java 2 安全性来保护敏感运行时函数。 授予 AllPermission 许可权的应用程序不仅有权访问敏感系统资源,还有权访问 WebSphere Application Server 运行时资源,并且可能对这两种资源都造成损坏。 在可信任应用程序为安全的情况下, WebSphere Application Server 支持在每个应用程序服务器上禁用 Java 2 安全性。 缺省情况下,可以在管理控制台中实施 Java 2 安全性,并在特定应用程序服务器上清除 Java 2 安全性标志以将其禁用。

当您指定 启用管理安全性 并使用 Java 2 安全性来限制应用程序对管理控制台的 "全局安全性" 面板上的本地资源选项的访问时,这些信息和其他敏感配置数据将存储在一组 XML 配置文件中。 使用基于角色的访问控制和基于 Java 2 安全性的访问控制来保护配置数据的完整性。 该示例使用配置数据保护说明如何维护系统完整性。
注意: WebSphere Application Server 的前发行版中的 启用全局安全性 选项与 V 9.0中的 启用管理安全性 选项相同。 此外,前发行版中的 "启用 Java 2 安全性" 选项与 V 9.0中的 "使用 Java 2 安全性来限制应用程序对本地资源的访问" 选项相同。
  • 实施 Java 2 安全性时, 除非向应用程序代码授予必需的 WebSphere Application Server 运行时许可权,否则应用程序代码无法访问用于管理配置数据的 WebSphere Application Server 运行时类。
  • 实施 Java 2 安全性时,除非向应用程序代码授予所需的文件读写许可权,否则应用程序代码无法访问 WebSphere Application Server 配置 XML 文件。
  • JMX 管理子系统提供 SOAP over HTTP 或 SOAP over HTTPS 以及 RMI/IIOP 远程接口,以使应用程序能够抽取和修改配置文件及数据。 启用管理安全性后,如果应用程序提供了有效的认证数据,并且安全身份具有必需的安全角色,那么应用程序可以修改 WebSphere Application Server 配置。
  • 如果用户可以禁用 Java 2 安全性,那么该用户还可以修改 WebSphere Application Server 配置,包括 WebSphere Application Server 安全身份和认证数据以及其他敏感数据。 只有具有管理员安全角色的用户才能禁用 Java 2 安全性。
  • 由于 WebSphere Application Server 安全身份授予管理员角色,因此只有具有管理员角色的用户才能禁用 管理安全性,更改服务器标识和密码以及将用户和组映射到管理角色等。
[AIX Solaris HP-UX Linux Windows][IBM i]

其他运行时资源

其他 WebSphere Application Server 运行时资源受类似机制保护,如前所述。 启用 WebSphere Application Server 管理安全性以及使用 Java 2 安全性来限制应用程序对本地资源的访问非常重要。 Java EE 规范为 Web 组件定义了多种认证方法 :HTTP 基本认证,基于表单的认证和 HTTPS 客户机证书认证。 使用客户机证书登录时,如果 Web 资源具有完整性或机密数据约束,那么这对于浏览器客户机更方便。 如果浏览器使用 HTTP 访问 Web 资源,那么 Web 容器将自动将该浏览器重定向到 HTTPS 端口。 CSIv2 安全协议还支持客户机证书认证。 还可以使用 SSL 客户机认证在所选择的一组服务器之间根据信任关系来建立安全通信。

如果从 Web 服务器上的 WebSphere Application Server 插件启动,那么可以在其与 WebSphere Application Server HTTPS 服务器之间配置 SSL 相互认证。 使用证书时,可以限制 WebSphere Application Server 插件仅与所选的两个 WebSphere Application Server 通信,如下图所示。 注意,可以使用自签发证书来减少管理任务和降低成本。
例如,要限制 WebSphere Application Server A 和 WebSphere Application Server B 中的 HTTPS 服务器仅接受来自 WebSphere Application Server 插件 W 的安全套接字连接。
例如,您希望限制 WebSphere Application Server A.WebSphere Application Server B. 中的 HTTPS 服务器仅接受来自 WebSphere Application Server 插件 W的安全套接字连接。
  • [AIX Solaris HP-UX Linux Windows][IBM i]要完成此任务,可以使用 IKEYMAN 和证书管理实用程序来生成三个证书。 另外,还可以使用证书 W 和信任证书 AB。 配置 WebSphere Application Server A 的 HTTPS 服务器以使用证书 A 和信任证书 W
配置 WebSphere Application Server B 的 HTTPS 服务器以使用证书 B 并信任证书 W
表 3。 来自示例 的信任关系。 下表中说明了上图中所描述的信任关系。
服务器 密钥 信任
WebSphere Application Server 插件 W A , B
WebSphere Application Server A A W
WebSphere Application Server B B W

WebSphere Application Server 配置为使用轻量级目录访问协议 (LDAP) 用户注册表时, 您还可以使用自签名证书在每个应用程序服务器与 LDAP 服务器之间配置相互认证的 SSL ,以便密码从 WebSphere Application Server 传递到 LDAP 服务器时不可见。

[AIX Solaris HP-UX Linux Windows][IBM i]WebSphere Application Server 未提供注册表配置或管理实用程序。 另外,它不表明注册表密码策略。 建议您使用注册表建议的密码策略(包括密码长度和到期期限)。