Sun Java System Access Manager 7.1 管理指南

日志记录功能

“日志记录服务”具有许多特殊功能,启用它们可以实现附加功能。其中包括“启用安全日志记录”、“命令行日志记录”和“远程日志记录”。

安全日志记录

此可选功能可以将其他安全性添加到日志记录功能中。启用安全日志记录后,可以检测对安全日志进行的未授权更改或篡改。无需特殊编码即可使用此功能。“安全日志记录”是通过使用系统管理员配置的预注册证书来完成的。此“清单分析和证书”(Manifest Analysis and Certification, MAC) 是为每个日志记录生成和存储的。定期插入的特殊“签名”日志记录代表了写入该点的日志内容签名。两个记录的组合可以确保日志未被篡改。启用安全日志记录有两种方法;通过 Java Security Server (JSS) 提供者和通过 Java Cryptography Extension (JCE) 提供者。

Procedure通过 JSS 提供者启用安全日志记录

  1. 创建一个名为 Logger 的证书,然后将其安装于运行 Access Manager 的部署容器内。

    有关 Application Server 的说明,参见《Sun Java System Application Server Enterprise Edition 8.2 管理指南》中的《Sun Java System Application Server Enterprise Edition 8.2 Administration Guide》中的“Working with Certificates and SSL”

    有关 Web Server 的说明,参见《Sun Java System Web Server 7.0 管理员指南》中的《Sun Java System Web Server 7.0 Administrator’s Guide》中的“Managing Certificates”

  2. 使用 Access Manager 控制台打开“日志记录服务”配置中的“安全日志记录”,然后保存更改。管理员也可修改“日志记录服务”中其他属性的默认值。

    如果日志记录目录从默认值 (/var/opt/SUMWam/logs) 进行了更改,则确保将权限设置为 0700。日志记录服务将创建目录(如果不存在),但它会按设置权限为 0755 的情况来创建目录。

    另外,如果指定了与默认目录不同的其他目录,则必须将 Web 容器的 server.policy 文件中的以下参数更改为新的目录:

    permission java.io.FilePermission “/var/opt/SUNWam/logs/*”,”delete,write”

  3. 在包含证书数据库密码的 AccessManager-base/SUNWam/config 目录下创建一个文件,然后将其命名为 .wtpass


    注 –

    可在 AMConfig.properties 文件中配置其文件名和路径。有关详细信息,参见 Access Manager Administration Reference 中 AMConfig.properties 文件参考章节内的“Certificate Database”。

    出于安全考虑,应确保部署容器用户是唯一拥有读取该文件权限的管理员。


  4. 重新启动服务器。

    由于某些可导致误解的验证错误在安全日志记录启动时可能会被写入 /var/opt/SUNWam/debug/amLog 文件,因此应清空安全日志目录。

    要检测未授权的安全日志更改或篡改,请查找由验证程序写入 /var/opt/SUNWam/debug/amLog 的错误信息。要手动检查篡改,请运行 VerifyArchive 实用程序。有关详细信息,参见 Access Manager Administration Reference 中的 VerifyArchive 命令行章节。

Procedure通过 JCE 提供者启用安全日志记录

  1. 使用 Java 的 keytool 命令创建名为 Logger 的证书,并将其安装在 JKS 密钥库中。例如:

    JAVA-HOME/jre/lib/security/Logger.jks

    有关 Application Server 的说明,参见《Sun Java System Application Server Enterprise Edition 8.2 管理指南》中的《Sun Java System Application Server Enterprise Edition 8.2 Administration Guide》中的“Working with Certificates and SSL”

    有关 Web Server 的说明,参见《Sun Java System Web Server 7.0 管理员指南》中的《Sun Java System Web Server 7.0 Administrator’s Guide》中的“Managing Certificates”

  2. 使用 Access Manager 控制台打开“日志记录服务”配置中的“安全日志记录”,然后保存更改。管理员也可修改“日志记录服务”中其他属性的默认值。

    如果日志记录目录从默认值 (/var/opt/SUMWam/logs) 进行了更改,则确保将权限设置为 0700。日志记录服务将创建目录(如果不存在),但它会按设置权限为 0755 的情况来创建目录。

    另外,如果指定了与默认目录不同的其他目录,则必须将 Web 容器的 server.policy 文件中的以下参数更改为新的目录:

    permission java.io.FilePermission “/var/opt/SUNWam/logs/*”,”delete,write”

  3. 在包含 JKS 密钥库密码的 AccessManager-base/SUNWam/config 目录下创建一个文件,然后将其命名为 .wtpass


    注 –

    可在 AMConfig.properties 文件中配置其文件名和路径。有关详细信息,参见 Access Manager Administration Reference 中 AMConfig.properties 文件参考章节内的“Certificate Database”。

    出于安全考虑,应确保部署容器用户是唯一拥有读取该文件权限的管理员。


  4. 编辑位于 AccessManager-base/config/xml 目录中的 amLogging.xml 内的以下条目:


    sun-am-logging-secure-log-helper
    
                    <AttributeSchema name="iplanet-am-logging-secure-log-helper"
                        type="single"
                        syntax="string"
                        i18nKey="">
                        <DefaultValues>
                            <Value>com.sun.identity.log.secure.impl.SecureLogHelperJCEImpl</Value>
                        </DefaultValues>
                    </AttributeSchema>
    
     sun-am-logging-secure-certificate-store
    
                    <AttributeSchema name="iplanet-am-logging-secure-certificate-store"
                        type="single"
                        syntax="string"
                        i18nKey="">
                        <DefaultValues>
                            <Value>/dir-to-signing-cert-store/Logger.jks</Value>
                        </DefaultValues>
                    </AttributeSchema>
  5. 删除现有的服务模式 iPlanetAMLoggingService。例如:

    ./amadmin -u amadmin -w netscape -r iPlanetAMLoggingService

  6. 使用 amadmin 命令行工具将已编辑的 amLogging.xml 加载到 Access Manager 中。例如:

    ./amadmin -u amadmin -w netscape -s /etc/opt/SUNWam/config/xml/amLogging.xml

  7. 重新启动服务器。

    要检测未授权的安全日志更改或篡改,请查找由验证程序写入 /var/opt/SUNWam/debug/amLog 的错误信息。要手动检查篡改,请运行 VerifyArchive 实用程序。有关详细信息,参见 Access Manager Administration Reference 中的 VerifyArchive 命令行章节。

命令行日志记录

amadmin 命令行工具能够在 Directory Server 中创建、修改或删除身份对象(例如,组织、用户和角色)。该工具也可加载、创建和注册服务模板。“日志记录服务”可通过调用 -t 选项来记录这些操作。如果 AMConfig.properties 中的 com.iplanet.am.logstatus 属性被启用 (ACTIVE),将创建日志记录。(默认情况下将启用该属性。)命令行日志前缀为 amAdmin.。有关详细信息,参见 Access Manager Administration Reference 中的“The amadmin Command Line Tool”。

日志记录属性

AMConfig.properties 文件中有影响日志记录输出的属性:

com.iplanet.am.logstatus=ACTIVE

该属性将启用或禁用日志记录。默认为 ACTIVE。

iplanet-am-logging.service.level= level

service 是服务的标准日志文件名。例如,要指定 amSAML.access 的日志记录级别,使用属性 iplanet-am-logging.amSAML.access.levelleveljava.util.logging.Level 的值之一,表示日志文件中所记录的详细信息的级别。级别可为:OFF、SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST 以及 ALL。大多数服务不记录详细信息级别高于 INFO 的日志。

远程日志记录

Access Manager 支持远程日志记录。从而允许客户机应用程序(使用安装有 Access Manager SDK 的主机)在部署于远程计算机上的 Access Manager 实例中创建日志记录。采用以下任意方案均可启动远程日志记录:

  1. 当 Access Manager 实例的“命名服务”中的日志记录 URL 指向远程实例,并且在两者之间有已配置的信任关系时,日志将被写入远程 Access Manager 实例。

  2. 当根据远程 Access Manager 实例安装 Access Manager SDK,并且在 SDK 服务器上运行的客户机(或简单 Java 类)使用日志记录 API 时,日志将被写入远程 Access Manager 计算机。

  3. 当 Access Manager 代理使用日志记录 API 时。

Procedure使用 Web 容器启用远程日志记录

  1. 登录到 Application Server 或 Web Server 的管理控制台并添加以下 JVM 选项:

    • java.util.logging.manager=com.sun.identity.log.LogManager

    • java.util.logging.config.file=/ AccessManager-base /SUNwam/lib/LogConfig.properties

      有关 Application Server 管理控制台的详细信息,参见《Sun Java System Application Server Enterprise Edition 8.2 Administration Guide》

      有关 Web Server 管理控制台的详细信息,参见《Sun Java System Web Server 7.0 Administrator’s Guide》

    • 如果正在使用的 Java™ 2 Platform, Standard Edition 为 1.4 或更高版本,此操作需要通过调用以下命令行来完成:

      java -cp /AccessManager-base /SUNWam/lib/am_logging.jar:/ AccessManager-base /SUNWam/lib/xercesImpl.jar:/ AccessManager-base /SUNWam/lib/xmlParserAPIs.jar:/ AccessManager-base /SUNWam/lib/jaas.jar:/ AccessManager-base /SUNWam/lib/xmlParserAPIs.jar:/ AccessManager-base /SUNWam/lib/servlet.jar:/ AccessManager-base /SUNWam/locale:/ AccessManager-base/SUNWam/lib/am_services.jar:/ AccessManager-base/SUNWam/lib/am_sdk.jar:/ AccessManager-base/SUNWam/lib/jss311.jar:/ AccessManager-base/SUNWam/lib:.

      -Djava.util.logging.manager=com.sun.identity.log.LogManager

      -Djava.util.logging.config.file=/ AccessManager-base /SUNwam/lib/LogConfig.properties

    • 如果正在使用的 Java 2 Platform, Standard Edition 的版本低于 1.4,此操作需要通过调用以下命令行来完成:

      java -Xbootclasspath/a:/ AccessManager-base /SUNWam/lib/jdk_logging.jar -cp /AccessManager-base /SUNWam/lib/am_logging.jar:/ AccessManager-base /SUNWam/lib/xercesImpl.jar:/ AccessManager-base /SUNWam/lib/xmlParserAPIs.jar:/ AccessManager-base /SUNWam/lib/jaas.jar:/ AccessManager-base /SUNWam/lib/xmlParserAPIs.jar:/ AccessManager-base /SUNWam/lib/servlet.jar:/ AccessManager-base /SUNWam/locale:/ AccessManager-base/SUNWam/lib/am_services.jar:/ AccessManager-base/SUNWam/lib/am_sdk.jar:/ AccessManager-base/SUNWam/lib/jss311.jar:/ AccessManager-base/SUNWam/lib:.

      -Djava.util.logging.manager=com.sun.identity.log.LogManager

      -Djava.util.logging.config.file=/ AccessManager-base /SUNwam/lib/LogConfig.properties

  2. 确保位于 AccessManager-base/SUNWam/libLogConfig.properties 中配置了以下参数:

    • iplanet-am-logging-remote-handler=com.sun.identity.

      log.handlers.RemoteHandler

    • iplanet-am-logging-remote-formatter=com.sun.

      identity.log.handlers.RemoteFormatter

    • iplanet-am-logging-remote-buffer-size=1

      远程日志以日志记录数目为基础支持缓冲技术。该值根据记录数目定义日志缓冲区的大小。 缓冲区满后,将刷新所有已缓冲的记录到服务器。

    • iplanet-am-logging-buffer-time-in-seconds=3600

      该值定义超时期限,可在其中调用日志缓冲区清理程序线程。

    • iplanet-am-logging-time-buffering-status=OFF

      该值定义是否启用日志缓冲技术(和缓冲区清理程序线程)。默认情况下,此功能被关闭。

      如果启用了基于计时器的缓冲 (iplanet-am-logging-time-buffering-status=ON),则当日志记录的数目达到在 iplanet-am-logging-remote-buffer-size 中指定的值或当超过计时器时间(超时时间在 iplanet-am-logging-buffer-time-in-seconds 中指定)时将刷新日志记录的缓冲区(转移到提供日志记录服务的 AM 服务器中)。如果在达到缓冲区大小之前发生计时器超时,则将发送包含在缓冲区中的记录。如果禁用远程日志记录基于计时器的缓冲,则缓冲区大小决定了何时刷新缓冲区。例如,如果缓冲区大小为 10 而应用程序只发送 7 个记录,则不会刷新缓冲区,也不会写入日志记录。如果应用程序终止,则将刷新缓冲区中的记录。


    注 –

    每当日志文件为空,安全日志记录便可能显示“验证失败”。这是由于创建的文件数量等于归档大小时,安全日志记录将从此归档并重新开始。在大部分实例中,可忽略此错误。一旦记录数等于归档大小,将不显示此错误。


  3. 如果配合 Client SDK 使用程序,则需要对 AMConfig.properties 文件中的以下属性进行相应设置:

    • com.iplanet.am.naming.url

    • com.sun.identityagents.app.username

    • com.iplanet.am.service.password

    • com.iplanet.am.server.protocol

    • com.iplanet.am.server.host

    • com.iplanet.am.server.port

    参阅 /opt/SUNWam/war 目录中的 Client SDK 范例 README.clientsdk。它详细介绍了如何为 /opt/SUNWam/war/clientsdk-samples 目录生成 AMConfig.properties 和 make 文件。而这些文件供范例的 makefile 的编译和运行条目使用。