Sun Identity Manager 8.1 业务管理员指南

通过工作流创建审计事件

默认情况下,仅对批准工作流进行程序校验以生成审计记录。本节介绍了如何使用 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 值。所有键和值都是以大写值形式存储的。