Sun Java[TM] System Identity Manager 7.1 管理 |
第 12 章
审计日志记录本章介绍 Sun Java System Identity Manager 审计系统如何记录事件。信息通过以下方式进行组织:
概述Identity Manager 审计的目的是记录操作人员、操作内容、操作时间以及操作的 Identity Manager 对象。
审计事件由一个或多个发布器处理。默认情况下,Identity Manager 使用系统信息库发布器将审计事件记录在系统信息库中。借助审计组,过滤可允许管理员选择审计事件的子集进行记录。您可为每个发布器分配最初已启用的一个或多个审计组。
注
有关监视和管理用户违规的信息,请参见第 11 章“身份审计”。
Identity Manager 对哪些项目进行审计?大多数默认审计是通过内部 Identity Manager 组件执行的。但是,有些接口允许从工作流或 Java 代码中生成事件。
默认的 Identity Manager 审计方法主要针对以下四个领域:
创建事件虽然 Identity Manager 处理内部审计,但在某些情况下,您可能要从自定义工作流中记录审计事件。
从工作流中审计
使用 com.waveset.session.WorkflowServices 应用程序可以从任何工作流进程中生成审计事件。表 12-1 介绍可用于此应用程序的参数。
有关默认对象、操作和状态名称的列表,请参阅表 12-18。
示例
代码示例 12-1 说明了简单的工作流活动。它显示了事件的生成,该事件将记录由 ResourceAdministrator 执行的名为 ADSIResource1 的资源删除活动:
代码示例 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
描述组启用哪些事件的通用对象列表。必须列出事件以启用其日志记录。列出的每个对象都必须具有以下属性:
代码示例 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-5 默认配置管理事件组
类型
操作
配置
所有操作
UserForm
所有操作
Rule
所有操作
EmailTemplate
所有操作
LoginConfig
所有操作
策略
所有操作
XMLDATA
导入
日志
所有操作
Identity Manager 登录/注销
默认情况下将启用此组。
密码管理
默认情况下将启用此组。
资源管理
默认情况下将启用此组。
角色管理
默认情况下将禁用此组。
安全管理
默认情况下将启用此组。
任务管理
默认情况下将禁用此组。
Identity Manager 之外的更改
默认情况下将禁用此组。
Service Provider Edition
默认情况下将启用此组。
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“审计日志数据库模式”。
一些列值在数据库中存储为键,以便优化空间。有关键的定义,请参见标题为日志数据库键的部分。
- objectType CHAR(2) - 表示正在进行审计的对象类型的双字符键。
- action CHAR(2) - 表示已执行的操作的双字符键。
- actionStatus CHAR(1) - 表示已执行操作的结果的单字符键。
- reason CHAR(2) - 用于在出现故障时描述 ReasonDenied 对象的双字符数据库键。ReasonDenied 是一个封装了消息目录条目的类,用于一般的故障(例如证书无效和权限不足)。
- actionDateTime VARCHAR(21) - 执行上述操作的日期和时间。以 GMT 时间存储此值。
- objectName VARCHAR(128) - 操作期间对其执行操作的对象的名称。
- resourceName VARCHAR(128) - 操作期间使用的资源名称(如果适用)。一些事件不会引用资源;但是,在许多情况下,将会提供更详细的信息来记录已在其中执行操作的资源。
- accountName VARCHAR(255) - 对其执行操作的帐户 ID(如果适用)。
- server VARCHAR(128) - 在其中执行操作的服务器(由事件记录程序自动分配)。
- message VARCHAR(255) - 任何与操作相关的本地化消息,包括诸如错误消息的消息。文本将进行本地化存储,因此不会被国际化。
- interface VARCHAR(50) - 从中执行操作的 Identity Manager 界面(如管理员、用户、IVR 或 SOAP 界面)。
- acctAttrChanges VARCHAR(4000) - 存储在创建和更新期间已更改的帐户属性。在创建或更新资源帐户或 Identity Manager 帐户对象期间将始终填充的属性更改字段。操作期间所有更改的属性都将作为字符串存储在此字段中。数据的格式为 NAME=VALUE NAME2=VALUE2。通过对名称或值执行 "contains" SQL 语句可以查询此字段。
代码示例 12-6 说明了 acctAttrChanges 列中的值:
代码示例 12-6 acctAttrChanges 列中的值
COMPANY="COMPANY" DEPARTMENT="DEPT" DESCRIPTION="DSMITH
DESCRIPTION" FAX NUMBER="5122222222" HOME ADDRESS="12282
MOCKINGBIRD LANE" HOME CITY="AUSTIN" HOME PHONE="5122495555"
HOME STATE="TX" HOME ZIP="78729" JOB TITLE="DEVELOPER"
MOBILE PHONE="5125551212" WORK PHONE="5126855555"
EMAIL="someone@somecompany.COM" EXPIREPASSWORD="TRUE"
FIRSTNAME="DANIEL" FULLNAME="DANIEL SMITH" LASTNAME="SMITH"
- acctAttr01label-acctAttr05label VARCHAR(50) - 这五个附加 NAME 槽是最多可以提升五个属性的列,这些属性将存储在各自的列中,而不存储在大的二进制大对象中。可以使用 "audit?" 设置从 "Resource Schema Configuration" 页中提升属性,此属性可用于数据挖掘。
- acctAttr01value-acctAttr05value VARCHAR(128) - 五个附加 VALUE 槽,最多可以提升五个属性,这些属性将存储在单独的列中,而不存储在二进制大对象列中。
- parm01label-parm05label VARCHAR(50) - 用于存储与事件相关的参数的五个槽。这些是客户端 IP 和会话 ID 的示例。
- parm01value-parm05value VARCHAR(128) - 用于存储与事件相关的参数的五个槽。这些是客户端 IP 和会话 ID 的示例。
- id VARCHAR(50) - 由 waveset.logattr 表中引用的系统信息库分配给每个记录的唯一 ID。
- name VARCHAR(128) - 所生成的分配给每个记录的名称。
waveset.logattr
waveset.logattr 表用于存储每个事件的组织成员资格的 ID,这可以按组织限定审计日志的范围。
日志数据库键对象类型、操作、操作状态和原因列都以键的形式存储在数据库中以节省空间。
对象类型、操作和结果
表 12-18 介绍以键的形式存储在数据库中的对象类型、操作和结果:
表 12-18 以键的形式存储的对象类型、操作和结果
对象类型名称
DbKey
操作名称
DbKey
结果名称
DbKey
Account
AN
批准
AP
成功
S
管理员
AD
绕过检验
BV
失败
F
AdminGroup
AG
取消协调
CR
Attribute Definition
AF
质询响应
CD
Application
AP
更改密码
CP
权能
US
创建
CT
配置
CN
连接
CO
搜索
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
策略
PO
加载
LD
Provisioning Task
PT
登录
LG
资源
RS
更新
MO
资源帐户
RA
退出
LO
Resource Form
RF
本机更改
NC
资源对象
RE
操作后
PT
RiskReportTask
RR
操作前
PE
Role
RL
置备
PV
Rule
RU
重置密码
RP
用户
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 审计日志记录都具有唯一的、基于服务器的序列号以及记录和序列号的加密散列。创建篡改检测报告时,其将扫描每个服务器的审计日志以查看是否:
配置防篡改日志记录
要配置防篡改日志记录,请执行以下步骤:
- 通过选择 Reports > New > Audit Log Tampering Report 创建篡改报告。
- "Define a Tampering Report" 页显示时(请参见图 12-1),请为报告输入一个标题,然后 Save 它。
图 12-1 配置审计日志篡改报告
还可以指定以下可选参数:
- 然后,选择 Configure > Audit 打开 "Audit Configuration" 页(如图 12-2 所示)。
图 12-2 防篡改审计日志记录配置
- 选择 Use Custom Publisher,然后单击 "Repository publisher" 链接。
- 选择 Enable tamper-resistant audit logs,然后单击 OK。
- 单击 Save 以保存设置。
可以再次关闭此选项,但未签名的条目将在审计日志篡改报告中进行标记,您必须重新配置报告才能忽略这些条目。
使用自定义发布器Identity Manager 可以将审计事件提交给自定义审计发布器。可使用以下自定义发布器:
可以在参考工具包中找到这些发布器的源代码。也可以在参考工具包中找到 Javadoc 格式的接口文档。
开发发布器
所有发布器都可以实现 AuditLogPublisher 接口。(有关接口的详细信息,请参阅 Javadoc)。建议开发者扩展 AbstractAuditLogPublisher 类。此类可以解析配置并确保已将所有必需选项提供给发布器。(请参见参考工具包中的发布器示例)。
发布器必须具有一个无参数的构造函数。
生命周期
以下步骤介绍发布器的生命周期:
Identity Manager 启动以及更新审计配置时都执行步骤 1-3。如果调用关闭之前没有生成审计事件,则不会执行步骤 4。
在同一发布器对象上 configure(Map) 仅调用一次。(发布器无需准备运行中的配置更改)。更新审计配置后,将先关闭当前发布器,然后再创建新发布器。
步骤 3 中的 configure() 方法可能会抛出 WavesetException。在这种情况下,将忽略发布器,并且对于此发布器不再会执行其他调用。
配置
发布器可以没有选项,也可以具有多个选项。getConfigurationOptions() 方法将返回发布器支持的选项列表。这些选项可以使用 PublisherOption 类(有关此类的详细信息,请参见 Javadoc)进行封装。审计配置查看器在构建发布器的配置接口时将调用此方法。
Identity Manager 将在服务器启动时以及审计配置更改之后使用 configure(Map) 方法配置发布器。
开发格式化程序
参考工具包包括以下格式化程序的源代码:
格式化程序必须实现 AuditRecordFormatter 接口。此外,发布器必须具有一个无参数的构造函数。有关详细信息,请参阅引用工具包中的 Javadoc。
注册发布器/格式化程序
#ID#Configuration:SystemConfiguration 对象的审计属性列出了所有已注册的发布器和格式化程序。仅这些发布器和格式化程序可在审计配置用户界面中使用。