Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理指南

安全性概述

安全性是有关数据保护的功能:在存储和传输数据时如何防止对数据进行未经授权的访问或破坏。Application Server 具有基于 J2EE 标准的动态可扩展安全体系结构。内置了多种安全功能,包括密码学、验证和授权以及公共密钥基本结构。Application Server 是基于 Java 安全模型构建的,该安全模型使用沙箱,应用程序可以在沙箱中安全地运行,而不会给系统或用户带来潜在的危险。本节介绍了以下主题:

了解应用程序和系统安全性

从宽泛意义上讲,应用程序安全性有两种:

除了应用程序安全性以外,还有影响 Application Server 系统中所有应用程序的系统安全性

程序安全性受应用程序开发者的控制,因此本文档不对其进行讨论;声明安全性受应用程序开发者的控制要少一些,本文档中只偶尔涉及到声明安全性。本文档主要针对系统管理员,因此主要讲述了系统安全性。

管理安全性的工具

Application Server 提供了以下用于管理安全性的工具:

Java 2 Platform, Standard Edition (J2SE) 提供了两个用于管理安全性的工具:

有关使用 keytoolpolicytool 和其他 Java 安全性工具的更多信息,请参见 http://java.sun.com/j2se/1.4.2/docs/tooldocs/tools.html#security 上的 Java 2 SDK Tools and Utilities

在 Enterprise Edition 中,还可以使用两个实现网络安全服务 (NSS) 的工具来管理安全性。有关 NSS 的更多信息,请访问 http://www.mozilla.org/projects/security/pki/nss/。管理安全性的工具包括:

有关使用 certutilpk12util 和其他 NSS 安全性工具的更多信息,请参见 http://www.mozilla.org/projects/security/pki/nss/tools 上的 NSS Security Tools

管理密码安全性

在此版本的 Application Server 中,包含特定域的规范的 domain.xml 文件最初以明文形式包含了 Sun Java System Message Queue 代理的密码。domain.xml 文件中包含此密码的元素为 jms-host 元素的 admin-password 属性。由于在安装期间不能更改此密码,因此它不会对安全性产生很大的影响。

不过,您可以使用管理控制台添加用户和资源,并为这些用户和资源指定密码。部分密码将以明文形式写入 domain.xml 文件,例如用于访问数据库的密码。将这些密码以明文形式保存在 domain.xml 文件中可能会破坏安全性。通过执行以下操作步骤,您可以对 domain.xml 中的任何密码进行加密,包括 admin-password 属性或数据库密码。

Procedure加密 domain.xml 中的密码

  1. domain.xml 文件所在的目录(默认情况下,此目录为 domain-dir/config)中,运行以下 asadmin 命令:


    asadmin create-password-alias --user admin alias-name
    

    例如,


    asadmin create-password-alias --user admin jms-password

    将显示输入密码提示(在本例中为 admin)。有关更多信息,请参阅 create-password-aliaslist-password-aliasesdelete-password-alias 命令的手册页。

  2. 删除并替换 domain.xml 中的密码。使用 asadmin set 命令可以完成此操作。用于此目的的 set 命令的示例如下:


    asadmin set --user admin server.jms-service.jms-host.
    default_JMS_host.admin-password=${ALIAS=jms-password}
  3. 重新启动相关域的 Application Server。

保护具有编码密码的文件

某些文件包含需要使用文件系统权限进行保护的编码密码。这些文件包括:

Procedure更改主密码

主密码 (MP) 是全局性的共享密码。它从不用于验证,也从不会在网络上传输。此密码是整体安全性的要塞点;用户可以选择在需要时手动输入此密码,也可以将其隐藏在文件中。它是系统中最敏感的数据。用户可以通过删除此文件强制系统提示输入 MP。更改主密码后,系统会将其重新保存到主密码密钥库中。

  1. 停止域的 Application Server。使用 asadmin change-master-password 命令提示输入旧密码和新密码,然后对所有依赖项重新进行加密。例如,


    asadmin change-master-password>
    Please enter the master password>
    Please enter the new master password>
    Please enter the the new master password again>
  2. 重新启动 Application Server。


    注意 – 注意 –

    此时,不能启动正在运行的服务器实例并且不能重新启动运行服务器实例,除非已更改这些实例所对应的节点代理上的 SMP。如果在更改服务器实例的 SMP 之前重新启动了该服务器实例,它将无法启动。


  3. 一次停止一个节点代理及与其相关的服务器。再次运行 asadmin change-master-password 命令,然后重新启动节点代理及其相关服务器。

  4. 继续对下一个节点代理执行此过程,直到对所有节点代理均已执行此过程。这样就可以完成滚动更改。

Procedure更改管理员密码

管理密码安全性中介绍了如何对管理员密码进行加密。强烈建议您对管理员密码进行加密。如果要在加密管理员密码之前更改管理员密码,请使用 asadmin set 命令。用于此目的的 set 命令的示例如下:


asadmin set --user admin 
server.jms-service.jms-host.default_JMS_host.admin-password=new_pwd

还可以使用管理控制台更改管理员密码,步骤如下。

  1. 在管理控制台树组件中,展开“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请展开该实例的配置节点。例如,对于默认实例 server,请展开 server-config 节点。

    • 要为所有实例配置默认设置,请展开 default-config 节点。

  3. 展开“安全性”节点。

  4. 展开“区域”节点。

  5. 选择 admin-realm 节点。

  6. 在“编辑区域”页面中,单击“管理用户”按钮。

  7. 选择名为 admin 的用户。

  8. 输入新密码并确认密码。

  9. 单击“保存”以保存新密码,或单击“关闭”以关闭页面而不保存新密码。

指定安全职责

将为以下角色指定安全职责:

应用程序开发者

应用程序开发者负责:

应用程序开发者可以使用 deploytool 等工具来编辑应用程序部署描述符。《The J2EE 1.4 Tutorial》中的 "Security" 一章详细介绍了这些安全性任务,您可以通过以下 URL 查看该教程:http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

应用程序部署者

应用程序部署者负责:

应用程序部署者可以使用 deploytool 等工具来编辑应用程序部署描述符。《The J2EE 1.4 Tutorial》中的 "Security" 一章详细介绍了这些安全性任务,您可以通过以下 URL 查看该教程:http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

系统管理员

系统管理员负责:

系统管理员使用管理控制台来管理服务器安全性设置,并使用 certutil 来管理证书。本文档主要针对系统管理员。