Sun Java™ System Access Manager 7 2005Q4 提供了可记录信息(如用户活动、流量模式和授权违规)的“日志记录服务”。此外,调试文件允许管理员排除其安装故障。
日志文件为其监视的每项服务记录大量事件。管理员应定期查看这些文件。SPARC 系统的默认日志文件目录为 /var/opt/SUNWam/logs,Linux 系统的则为 /var/opt/sun/identity。通过使用 Access Manager 控制台可以在“日志记录服务”中配置日志文件目录。
《Sun Java System Access Manager 7 2005Q4 Technical Overview》中的“How the Logging Feature Works”一书中的“How the Logging Feature Works”,以获取默认日志文件类型、所记录的信息和日志文件格式的详细列表。
有关“日志记录服务”的属性定义,请单击 Access Manager 控制台中的“帮助”按钮查看联机帮助。
有两种不同类型的服务日志文件:访问日志文件和错误日志文件。访问日志文件可能包含操作尝试和成功结果的记录。错误日志文件记录 Access Manager 服务中出现的错误。平面日志文件附加有 .error 或 .access 扩展名。Oracle 数据库的数据库列名以 _ERROR 或 _ACCESS 结尾,而 MySQL 数据库的则是以 _error 或 _access 结尾。例如,记录控制台事件日志的平面文件名为 amConsole.access, 而记录相同事件日志的数据库列名为 AMCONSOLE_ACCESS。以下各节介绍“日志记录服务”记录的日志文件。
“日志记录服务”记录以下“会话服务”事件:
登录
注销
会话空闲超时
会话最长超时
登录失败
会话重新激活
会话损坏
会话日志的前缀为 amSSO。
Access Manager 控制台日志记录对与身份相关的对象、策略和服务(其中包括组织、组织单位、用户、角色、策略、组)的创建、删除和修改操作。它还记录对用户属性(包括密码)的修改以及向角色和组中添加用户或从中移除的操作。另外,控制台日志写入委托操作和数据存储库操作。控制台日志的前缀为 amConsole。
“验证”组件记录用户登录和注销日志。验证日志的前缀为 amAuthentication。
“联合”组件记录与联合相关的事件的日志,其中包括(但不限于)创建“验证域”和创建“托管供应商”。联合日志的前缀为 amFederation。
“策略”组件记录与策略相关的事件,其中包括(但不限于)策略管理(策略创建、删除和修改)和策略评估。策略日志的前缀为 amPolicy。
策略代理日志负责记录关于允许或拒绝用户访问的日志资源的异常日志。代理日志的前缀为 amAgent。amAgent 日志仅驻留在代理服务器上。代理事件被记录在 Access Manager 服务器上的“验证日志”中。有关该功能的详细信息,请参阅论述策略代理的文档。
SAML 组件记录与 SAML 相关的事件,其中包括(但不限于)创建或移除声明和辅件、响应和请求的详细信息以及 SOAP 错误。会话日志的前缀为 amSAML。
命令行日志记录使用命令行工具进行操作期间出现的事件错误。其中包括(但不限于)加载服务模式、创建策略和删除用户。命令行日志的前缀为 amAdmin。
“日志记录服务”具有许多特殊功能,启用它们可以实现附加功能。其中包括“启用安全日志”、“命令行日志”和“远程日志”。
此可选功能可以将其他安全性添加到日志记录功能中。启用“安全日志”后,可以检测对安全日志进行的未授权更改或篡改。无需特殊编码即可使用此功能。“安全日志”是通过使用系统管理员配置的预注册证书来完成的。此“清单分析和证书”(Manifest Analysis and Certification, MAC) 是为每个日志记录生成和存储的。定期插入的特殊“签名”日志记录代表了写入该点的日志内容签名。两个记录的组合可以确保日志未被篡改。
创建一个名为 Logger 的证书,然后将其安装于运行 Access Manager 的部署容器内。有关详细信息,请参阅部署容器文档。
使用 Access Manager 控制台打开“日志记录服务”配置中的“安全日志”,然后保存更改。管理员也可修改“日志记录服务”中其他属性的默认值。
如果日志目录从默认值 (/var/opt/SUMWam/logs) 进行了更改,则确保将权限设置为 0700。日志记录服务将创建目录(如果不存在),但它会按设置权限为 0755 的情况来创建目录。
另外,如果指定了与默认目录不同的其他目录,则必须将 Web 容器的 server.policy 文件中的以下参数更改为新的目录:
permission java.io.FilePermission “/var/opt/SUNWam/logs/*”,”delete,write”
在包含证书数据库密码的 AccessManager-base/SUNWam/config 目录下创建一个文件,然后将其命名为 .wtpass。
可在 AMConfig.properties 文件中配置其文件名和路径。有关详细信息,请参阅附录 A,AMConfig.properties 文件中的“证书数据库”。
出于安全考虑,应确保部署容器用户是唯一拥有读取该文件权限的管理员。
重新启动服务器。
由于某些可导致误解的验证错误在安全日志启动时可能会被写入 /var/opt/SUNWam/debug/amLog 文件,因此应清空安全日志目录。
要检测未授权的更改或安全日志篡改,请查找由验证操作写入 /var/opt/SUNWam/debug/amLog 的错误信息。要手动检查篡改,请运行 VerifyArchive 实用程序。有关详细信息,请参阅第 19 章,VerifyArchive 命令行工具。
amadmin 命令行工具能够在 Directory Server 中创建、修改或删除身份对象(例如,组织、用户和角色)。该工具也可加载、创建和注册服务模板。“日志记录服务”可通过调用 -t 选项来记录这些操作。如果 AMConfig.properties 中的 com.iplanet.am.logstatus 属性被启用 (ACTIVE),将创建日志记录。(默认情况下将启用该属性。)命令行日志的前缀为 amAdmin。有关详细信息,请参阅第 14 章,amadmin 命令行工具。
在 AMConfig.properties 文件中有影响日志输出的属性:
该属性将启用或禁用日志。默认为 ACTIVE。
service 是服务的常规调试文件名。level 是 java.util.logging.Level 的值之一,表示日志中所记录的详细信息的级别。级别分为:SEVERE、WARNING、INFO、CONFIG、FINE、FINER 和 FINEST。大多数服务不记录详细信息级别高于 INFO 的日志。
Access Manager 支持远程日志。这样就允许客户机应用程序使用安装有 Access Manager SDK 的主机,在部署在远程计算机上的 Access Manager 实例中创建日志记录。采用以下任意方案均可启动远程日志:
当 Access Manager 实例的“命名服务”中的日志 URL 指向远程实例,并且在两者之间有已配置的信任关系时,日志将被写入远程 Access Manager 实例。
当根据远程 Access Manager 实例安装 Access Manager SDK,并且在 SDK 服务器上运行的客户机(或简单 Java 类)使用日志 API 时,日志将被写入远程 Access Manager 计算机。
当 Access Manager 代理使用日志 API 时。
如果您使用的是 Sun Java System Web Server,则需要在 server.xml 配置文件中设置以下环境变量:
java.util.logging.manager=com.sun.identity.log.LogManager
java.util.logging.config.file=/ AccessManager-base /SUNwam/lib/LogConfig.properties
如果正在使用的 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 <logTestClass>
如果正在使用的 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 <logTestClass>
确保以下各参数是在位于 AccessManager-base/SUNWam/lib 中的 LogConfig.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
该值定义是否启用日志缓冲技术(和缓冲区清理程序线程)。默认情况下,此功能被关闭。
每当日志文件为空,安全日志记录便可能显示“验证失败。”这是由于创建的文件数量等于归档大小时,安全日志记录将从此组归档并重新启动。在大部分实例中,可忽略此错误。一旦记录数等于归档大小,将不显示此错误。
存在两种类型的 Access Manager 日志文件:访问日志文件和错误日志文件。
访问日志文件记录与 Access Manager 部署有关的常见审计信息。日志可能包含某事件的单个记录,如验证成功。日志也可能包含同一事件的多个记录。例如,在管理员使用控制台更改属性值时,“日志记录服务”会将此更改尝试记录到一条记录中。“日志记录服务”还会将执行更改的结果记录到第二条记录中。
错误日志文件记录应用程序中发生的错误。将操作错误记录到错误日志的同时,操作尝试将被记录到访问日志文件中。
平面日志文件附加有 .error 或 .access 扩展名。数据库列名以 _ERROR 或 _ACCESS 结尾。例如:记录控制台事件的平面文件名称为 amConsole.access,而记录同样事件的数据库列则命名为 AMCONSOLE_ACCESS 或 amConsole_access。
下表对每个 Access Manager 组件所产生的日志文件进行了简要说明。
表 13–1 Access Manager 组件日志
组件 |
日志文件名前缀 |
记录的信息 |
---|---|---|
会话 |
amSSO |
会话管理属性值(如:登录时间、注销时间、超时限制)。 |
管理控制台 |
amConsole |
通过管理控制台执行的用户操作(如:创建、删除和修改与身份相关的对象、领域和策略)。 |
验证 |
amAuthentication |
用户登录和注销。 |
身份联合 |
amFederation |
与联合相关的事件(如:“验证域”的创建以及“托管提供者”的创建)。联合日志的前缀为 amFederation。 |
验证(策略) |
amPolicy |
与策略相关的事件(如:策略创建、删除或修改以及策略评估)。 |
策略代理 |
amAgent |
与资源相关的异常,这些资源被用户访问过,或拒绝用户访问。amAgent 日志驻留在安装策略代理的服务器上。代理事件记录在 Access Manager 计算机上的“验证日志”中。 |
SAML |
amSAML |
与 SAML 相关的事件(如:声明和辅件的创建或删除、响应和请求详细信息以及 SOAP 错误)。 |
命令行 |
amAdmin |
使用命令行工具的操作过程中发生的事件错误。例如:加载服务模式、创建策略以及删除用户。 |
有关 Access Manager 日志文件列表和描述的详细信息,参见附录 C,日志文件参考 。
调试文件不是“日志记录服务”的某一功能。使用独立于日志 API 的不同 API 可将其写入。调试文件存储在 /var/opt/SUNWam/debug 中。可在 AccessManager-base/SUNWam/lib/ 目录下的 AMConfig.properties 文件中配置该存储位置和调试信息的级别。有关调试属性的详细信息,请参阅附录 A,AMConfig.properties 文件。
有多个可记录到调试文件的信息级别。调试级别是通过 AMConfig.properties 中的 com.iplanet.services.debug.level 属性来设置的。
关 — 未记录任何调试信息。
错误 — 该级别已用于产品。在生产期间,调试文件中不应有错误。
警告 — 建议当前不使用该级别。
消息 — 该级别可对使用代码跟踪的可能问题发出警报。大多数 Access Manager 模块使用该级别发送调试消息。
不应在产品中使用“警告”级别和“消息”级别。它们会导致性能严重降低并生成大量调试消息。
模块对调试文件进行写入操作前不会创建调试文件。因此,在默认的错误模式下,可能不生成任何调试文件。在设置调试级别为消息的基本登录上所创建的调试文件包括:
amAuth
amAuthConfig
amAuthContextLocal
amAuthLDAP
amCallback
amClientDetection
amConsole
amFileLookup
amJSS
amLog
amLoginModule
amLoginViewBean
amNaming
amProfile
amSDK
amSSOProvider
amSessionEncodeURL
amThreadManager
最常用的文件为 amSDK、amProfile 以及所有与验证有关的文件。捕获的信息包括日期、时间和消息类型(错误、警告和消息)。
默认情况下,调试级别设置为错误。出现以下情况时,调试文件对于管理员来说可能是有用的:
写入自定义验证模块。
使用 Access Manager SDK 写入自定义应用程序。amProfile 调试文件和 amSDK 调试文件捕获此信息。
使用控制台或 SDK 时排除访问权限故障。amProfile 调试文件和 amSDK 调试文件也捕获此信息。
排除 SSL 故障。
排除 LDAP 验证模块故障。amAuthLDAP 调试文件捕获此类信息。
调试文件应与可能在将来拥有的任意故障排除指南同步。例如当 SSL 失败时,某人可能会打开消息调试,然后在 amJSS 调试文件中查找任意特定的证书错误。
Access Manager 包含可用于配置服务器大量实例的 ammultiserverinstall 脚本。 如果配置了多个服务器实例以使用不同的调试目录,则每个单独的实例都必须同时拥有调试目录的读写权限。