Sun Identity Manager 8.1 业务管理员指南

第 10 章 审计日志记录

本章介绍审计系统如何记录事件。

该信息分为以下几个主题:

审计日志记录概述

Identity Manager 审计的目的是记录操作人员、操作内容、操作的 Identity Manager 对象以及操作时间。

审计事件由一个或多个发布器处理。默认情况下,Identity Manager 使用系统信息库发布器将审计事件记录在系统信息库中。借助审计组,过滤可允许管理员选择审计事件的子集进行记录。您可为每个发布器分配最初已启用的一个或多个审计组。


注 –

有关监视和管理用户违规的信息,请参见第 13 章


Identity Manager 对哪些内容进行审计?

大多数默认审计是通过内部 Identity Manager 组件执行的。但是,有些接口允许通过工作流或 Java 代码生成事件。

默认的 Identity Manager 审计方法主要针对以下四个领域:

通过工作流创建审计事件

默认情况下,仅对批准工作流进行程序校验以生成审计记录。本节介绍了如何使用 com.waveset.session.WorkflowServices 应用程序通过任何工作流进程生成额外的审计事件。

如果需要报告自定义工作流,则可能需要其他审计事件。有关将审计事件添加到工作流中的信息,请参见修改工作流以记录标准审计事件

也可以在工作流中添加特殊审计事件以支持工作流报告(工作流报告)。工作流报告将报告完成工作流所需的时间。需要使用特殊审计事件来存储时间计算所需的数据。有关将计时审计事件添加到工作流中的信息,请参见修改工作流以记录计时审计事件

com.waveset.session.WorkflowServices 应用程序

com.waveset.session.WorkflowServices 应用程序可通过任何工作流进程生成审计事件。表 10–1 介绍了可用于此应用程序的参数。

表 10–1 com.waveset.session.WorkflowServices 的参数

参数 

类型 

描述 

op

字符串 

对 WorkflowServices 执行的操作。必须设置为 audit auditWorkflowaudit 用于标准工作流审计。auditWorkflow 用于存储时间计算所需的计时审计事件。该参数是必需的。

type

字符串 

正在进行审计的对象类型名称。表 B–5 中列出了可审计的对象类型。这是记录标准审计事件所需的参数。

action

字符串 

执行的操作的名称。表 B–6 中列出了可审计的操作。该参数是必需的。

status

字符串 

指定操作的状态名称。表 B–7 中列出了状态(在“结果”列中)。这是记录标准审计事件所需的参数。

name

字符串 

受指定操作影响的对象的名称。这是记录标准审计事件所需的参数。 

resource

字符串 

可选)进行更改的对象所在资源的名称。

accountId

字符串 

可选)正在修改的帐户 ID。它应是本机资源帐户名称。

error

字符串 

可选)伴随任何故障的本地化错误字符串。

reason

字符串 

可选)ReasonDenied 对象的名称,此名称将映射到描述一般故障原因的国际化消息。

attributes

映射 

可选)已添加或已修改的属性名称和值的映射。

parameters

映射 

可选)最多映射五个与事件相关的附加名称或值。

organizations

列表 

可选)放置该事件的组织名称或 ID 列表。它用于审计日志的组织范围限定。如果不存在,则处理程序将尝试根据类型和名称来解析组织。如果无法解析组织,则将事件置于“顶级”(组织分层结构的最高级别)。

originalAttributes

映射 

可选)旧属性值的映射。名称应与属性参数中列出的名称相匹配。这些值是您要在审计日志中保存的任何先前的值。

修改工作流以记录标准审计事件

要在工作流中创建标准审计事件,请将以下 <Activity> 元素添加到工作流中:

<Activity name=’createEvent’>

然后,将引用 com.waveset.session.WorkflowServices 应用程序的 <Action> 元素嵌套在 <Activity> 元素中:

<Action class=’com.waveset.session.WorkflowServices’>

将必需和可选的 <Argument> 元素嵌套在 <Action> 元素中。有关这些参数的列表,请参见表 10–1

要记录标准审计事件,必须将 op 参数设置为 audit

工作流示例显示了创建标准审计事件所需的最少代码。

工作流示例

以下示例展示了简单的工作流活动,并显示了事件的生成,该事件将记录由 ResourceAdministrator 执行的名为 ADSIResource1 的资源删除活动。


示例 10–1 简单的工作流活动


<Activity name=’createEvent’> <Action class=’com.waveset.session.WorkflowServices’> 
<Argument name=’op’ value=’audit’/> <Argument name=’type’ value=’Resource’/> 
<Argument name=’action’ value=’Delete’/> <Argument name=’status’ value=’Success’/> 
<Argument name=’subject’ value=’ResourceAdministrator’/> 
<Argument name=’name’ value=’ADSIResource1’/> </Action> <Transition to=’end’/> </Activity>

下一个示例展示了如何将特定属性添加到工作流,该工作流将跟踪由每个用户在批准进程中根据细化级别应用的更改。通常,此添加将遵循从用户请求输入的 ManualAction

ACTUAL_APPROVER 是根据实际执行批准的人员,在表单和工作流中(如果从批准表中批准)设置的。APPROVER 将标识分配了 APPROVER 的人员。


示例 10–2 在批准进程中跟踪更改的已添加属性


 
<Action name=’Audit the Approval’ application=’com.waveset.session.WorkflowServices’> 
<Argument name=’op’ value=’audit’/> <Argument name=’type’ value=’User’/> 
<Argument name=’name’ value=’$(CUSTOM_DESCRIPTION)’/> <Argument name=’action’ value=’approve’/> 
<Argument name=’accountId’ value=’$(accountId)’/> <Argument name=’status’ value=’success’/> 
<Argument name=’resource’ value=’$(RESOURCE_IF_APPLICABLE)’/> 
<Argument name=’loginApplication’ value=’$(loginApplication)’/> 
<Argument name=’attributes’> <map> 
<s>fullname</s><ref>user.accounts[Lighthouse].fullname</ref> 
<s>jobTitle</s><ref>user.accounts[Lighthouse].jobTitle</ref> 
<s>location</s><ref>user.accounts[Lighthouse].location</ref> 
<s>team</s><ref>user.waveset.organization</ref> <s>agency</s>
<ref>user.accounts[Lighthouse].agency</ref> </map> </Argument> 
<Argument name=’originalAttributes’> <map> <s>fullname</s> <s>User’s previous fullname</s> 
<s>jobTitle</s> <s>User’s previous job title</s> <s>location</s> <s>User’s previous location</s> 
<s>team</s> <s>User’s previous team</s> <s>agency</s> <s>User’s previous agency</s> </map> 
</Argument> <Argument name=’attributes’> <map> <s>firstname</s> <s>Joe</s> <s>lastname</s> 
<s>New</s> </map> </Argument> <Argument name=’subject’> <or> <ref>ACTUAL_APPROVER</ref> 
<ref>APPROVER</ref> </or> 
</Argument> <Argument name=’approver’ value=’$(APPROVER)’/> </Action>

修改工作流以记录计时审计事件

可以修改工作流以记录计时事件来支持工作流报告(工作流报告)。标准审计事件仅记录已发生的事件;而计时审计事件记录事件的开始和停止时间,以便可以执行时间计算。除了计时事件数据以外,还会存储标准审计事件所记录的大部分信息。有关详细信息,请参见计时审计事件存储哪些信息?


注 –

要记录计时审计事件,必须先为要审计的每种工作流类型激活工作流审计。

请注意,审计工作流将使性能下降。


示例 10–3 显示了创建计时审计事件所需的代码。要记录计时审计事件,必须将 op 参数设置为 auditWorkflow

还需要 action 参数,并且必须将其设置为以下值之一:

可以在 auditconfig.xml 中定义其他 action 参数。

示例:在工作流中启动和停止审计事件

示例 10–3 展示了如何在工作流中启用计时审计事件。要对工作流进行程序校验,应在工作流、进程和活动的开头和结尾添加 auditWorkflow 事件。

auditWorkflow 操作是在 com.waveset.session.WorkflowServices 中定义的。有关详细信息,请参见com.waveset.session.WorkflowServices 应用程序


示例 10–3 在工作流中启动计时审计事件


<Action application=’com.waveset.session.WorkflowServices’> 
<Argument name=’op’ value=’auditWorkflow’/> 
<Argument name=’action’ value=’StartWorkflow’/> 
</Action>

要在工作流中停止记录计时审计事件,请将示例 10–4 中的代码添加到工作流末尾附近的 pre-end 活动中。请注意,在对工作流或进程进行程序校验时,不允许在 end 活动中添加任何内容。必须创建 pre-end 活动以执行最终 auditWorkflow 事件,然后无条件地转换到 end 事件。


示例 10–4 在工作流中停止计时审计事件


<Action application=’com.waveset.session.WorkflowServices’> 
<Argument name=’op’ value=’auditWorkflow’/> <Argument name=’action’ value=’EndWorkflow’/> 
</Action>

计时审计事件存储哪些信息?

默认情况下,计时审计事件记录常规审计事件存储的大部分信息,其中包括以下属性:

属性  

描述  

WORKFLOW

所执行的工作流的名称 

PROCESS

所执行的当前进程的名称 

INSTANCEID

所执行的工作流的唯一实例 ID 

ACTIVITY

记录事件的活动 

MATCH

工作流实例中的唯一标识符 

上面的属性存储在 logattr 表中,它们来自于 auditableAttributesList。Identity Manager 还会检查是否定义了 workflowAuditAttrConds 属性。

可以在进程或工作流的单个实例中调用某些活动若干次。为了匹配特定活动实例的审计事件,Identity Manager 将工作流实例中的唯一标识符存储在 logattr 表中。

要在 logattr 表中为工作流存储其他属性,必须定义 workflowAuditAttrConds 列表,该列表被视为 GenericObjects 列表。如果在 workflowAuditAttrConds 列表中定义 attrName 属性,Identity Manager 将通过以下方法从代码内的对象中提取 attrName:先将 attrName 作为键,然后存储 attrName 值。所有键和值都是以大写值形式存储的。

审计配置

审计配置由一个或多个发布器和若干预定义的组构成。

审计组根据对象类型、操作和操作结果定义所有审计事件的子集。每个发布器都被分配了一个或多个审计组。默认情况下,系统信息库发布器将分配给所有审计组。

审计发布器会将审计事件传送给特定审计目的地。默认系统信息库发布器会将审计记录写入系统信息库。每个审计发布器均可以具有特定于实现的选项。可以为审计发布器分配文本格式化程序。(文本格式化程序提供审计事件的文本表示。)

审计配置 (#ID#Configuration:AuditConfiguration) 对象是在 sample/auditconfig.xml 文件中定义的。此配置对象具有一个扩展,该扩展是一个通用对象。

在顶层,此配置对象具有以下属性:

filterConfiguration 属性

filterConfiguration 属性列出了事件组,这些组用于使一个或多个事件通过事件过滤器。filterConfiguration 属性中列出的每个组都包含表 10–2 中列出的属性。

表 10–2 filterConfiguration 属性

属性 

类型 

描述 

groupName

字符串 

事件组名称 

displayName

字符串 

表示组名称的消息目录关键字 

enabled

字符串 

指示是否已启用或禁用整个组的布尔值标志。此属性是对过滤对象的优化。 

enabledEvents

列表 

描述组启用哪些事件的通用对象列表。必须列出事件以启用其日志记录。列出的每个对象都必须具有以下属性: 

  • objectType(字符串)– objectType 名称。

  • actions(列表)– 一个或多个操作的列表。

  • results(列表)– 一个或多个结果的列表。

示例 10–5 展示了默认资源管理组。


示例 10–5 默认资源管理组


<Object name=’Resource Management’> <Attribute name=’enabled’ value=’true’/> 
<Attribute name=’displayName’ value=’UI_RESOURCE_MGMT_GROUP_DISPLAYNAME’/> 
<Attribute name=’enabledEvents’> <List> <Object> <Attribute name=’objectType’ value=’Resource’/> 
<Attribute name=’actions’ value=’ALL’/> <Attribute name=’results’ value=’ALL’/> </Object> <Object> 
<Attribute name=’objectType’ value=’ResourceObject’/> <Attribute name=’actions’ value=’ALL’/> 
<Attribute name=’results’ value=’ALL’/> </Object> </List> </Attribute> </Object>

Identity Manager 提供了默认审计事件组。以下部分介绍了这些组及其启用的事件:

您可以在 Identity Manager 管理员界面的“审计配置”页中配置审计事件组(“配置”>“审计”)。有关说明,请参见配置审计组和审计事件

还可以在“审计配置”页中为每个组配置成功或失败的事件。此界面不支持添加或修改为组启用的事件,但可通过 Identity Manager 调试页(Identity Manager 的“调试”页)来执行此操作。


注 –

并非可以为审计事件组选择的每个操作都会生成日志记录。另外,选择“所有操作”选项并不表示所有列出的操作均可用于所有审计事件组。


帐户管理组

默认情况下将启用此组。

表 10–3 默认帐户管理事件组

类型  

操作  

加密密钥

所有操作 

Identity System 帐户

所有操作 

资源帐户

批准、创建、删除、禁用、启用、修改、拒绝、重命名、解除锁定 

工作流案例

结束活动、结束进程、结束工作流、启动活动、启动进程、启动工作流 

用户

批准、创建、删除、禁用、启用、修改、拒绝、重命名 

Identity System 之外的更改组

默认情况下将禁用此组。

表 10–4 Identity Manager 之外的更改事件组和事件

类型  

操作  

资源帐户

本机更改

遵循性管理组

默认情况下将启用此组。

表 10–5 默认遵循性管理组事件

类型  

操作  

审计策略

所有操作 

访问扫描

所有操作 

遵循性违规

所有操作 

数据导出器

所有操作 

用户权利

已批准证明者、已拒绝证明者、已请求修正、已请求重新扫描、终止 

访问查看工作流

所有操作 

修正工作流?

所有操作 

配置管理组

默认情况下将启用此组。

表 10–6 默认配置管理事件组

类型  

操作  

配置

所有操作 

用户表单

所有操作 

规则

所有操作 

电子邮件模板

所有操作 

登录配置

所有操作 

策略

所有操作 

Xml 数据

导入 

日志

所有操作 

事件管理组

默认情况下将启用此组。

表 10–7 默认事件管理事件组

类型  

操作  

电子邮件

通知 

测试通知

通知 

登录/注销组

默认情况下将启用此组。

表 10–8 默认 Identity Manager 登录/注销事件组

类型  

操作  

用户

证书到期、锁定、登录、注销、解除锁定、用户名恢复 

密码管理组

默认情况下将启用此组。

表 10–9 默认密码管理事件组和事件

类型  

操作  

资源帐户 

更改密码、重设密码 

资源管理组

默认情况下将启用此组。

表 10–10 默认资源管理事件组和事件

类型  

操作  

资源

所有操作 

资源对象

所有操作 

资源表单

所有操作 

资源操作

所有操作 

属性解析

所有操作 

工作流案例

结束活动、结束进程、结束工作流、启动活动、启动进程、启动工作流 

角色管理组

默认情况下将禁用此组。

表 10–11 默认角色管理事件组和事件

类型  

操作  

角色

所有操作 

安全管理组

默认情况下将启用此组。

表 10–12 默认安全管理事件组和事件

类型  

操作  

权能

所有操作 

加密密钥

所有操作 

组织

所有操作 

管理员角色

所有操作 

服务提供者 组

默认情况下将启用此组。

表 10–13 服务提供者 事件组和事件

类型  

操作  

目录用户

质询响应、创建、删除、修改、操作后的标注、操作前的标注、更新验证答案、用户名恢复 

任务管理组

默认情况下将禁用此组。

表 10–14 任务管理事件组和事件

类型  

操作  

任务实例

所有操作 

任务定义

所有操作 

任务进度

所有操作 

任务结果

所有操作 

置备任务

所有操作 

extendedTypes 属性

可以审计添加到 com.waveset.object.Type 类的每种新类型。必须为新类型分配唯一的双字符数据库键,该键将存储在数据库中。所有新类型将添加到不同的审计报告界面。必须将要记录到数据库而无需过滤的每种新类型添加到审计事件组 enabledEvents 属性(如有关 enabledEvents 属性的内容所述)中。

在某些情况下,您可能要审计不具有关联 com.waveset.object.Type 的项目,或者您要更为细化地表示现有类型。

例如,WSUser 对象在系统信息库中存储用户的所有帐户信息。审计进程并未将每个事件都标记为 USER 类型,而是将 WSUser 对象分割为两种不同的审计类型(资源帐户和 Identity Manager 帐户)。以这种方式分割对象可以更容易地在审计日志中查找特定帐户信息。

通过添加到 extendedObjects 属性来添加扩展审计类型。每个扩展对象必须具有下表中列出的属性。

表 10–15 扩展对象属性

参数 

类型 

描述 

name

字符串 

类型的名称,在构建 AuditEvents 时和事件过滤期间使用。 

displayName

字符串 

表示类型名称的消息目录关键字。 

logDbKey

字符串 

在日志表中存储此对象时要使用的双字符数据库键。有关保留的值,请参见审计日志数据库映射

supportedActions

列表 

对象类型支持的操作。在用户界面中创建审计查询时将使用此属性。如果此值为 null,则所有操作将显示为针对此对象类型查询的可能值。 

mapsToType

字符串 

(可选)映射到此类型的 com.waveset.object.Type 的名称(如果适用)。尝试解析对象组织成员资格(如果尚未在事件上指定)时使用此属性。

organizationalMembership

列表 

(可选)组织 ID 的默认列表,如果此类型的事件尚不具有已分配的组织成员资格,则应将这些事件置于此列表中。 

所有客户特定的键应以 # 符号开头,以防止添加新的内部键时出现重复的键。

示例 10–6 展示了扩展类型的 Identity Manager 帐户。


示例 10–6 扩展类型的 Identity Manager 帐户


<Object name=’LighthouseAccount’> <Attribute name=’displayName’ value=’LG_LIGHTHOUSE_ACCOUNT’/> 
<Attribute name=’logDbKey’ value=’LA’/> <Attribute name=’mapsToType’ value=’User’/> 
<Attribute name=’supportedActions’> <List> <String>Disable</String> <String>Enable</String> 
<String>Create</String> <String>Modify</String> <String>Delete</String> <String>Rename</String> 
</List> </Attribute> </Object>

extendedActions 属性

通常,审计操作会映射到 com.waveset.security.Right 对象。当添加新 Right 对象时,必须指定唯一的双字符 logDbKey,它将存储在数据库中。您可能会遇到没有权限符合必须审计的特定操作的情况。这时,可以通过将操作添加到 extendedActions 属性中的对象列表来扩展操作。

每个 extendedActions 对象必须包括表 10–16 中列出的属性。

表 10–16 extendedAction 属性

属性 

类型 

描述 

name

字符串 

操作的名称,在构建 AuditEvents 时和事件过滤期间使用。 

displayName

字符串 

表示操作名称的消息目录关键字。 

logDbKey

字符串 

在日志表中存储此操作时要使用的双字符数据库键。 

有关保留的值,请参见审计日志数据库映射

所有客户特定的键应以 # 符号开头,以防止添加新的内部键时出现重复的键。

表 10–16 展示了如何添加注销操作。


示例 10–7 添加注销操作


<Object name=’Logout’> <Attribute name=’displayName’ value=’LG_LOGOUT’/> 
<Attribute name=’logDbKey’ value=’LO’/> </Object>

extendedResults 属性

除可以扩展审计类型和操作外,还可以添加结果。默认情况下,有两种结果:成功失败。可以通过将它们添加到 extendedResults 属性中的对象列表来扩展结果。

每个 extendedResults 对象必须包括表 10–17 中描述的属性。

表 10–17 extendedResults 属性

属性 

类型 

描述 

name

字符串 

结果的名称,在设置 AuditEvents 的状态时和事件过滤期间使用。 

displayName

字符串 

表示结果名称的消息目录关键字。 

logDbKey

字符串 

在日志表中存储此结果时要使用的单字符数据库键。有关保留的值,请参见标题为数据库键的部分。 

所有客户特定的键都应使用 0–9 范围内的数字,以防止添加新的内部键时出现重复的键。

publishers 属性

publishers 列表中的每个项目均为通用对象。每个 publishers 对象都具有以下属性。

表 10–18 publishers 属性

属性 

类型 

描述 

class

字符串 

发布器类的名称。 

displayName

字符串 

表示发布器名称的消息目录关键字。 

description

字符串 

发布器的描述。 

filters

列表 

分配给此发布器的审计组列表。 

formatter

字符串 

文本格式化程序(如果有)的名称。 

options

列表 

发布器选项列表。这些选项是特定于发布器的;列表中的每个项目均为 PublisherOption 的映射表示。请参见 sample/auditconfig.xml 获得示例。

数据库模式

Identity Manager 系统信息库中有两个用于存储审计数据的表:

本节中将首先讨论这些表。

当审计日志数据超过为上述表指定的列长度限制时,Identity Manager 将截断数据以使该数据适合列长度。审计日志截断中介绍了审计日志截断。

审计日志中的少数几列具有可配置的列长度限制。要了解有关这些列的信息以及如何更改其长度限制,请参见审计日志配置

waveset.log

本节介绍了 waveset.log 表中的列名称和数据类型。数据类型是根据 Oracle 数据库定义获得的,在其他数据库中可能略微有所变化。有关所有受支持数据库的数据模式值列表,请参见附录 B

一些列值在数据库中存储为键,以便优化空间。有关键的定义,请参见标题为审计日志数据库映射的一节。

waveset.logattr

waveset.logattr 表用于存储每个事件的组织成员资格的 ID,这可以按组织限定审计日志的范围。

审计日志截断

当审计日志数据的一个或多个列超过指定的列长度限制时,将截断列数据以使该数据适合列长度。具体来说,将数据截断为指定限制,减去三个字符。然后,在列数据末尾附加省略号 (...) 以表示发生截断。

此外,还会在该审计记录的 NAME 列前面添加字符串 #TRUNCATED#,以便于查询截断的记录。


注 –

在计算消息的截断位置时,Identity Manager 将使用 UTF–8 编码。如果配置使用 UTF–8 以外的编码,截断的数据仍可能会超过数据库中的实际列大小。如果发生这种情况,审计日志中将不会显示截断的消息,并且系统日志中将写入错误。


审计日志配置

可以配置审计日志中的某些列以在系统信息库中存储大量数据。

调整列长度限制

审计日志中的一些列具有可配置的列长度限制。这些列包括:


注 –

有关审计日志列的描述,请参见数据库模式


可通过编辑 RepositoryConfiguration 对象来更改列长度限制。有关编辑 RepositoryConfiguration 对象的说明,请参见编辑 Identity Manager 配置对象

需要重新启动服务器以使新值生效。

RepositoryConfiguration 对象中的列长度限制设置决定了可以在列中存储的最大数据量。如果要存储的数据超过这些设置,Identity Manager 将会截断数据。有关详细信息,请参见审计日志截断

如果增加 RepositoryConfiguration 对象中的列长度设置,还要确保数据库中的列大小设置至少与 RepositoryConfiguration 对象中配置的大小一样。

从审计日志中删除记录

应定期截断审计日志,以使其不致变得太大。可以使用审计日志维护任务调度从审计日志中删除旧记录的任务。

  1. 在管理员界面中,单击“服务器任务”->“管理进度表”。

  2. 在“可调度的任务”部分中,单击“审计日志维护任务”。

    将打开“创建新的审计日志维护任务任务进度表”页。

  3. 填写表单,然后单击“保存”。

使用自定义审计发布器

Identity Manager 可以将审计事件提交给自定义审计发布器。

提供了以下自定义发布器:

如果要创建您自己的发布器,请参见开发自定义审计发布器

本节中的信息包含以下主题:

Procedure启用自定义审计发布器

自定义审计发布器是从“审计配置”页中启用的。

  1. 在管理员界面中,单击主菜单中的“配置”,然后单击次级菜单中的“审计”。

    将打开“审计配置”页。

  2. 选择页面底部的“使用自定义发布器”选项。

    将打开一个表,其中列出了当前配置的审计发布器。

  3. 要配置新的审计发布器,请从“新建发布器”下拉菜单中选择自定义发布器类型。

    填写“配置新审计发布器”表单。单击“确定”。

  4. 要点!请单击“保存”以保存新的审计发布器!

控制台、文件、JDBC 和执行脚本的发布器类型

要启用控制台、文件、JDBC 或执行脚本的审计发布器,请按照启用自定义审计发布器中的步骤进行操作。从“新建发布器”下拉菜单中选择相应的发布器类型。

填写“配置新审计发布器”表单。如果存在表单方面的问题,请参阅 i-Helps 和联机帮助。

JMS 发布器类型

可以使用 JMS 审计日志自定义发布器将审计事件记录发布到 JMS(Java Message Service,Java 消息服务)队列或主题中。

为什么使用 JMS?

通过发布到 JMS,可以在具有多个 Identity Manager 服务器的环境中提供更大的关联灵活性。此外,还可以在限制使用文件审计日志发布器的环境中使用 JMS,例如,在服务器运行时客户机报告工具无法访问日志的 Windows 环境中。

JMS 为具有多个服务器的环境提供了很多好处:

点对点或者发布和订阅?

Java Message System 提供了两种消息传送模型:点对点或队列模型,以及发布和订阅或主题模型。Identity Manager 支持这两种模型。

在点对点模型中,生成方将消息发布到特定队列,而使用方从队列中读取消息。此处,生成方知道该消息的目的地,并将该消息直接发布到使用方的队列。

点对点模型具有以下特征:

另一方面,发布和订阅模型支持将消息发布到特定消息主题。零个或多个订阅者可以登记对接收特定消息主题的消息的意向。在此模型中,发布者和订阅者均不了解对方。一个贴切的比喻是,此模型就像一个匿名布告栏。

发布和订阅模型具有以下特征:


注 –

有关 JMS 的详细信息,请访问 http://www.sun.com/software/products/message_queue/index.xml


配置 JMS 发布器类型

JMS 发布器将审计事件设置为 JMS TextMessage 格式。然后,根据配置情况将这些 TextMessage 发送到队列或主题。可以根据配置情况将文本消息的格式设置为 XML 或通用日志记录格式 (Universal Logging Format, ULF)。

要启用 JMS 发布器类型,请按照启用自定义审计发布器中的步骤进行操作,然后从“新建发布器”下拉菜单中选择 "JMS"。

要配置 JMS 发布器类型,请填写“配置新审计发布器”表单。如果存在表单方面的问题,请参阅 i-Helps 和联机帮助。

JMX 发布器类型

JMX 审计日志发布器发布审计事件,以使 JMX (Java Management Extensions) 客户机能够监视 Identity Manager 审计日志活动。

什么是 JMX?

Java Management Extensions (JMX) 是一项 Java 技术,用于管理和/或监视应用程序、系统对象、设备和面向服务的网络。管理/监视的实体由称为 MBean(受管 Bean)的对象表示。

Identity Manager 的 JMX 发布器实现

Identity Manager 的 JMX 审计日志发布器监视审计日志中的事件。在检测到事件时,JMX 发布器将使用 MBean 封装审计事件记录,并且还会更新临时历史记录(保留在内存中)。对于每个事件,将向 JMX 客户机发送单独的较小通知。如果对该事件感兴趣,JMX 客户机可以向封装审计事件的 MBean 查询其他信息。


注 –

有关审计事件记录的信息,请参见 com.waveset.object.AuditEvent Javadoc。开发自定义审计发布器中介绍的 REF 工具包中提供了该 Javadoc。


要从正确的 MBean 中检索信息,需要历史记录序列号。此号码包含在事件通知中。

每个事件通知包含以下信息:

Procedure配置 JMX 发布器类型

  1. 要启用 JMX 发布器类型,请按照启用自定义审计发布器中的步骤进行操作,然后从“新建发布器”下拉菜单中选择 "JMX"。

  2. 要配置 JMX 发布器类型,请填写“配置新审计发布器”表单。如果存在表单方面的问题,请参阅 i-Helps 和联机帮助。

    • 发布器名称。为 JMX 审计事件发布器键入唯一名称。

    • 历史记录限制。根据需要,更改默认值以指定发布器应在内存中保留的事件项目数。(默认值为 100。)

  3. 单击“测试”以验证发布器名称是否为可接受的名称。

  4. 单击“确定”。将关闭“配置新审计发布器”表单。

  5. 要点!单击“保存”。

使用 JMX 客户机查看审计事件

可以使用 JMX 客户机来查看 JMX 发布器。JDK 1.5 中包含的 JConsole 用于创建以下屏幕捕获。

如果使用 JConsole,请选择连接到进程以查看 IDM:type=AuditLog MBean。有关配置 JConsole 以用作 JMX 客户机的信息,请参见《Sun Identity Manager 8.1 System Administrator’s Guide》中的“Viewing JMX Data”

在 JConsole 中,单击“通知”选项卡可查看审计事件。记下通知中的序列号。在 MBean 中查询其他信息时需要使用序列号。

图 10–1 在 JConsole 中查看 JMX 审计事件通知

该图展示了如何在 JConsole 中查看 JMX 审计事件通知

在 MBean 中查询其他信息

在 JConsole 中,单击“操作”选项卡。使用通知中的序列号从 MBean 中查询事件详细信息。每个操作都带有 'get' 前缀,并且唯一的参数是“序列”号。

图 10–2 在 JConsole 中从 MBean 查询其他信息

该图展示了如何从 MBean 查询有关事件的信息

实际上,MBean 是到 com.waveset.object.AuditEvent 类的一一映射。表 10–19 为 MBean 提供的每个属性/操作提供了说明。

表 10–19 MBeanInfo 属性/操作描述

属性/操作 

描述 

AccountAttributesBlob

已更改的属性的列表 

AccountId

与事件关联的帐户 ID 

Action

在事件期间执行的操作 

AuditableAttributes

可审计属性 

ErrorString

任何错误字符串 

Interface

审计界面 

MemberObjectGroupRefs

成员对象组引用 

ObjectName

对象名 

ObjectType

对象类型 

OverflowAttributes

所有溢出属性 

Parameters

所有参数 

Reason

事件原因 

ResourceName

与事件关联的资源 

RoleName

与事件关联的角色 

SubjectName

与事件关联的用户或服务 

Server

从中触发事件的服务器名称。 

Status

审计事件的状态。 

Timestamp

审计事件的日期/时间 

在 JConsole 中,单击“属性”选项卡。属性带有 Current 前缀,表示属性包含发送到系统的最新审计事件。

图 10–3 在 JConsole 中查看 MBean 属性

该图展示了如何在 JConsole 中查看 MBean 属性

开发自定义审计发布器

本节说明了如何使用 Java 创建新的自定义审计发布器。

随 Identity Manager 提供的控制台、文件和 JDBC 自定义发布器实现了 AuditLogPublisher 接口。可以在 REF 工具包中找到这些发布器的源代码。也可以在 REF 工具包中找到 Javadoc 格式的接口文档。(有关接口的详细信息,请参阅 Javadoc。)


注 –

REF(Resource Extension Facility,资源扩充工具)工具包是在产品 CD 上的 /REF 目录中提供的,或者是随安装映像提供的。


建议开发者扩展 AbstractAuditLogPublisher 类。此类可以解析配置并确保已将所有必需选项提供给发布器。(请参见 REF 工具包中的发布器示例。)

发布器必须具有一个无参数的构造函数。

发布器生命周期

    以下步骤介绍发布器的生命周期:

  1. 实例化对象。

  2. 使用 setFormatter() 方法设置格式化程序(如果有)。

  3. 使用 configure( Map) 方法提供选项。

  4. 使用 publish( Map, LoggingErrorHandler) 方法发布事件。

  5. 使用 shutdown() 方法终止发布器。

Identity Manager 启动以及更新审计配置时都执行步骤 1-3。如果调用关闭之前没有生成审计事件,则不会执行步骤 4。

在同一发布器对象上仅调用一次 configure(Map)。(发布器无需准备运行中的配置更改)。更新审计配置后,将先关闭当前发布器,然后再创建新发布器。

步骤 3 中的 configure() 方法可能会抛出 WavesetException。在这种情况下,将忽略发布器,并且对于此发布器不再会执行其他调用。

发布器配置

发布器可以没有选项,也可以具有多个选项。getConfigurationOptions() 方法将返回发布器支持的选项列表。这些选项可以使用 PublisherOption 类(有关此类的详细信息,请参见 Javadoc)进行封装。审计配置查看器在构建发布器的配置接口时将调用此方法。

Identity Manager 将在服务器启动时以及审计配置更改之后使用 configure( Map) 方法配置发布器。

开发格式化程序

REF 工具包包括以下格式化程序的源代码:

格式化程序必须实现 AuditRecordFormatter 接口。此外,格式化程序必须具有一个无参数的构造函数。有关详细信息,请参阅 REF 工具包中的 Javadoc。

注册发布器/格式化程序

#ID#Configuration:SystemConfiguration 对象的审计属性列出了所有已注册的发布器和格式化程序。仅这些发布器和格式化程序可在审计配置用户界面中使用。