Sun Java System Access Manager 7.1 管理指南

第 10 章 日志记录服务

Sun Java™ System Access Manager 提供了用于记录信息(如用户活动、流量模式和授权违规)的“日志记录服务”。此外,调试文件允许管理员排除其安装故障。

日志文件

日志文件为其监视的每项服务记录大量事件。管理员应定期查看这些文件。日志文件的默认目录为 /var/opt/SUNWam/logs(针对 SPARC 系统)、/var/opt/sun/identity(针对 Linux 系统)、/var/opt/sun/identity(针对 HP-UX)以及 jes-install-dir\identity(针对 Windows)。通过使用 Access Manager 控制台可以在“日志记录服务”中配置日志文件目录。

参见 Sun Java System Access Manager 技术概述《Sun Java System Access Manager 7.1 Technical Overview》一书中的 《Sun Java System Access Manager 7.1 Technical Overview》中的“Logging Overview”,以获取默认日志文件类型、所记录的信息和日志文件格式的详细列表。

有关“日志记录服务”的属性定义,请单击 Access Manager 控制台中的“帮助”按钮查看联机帮助。

Access Manager 服务日志

有两种不同类型的服务日志文件:访问和错误。访问日志文件可能包含操作尝试和成功结果的记录。错误日志文件记录 Access Manager 服务中出现的错误。平面日志文件附加有 .error.access 扩展名。Oracle 数据库的数据库列名以 _ERROR_ACCESS 结尾,而 MySQL 数据库的则是以 _error_access 结尾。例如,记录控制台事件日志的平面文件名为 amConsole.access, 而记录相同事件日志的数据库列名为 AMCONSOLE_ACCESS。以下各节介绍“日志记录服务”记录的日志文件。

会话日志

“日志记录服务”记录以下“会话服务”事件:

会话日志的前缀为 amSSO。

控制台日志

Access Manager 控制台日志记录对与身份相关的对象、策略和服务(其中包括组织、组织单位、用户、角色、策略、组)的创建、删除和修改操作。它还记录对用户属性(包括密码)的修改以及向角色和组中添加用户或从中移除的操作。另外,控制台日志写入委托操作和数据存储库操作。控制台日志的前缀为 amConsole。

验证日志

“验证”组件记录用户登录和注销日志。验证日志的前缀为 amAuthentication。

联合日志

“联合”组件记录与联合相关的事件的日志,其中包括(但不限于)创建“验证域”和创建“托管供应商”。联合日志的前缀为 amFederation。

策略日志

“策略”组件记录与策略相关的事件,其中包括(但不限于)策略管理(策略创建、删除和修改)和策略评估。策略日志的前缀为 amPolicy

代理日志

策略代理日志负责记录关于允许或拒绝用户访问的日志资源的异常日志。代理日志的前缀为 amAgentamAgent 日志仅驻留在代理服务器上。代理事件被记录在 Access Manager 服务器上的“验证日志”中。有关该功能的详细信息,参见论述策略代理的文档。

SAML 日志

SAML 组件记录与 SAML 相关的事件,其中包括(但不限于)创建或移除声明和辅件、响应和请求的详细信息以及 SOAP 错误。会话日志的前缀为 amSAML

amadmin 日志

命令行日志记录使用命令行工具进行操作期间出现的事件错误。其中包括(但不限于)加载服务模式、创建策略和删除用户。命令行日志的前缀为 amAdmin.amadmin.accessamadmin.error 日志文件驻留在主日志记录目录的子目录中。默认情况下,amadmin 命令行工具日志文件驻留在 /var/opt/SUNWam/logs 中。

日志记录功能

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

安全日志记录

此可选功能可以将其他安全性添加到日志记录功能中。启用安全日志记录后,可以检测对安全日志进行的未授权更改或篡改。无需特殊编码即可使用此功能。“安全日志记录”是通过使用系统管理员配置的预注册证书来完成的。此“清单分析和证书”(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 的编译和运行条目使用。

错误日志和访问日志

存在两种类型的 Access Manager 日志文件:访问日志文件和错误日志文件。

访问日志文件记录与 Access Manager 部署有关的常见审计信息。日志可能包含某事件的单个记录,如验证成功。日志也可能包含同一事件的多个记录。例如,在管理员使用控制台更改属性值时,“日志记录服务”会将此更改尝试记录到一条记录中。“日志记录服务”还会将执行更改的结果记录到第二条记录中。

错误日志文件记录应用程序中发生的错误。将操作错误记录到错误日志的同时,操作尝试将被记录到访问日志文件中。

平面日志文件附加有 .error.access 扩展名。数据库表格名称以 _ERROR_ACCESS 结尾。例如,记录控制台事件的平面文件名称为 amConsole.access,而记录相同事件的数据库表格名称为 AMCONSOLE_ACCESSamConsole_access

下表对每个 Access Manager 组件所产生的日志文件进行了简要说明。

表 10–1 Access Manager 组件日志

组件 

日志文件名前缀 

已记入日志的信息 

会话 

amSSO

会话管理属性值(如:登录时间、注销时间、超时限制)。 

管理控制台 

amConsole

通过管理控制台执行的用户操作(如:创建、删除和修改与身份相关的对象、领域和策略)。 

验证 

amAuthentication

用户登录和注销。 

身份联合 

amFederation

与联合相关的事件(如:“验证域”的创建以及“托管提供者”的创建)。联合日志的前缀为 amFederation

验证(策略) 

amPolicy

与策略相关的事件(如:策略创建、删除或修改以及策略评估)。 

策略代理 

amAgent

与资源相关的异常,这些资源被用户访问过,或拒绝用户访问。amAgent 日志驻留在安装策略代理的服务器上。代理事件记录在 Access Manager 计算机上的“验证日志”中。

SAML 

amSAML

与 SAML 相关的事件(如:声明和辅件的创建或删除、响应和请求详细信息以及 SOAP 错误)。 

命令行 

amAdmin

使用 amadmin 命令行工具的操作过程中发生的事件错误。如果指定了平面文件日志记录,则 amAdmin 日志文件被放入主日志记录目录(默认为 /var/opt/SUNWam/logs)下的 amadmincli 子目录中。示例有:加载服务模式、创建策略以及删除用户。

有关 Access Manager 日志文件的列表和说明,参见 Access Manager Administration Reference 中的“Access Manager Log File Reference”

调试文件

调试文件不是“日志记录服务”的某一功能。使用独立于日志记录 API 的不同 API 可将其写入。调试文件存储在 /var/opt/SUNWam/debug 中。可在 AccessManager-base/SUNWam/lib/ 目录下的 AMConfig.properties 文件中配置此位置和调试信息的级别。有关调试属性的详细信息,参见 Access Manager Administration Reference 中的 AMConfig.properties 文件参考章节。

调试级别

有多个可记录到调试文件的信息级别。调试级别是通过 AMConfig.properties 中的 com.iplanet.services.debug.level 属性来设置的。

  1. Off— 未记录任何调试信息。

  2. Error— 该级别已用于产品。在生产期间,调试文件中不应有错误。

  3. Warning— 建议当前不使用该级别。

  4. Message— 该级别可对使用代码跟踪的可能问题发出警报。大多数 Access Manager 模块使用该级别发送调试消息。


    注 –

    不应在产品中使用“警告”级别和“消息”级别。它们会导致性能严重降低并生成大量调试消息。


调试输出文件

模块对调试文件进行写入操作前不会创建调试文件。因此,在默认的错误模式下,可能不生成任何调试文件。在设置调试级别为消息的基本登录上所创建的调试文件包括:

最常用的文件为 amSDKamProfile 以及所有与验证有关的文件。捕获的信息包括日期、时间和消息类型(错误、警告和消息)。

使用调试文件

默认情况下,调试级别设置为错误。出现以下情况时,调试文件对于管理员来说可能是有用的:

调试文件应与可能在将来拥有的任意故障排除指南同步。例如当 SSL 失败时,某人可能会打开消息调试,然后在 amJSS 调试文件中查找任意特定的证书错误。