Sun Java logo     上一页      目录      索引      下一页     

Sun logo
Sun Java™ System Identity Manager 7.0 管理指南 

第 12 章
审计日志记录

本章介绍 Sun Java™ System Identity Manager 审计系统如何记录事件。信息通过以下方式进行组织:


概述

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

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


有关监视和管理用户违规的信息,请参见“审计查看和遵循性管理”。



Identity Manager 对哪些项目进行审计?

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

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


创建事件

虽然 Identity Manager 处理内部审计,但在某些情况下,您可能要从自定义工作流中记录审计事件。

从工作流中审计

使用 com.waveset.session.WorkflowServices 应用程序可以从任何工作流进程中生成审计事件。表 12-1 介绍可用于此应用程序的参数。

表 12-1  com.waveset.session.WorkflowServices 的参数

参数

类型

描述

op

字符串

对 WorkflowServices 执行的操作。必须设置为审计。

type

字符串

正在进行审计的对象类型名称。

action

字符串

已执行操作的名称。

status

字符串

指定操作的状态名称。

name

字符串

受指定操作影响的对象的名称。

资源

字符串

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

accountId

字符串

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

error

字符串

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

reason

字符串

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

属性

映射

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

参数

映射

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

organizations

List

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

originalAttributes

映射

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

有关默认对象、操作和状态名称的列表,请参阅表 12-18

示例

代码示例 12-1 说明了简单的工作流活动。它显示了事件的生成,该事件将记录由 ResourceAdministrator 执行的名为 ADSIResource1 的资源删除活动:

代码示例 12-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>

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

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

代码示例 12-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>


审计配置

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

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

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

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

filterConfiguration

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

表 12-2  filterConfiguration 属性

属性

类型

描述

groupName

字符串

事件组名称

displayName

字符串

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

enabled

字符串

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

enabledEvents

List

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

  • objectType(字符串)— 对 objectType 命名。
  • actions(列表)— 一个或多个操作的列表。
  • results(列表)— 一个或多个结果的列表。

代码示例 12-3 说明了默认资源管理组。

代码示例 12-3  默认资源管理组

<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 管理界面 (configure/auditeventconfig.jsp) 的 "Audit Events" 页中配置每个组。此页允许您为每个组配置成功或失败的事件。此界面不支持添加或修改组的 enabledEvents,但可以通过使用 Identity Manager 调试页来执行此操作。

以下部分介绍它们启用的默认事件组和事件。

帐户管理

默认情况下将启用此组。

表 12-3  默认帐户管理事件组

类型

操作

资源帐户

创建、更新、删除、启用、禁用、拒绝、批准、重命名

Identity Manager 帐户

创建、更新、删除、启用、禁用、重命名

遵循性管理

默认情况下将启用此组。

表 12-4  默认遵循性管理组事件

类型

操作

审计策略

所有操作

遵循性违规

所有操作

修正工作流

所有操作

配置管理

默认情况下将启用此组。

表 12-5  默认配置管理事件组

类型

操作

配置

所有操作

用户表单

所有操作

规则

所有操作

电子邮件模板

所有操作

登录配置

所有操作

策略

所有操作

XMLDATA

导入

日志

所有操作

Identity Manager 登录/注销

默认情况下将启用此组。

表 12-6  默认 Identity Manager 登录/注销事件组

类型

操作

用户

登录、注销、证书到期

管理员

登录、注销、证书到期

密码管理

默认情况下将启用此组。

表 12-7  默认密码管理事件组和事件

类型

操作

资源帐户

更改/重设密码

资源管理

默认情况下将启用此组。

表 12-8  默认资源管理事件组和事件

类型

操作

资源

所有操作

资源对象

所有操作

资源表单

所有操作

资源操作

所有操作

属性解析

所有操作

角色管理

默认情况下将禁用此组。

表 12-9  默认角色管理事件组和事件

类型

操作

角色

所有操作

安全管理

默认情况下将启用此组。

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

类型

操作

对象组

所有操作

管理员组

所有操作

管理员

所有操作

加密密钥

所有操作

任务管理

默认情况下将禁用此组。

表 12-11  任务管理事件组和事件

类型

操作

任务实例

所有操作

任务定义

所有操作

任务进度表

所有操作

任务结果

所有操作

置备任务

所有操作

Identity Manager 之外的更改

默认情况下将禁用此组。

表 12-12  Identity Manager 事件组和事件之外的更改

类型

操作

资源帐户

本机更改

Service Provider Edition

默认情况下将启用此组。

表 12-13  Service Provider Edition 事件组和事件

类型

操作

IDMXUser

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

extendedTypes

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

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

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

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

表 12-14  扩展对象属性

参数

类型

描述

name

字符串

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

displayName

字符串

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

logDbKey

字符串

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

supportedActions

List

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

mapsToType

字符串

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

organizationalMembership

List

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

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

代码示例 12-4 说明了扩展类型的 Identity Manager 帐户。

代码示例 12-4  扩展类型的 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 对象必须包括表 12-15 中列出的属性。

表 12-15  extendedAction 属性

属性

类型

描述

name

字符串

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

displayName

字符串

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

logDbKey

字符串

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

有关保留的值,请参见“日志数据库键”。

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

代码示例 12-5 说明了如何添加退出操作。

代码示例 12-5  添加退出操作

<Object name='Logout'>

  <Attribute name='displayName' value='LG_LOGOUT'/>

  <Attribute name='logDbKey' value='LO'/>

</Object>

extendedResults

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

每个 extendedResults 对象必须包括表 12-16 中描述的属性。

表 12-16  extendedResults 属性

属性

类型

描述

name

字符串

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

displayName

字符串

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

logDbKey

字符串

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

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

发布器

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

表 12-17  发布器属性

属性

类型

描述

字符串

发布器类的名称。

displayName

字符串

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

描述

字符串

发布器的描述。

filters

List

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

formatter

字符串

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

options

List

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


数据库模式

在 Identity Manager 数据库中有两个表用于存储审计数据:

waveset.log

本部分列出了 waveset.log 表中的列名称和数据类型。数据类型是根据 Oracle 数据库定义获得的,在其他数据库中可能略微有所变化。有关所有受支持数据库的数据模式值列表,请参见附录 C“审计日志数据库模式”

一些列值在数据库中存储为键,以便优化空间。有关键的定义,请参见标题为“日志数据库键”的部分。

waveset.logattr

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


日志数据库键

对象类型、操作、操作状态和原因列都以键的形式存储在数据库中以节省空间。

对象类型、操作和结果

表 12-18 介绍以键的形式存储在数据库中的对象类型、操作和结果:

表 12-18  以键的形式存储的对象类型、操作和结果

对象类型名称

DbKey

操作名称

DbKey

结果名称

DbKey

Account

AN

批准

AP

成功

S

Administrator

AD

绕过检验

BV

失败

F

AdminGroup

AG

取消协调

CR

 

 

Attribute Definition

AF

质询响应

CD

 

 

Application

AP

更改密码

CP

 

 

Capability

US

创建

CT

 

 

Configuration

CN

连接

CO

 

 

Discovery

DS

删除

DL

 

 

EmailTemplate

ET

取消置备

DP

 

 

Extract

ER

禁用

DS

 

 

ExtractTask

EX

断开

DC

 

 

Identity Manager Account

LA

启用

EN

 

 

IDMXUser

UX

执行

LN

 

 

LoadConfig

LD

导出

EP

 

 

LoadTask

LT

导入

IM

 

 

LoginConfig

LC

List

LI

 

 

Policy

PO

加载

LD

 

 

Provisioning Task

PT

登录

LG

 

 

Resource

RS

更新

MO

 

 

Resource Account

RA

退出

LO

 

 

Resource Form

RF

本机更改

NC

 

 

Resource Object

RE

操作后

PT

 

 

RiskReportTask

RR

操作前

PE

 

 

Role

RL

置备

PV

 

 

Rule

RU

重设密码

RP

 

 

User

US

重新置备

RV

 

 

TaskDefinition

TD

拒绝

RJ

 

 

TaskInstance

TI

终止

TR

 

 

TaskSchedule

TS

用户名恢复

UR

 

 

TaskTemplate

TT

 

 

 

 

TaskResult

TR

 

 

 

 

UserForm

UF

 

 

 

 

WorkItem

WI

 

 

 

 

XMLDATA

XD

 

 

 

 

原因

表 12-19 介绍以键的形式存储在数据库中的原因:

表 12-19  以键的形式存储的原因

原因名称

英语文本

DbKey

策略违规

策略 {0} 违规: {1}

PV

证书无效

证书无效

CR

权限不足

权限不足

IP

数据库访问失败

数据库访问失败

DA

帐户已禁用

帐户已禁用

DI


防止审计日志篡改

可以配置 Identity Manager 以防止以下形式的审计日志被篡改:

所有 Identity Manager 审计日志记录都具有唯一的、基于服务器的序列号以及记录和序列号的加密散列。创建篡改检测报告时,其将扫描每个服务器的审计日志以查看是否:

配置防篡改日志记录

要配置防篡改日志记录,请执行以下步骤:

  1. 通过选择 Reports > New > Audit Log Tampering Report 创建篡改报告。
  2. "Define a Tampering Report" 页显示时(请参见图 12-1),请为报告输入一个标题,然后 Save 它。
  3. 图 12-1  配置审计日志篡改报告
    配置审计日志篡改报告

    还可以指定以下可选参数:

    • Report Summary — 输入报告的描述性摘要。
    • Starting sequence for server '<server_name>' — 输入服务器的启动序列号。
    • 此选项使您可以无需将旧日志条目标记为篡改即可将其删除,并且可以出于性能原因限制报告的范围。
    • Email Report — 启用此选项可以通过电子邮件将报告结果发送到指定的电子邮件地址。
    • 选择此选项时,页面将刷新并提示输入电子邮件地址。但是,请谨记,通过电子邮件传送文本内容是不安全的,敏感信息(例如帐户 ID 或帐户历史)可能会泄漏。
    • Override default PDF options — 选择此选项可以覆盖此报告的默认 PDF 选项。
    • Organizations — 选择对此报告应具有访问权限的组织。
  4. 然后,选择 Configure > Audit 打开 "Audit Configuration" 页(如图 12-2 所示)。
  5. 图 12-2  防篡改审计日志记录配置
    使用

  6. 选择 Use Custom Publisher,然后单击 "Repository publisher" 链接。
  7. 选择 Enable tamper-resistant audit logs,然后单击 OK
  8. 单击 Save 以保存设置。
  9. 可以再次关闭此选项,但未签名的条目将在审计日志篡改报告中进行标记,您必须重新配置报告才能忽略这些条目。


使用自定义发布器

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

可以在参考工具包中找到这些发布器的源代码。也可以在参考工具包中找到 Javadoc 格式的接口文档。

开发发布器

所有发布器都可以实现 AuditLogPublisher 接口。(有关接口的详细信息,请参阅 Javadoc)。建议开发者扩展 AbstractAuditLogPublisher 类。此类可以解析配置并确保已将所有必需选项提供给发布器。(请参见参考工具包中的发布器示例)。

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

生命周期

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

  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) 方法配置发布器。

开发格式化程序

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

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

注册发布器/格式化程序

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



上一页      目录      索引      下一页     


文件号码: 820-0140。   版权所有 2006 Sun Microsystems, Inc. 保留所有权利。