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 稽核方法主要由四個主要區域執行:
- [Provisioner] — 稱為佈建程式的內部元件可產生稽核事件。
- [View Handlers] — 在視圖架構中,視圖處理程式需要產生稽核記錄。視圖處理程式應永遠在建立或修改物件時進行稽核。
- [Session] — 階段作業方法 (例如 checkinObject、createObject、runTask、login 和 logout) 會在完成可稽核作業後建立稽核記錄。該方法的大部分都將推入視圖處理程式中。
- [Workflow] — 依預設,僅將核准工作流程配置為產生稽核記錄。當核准或拒絕請求時,它們會產生稽核事件。稽核記錄程式透過 com.waveset.session.WorkflowServices 應用程式連接工作流程功能。
建立事件雖然 Identity Manager 可處理內部稽核,但是在某些情況下,您可能希望從自訂工作流程記錄稽核事件。
從工作流程稽核
使用 com.waveset.session.WorkflowServices 應用程式可從任何工作流程程序中產生稽核事件。表 12-1 說明了適用於此應用程式的引數。
請參閱表 12-18,以取得預設物件、動作和狀態名稱的清單。
範例
代碼範例 12-1 說明了一個簡單工作流程作業。它顯示了事件產生過程,該事件將記錄由 ResourceAdministrator 執行之名為 ADSIResource1 的資源刪除作業:
代碼範例 12-2 顯示了如何將特定屬性增加至某個工作流程,該工作流程可追蹤核准程序中每個使用者套用至顆粒性層級的變更。通常,此增加按照請求使用者輸入的 ManualAction 進行。
根據實際執行核准的人員,在表單和工作流程 (如果從核准表核准) 中設定 ACTUAL_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>
稽核配置稽核配置由一個或多個發佈程式以及數個預先定義的群組組成。
稽核群組可根據物件類型、動作和動作結果定義所有稽核事件的子集。每個發佈程式都具有一個或多個指定的稽核群組。依預設,將儲存庫發佈程式指定給所有稽核群組。
稽核發佈程式可將稽核事件傳送至特定的稽核目標。預設的儲存庫發佈程式可將稽核記錄寫入儲存庫。每個稽核發佈程式均可具有實作特定選項。可以為稽核發佈程式指定文字格式化程式:文字格式化程式可提供稽核事件的文字說明。
稽核配置 (#ID#Configuration:AuditConfiguration) 物件在 sample/auditconfig.xml 檔案中定義。此配置物件具有一個延伸,該延伸是一個通用物件。其位於頂層,具有以下屬性:
filterConfiguration
filterConfiguration 屬性可列出事件群組,這些事件群組用於使一個或多個事件通過事件篩選器。filterConfiguration 屬性中列出的每個群組均包含表 12-2 中列出的屬性。
表 12-2 filterConfiguration 屬性
屬性
類型
說明
groupName
字串 事件群組名稱
displayName
字串
表示群組名稱的訊息目錄關鍵字
enabled
字串
指示已啟用還是已停用整個群組的布林旗標。此屬性是篩選物件的最佳屬性。
enabledEvents
清單
說明群組啟用哪些事件的通用物件清單。必須列出事件以啟用其記錄。列出的每個物件均必須具有以下屬性:
代碼範例 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 管理介面的 [Audit Events] 頁面配置每個群組 (configure/auditeventconfig.jsp)。此頁面可讓您配置每個群組的成功或失敗事件。此介面不支援增加或修改群組的 enabledEvent,但是您可以使用 Identity Manager 除錯頁面執行這些作業。
預設事件群組及其啟用的事件在以下各節中說明。
帳號管理
依預設啟用此群組。
規範遵循管理
依預設啟用此群組。
配置管理
依預設啟用此群組。
表 12-5 預設配置管理事件群組
類型
動作
配置
所有動作
UserForm
所有動作
規則
所有動作
EmailTemplate
所有動作
LoginConfig
所有動作
策略
所有動作
XMLData
匯入
記錄
所有動作
Identity Manager 登入/登出
依預設啟用此群組。
密碼管理
依預設啟用此群組。
資源管理
依預設啟用此群組。
角色管理
依預設停用此群組。
安全管理
依預設啟用此群組。
作業管理
依預設停用此群組。
表 12-11 作業管理事件群組和事件
類型
動作
TaskInstance
所有動作
TaskDefinition
所有動作
TaskSchedule
所有動作
TaskResult
所有動作
ProvisioningTask
所有動作
Identity Manager 之外的變更
依預設停用此群組。
Service Provider Edition
依預設啟用此群組。
extendedTypes
您增加至 com.waveset.object.Type 類別的每種新類型均可稽核。必須為新類型指定唯一的雙字元資料庫關鍵字,其將儲存在資料庫中。所有新類型均將增加至不同的稽核報告介面。必須將每個不經篩選就記錄至資料庫的新類型增加至稽核事件群組 enabledEvents 屬性中 (如 enabledEvents 屬性的說明)。
在某些情況下,您可能希望稽核沒有相關 com.waveset.objectType 的物件,或者希望更詳細地表示現有類型。
例如,WSUser 物件會將使用者的所有帳號資訊儲存在儲存庫中。稽核程序將 WSUser 物件分割為兩個不同的稽核類型 (資源帳號和 Identity Manager 帳號),而不是將每個事件標記為 USER 類型。以此方法分割物件可讓您更輕鬆地在稽核記錄中尋找特定帳號資訊。
透過增加至 extendedObjects 屬性來增加延伸式稽核類型。每個延伸式物件均必須具有下表中列出的屬性:
表 12-14 延伸式物件屬性
引數
類型
說明
name
字串 類型名稱,在建構 AuditEvents 時和篩選事件期間使用。
displayName
字串
表示類型名稱的訊息目錄關鍵字。
logDbKey
字串
在記錄表中儲存此物件時要使用的雙字元資料庫關鍵字。請參閱「記錄資料庫關鍵字」以取得保留值。
supportedActions
清單
物件類型支援的動作。從使用者介面建立稽核查詢時將使用此屬性。如果該值為空值,則所有動作均會顯示為要針對此物件類型查詢的可能值。
mapsToType
字串
(可選擇) 對映至此類型的 com.waveset.object.Type 名稱 (如果有)。嘗試解析物件組織成員身份 (如果尚未在事件上指定) 時會使用此屬性。
organizationalMembership
清單
(可選擇) 應放置此類型事件 (如果它們尚未具有指定的組織成員身份) 之組織 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>password</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
字串
動作名稱,在建構稽核事件時和篩選事件期間使用。
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
字串 結果名稱,在設定稽核事件的狀態時和篩選事件期間使用。
displayName
字串
表示結果名稱的訊息目錄關鍵字。
logDbKey
字串
在記錄表中儲存此結果時要使用的單字元資料庫關鍵字。請參閱標題為資料庫關鍵字的小節,以取得保留值。
所有用戶特定關鍵字均應使用 0 到 9 之間的數字,以防止增加新的內部關鍵字後出現重複的關鍵字。
發佈程式
發佈程式清單中的每個項目均為通用物件。每個發佈程式均具有以下屬性:
表 12-17 發佈程式屬性
屬性
類型
說明
class
字串 發佈程式類別的名稱。
displayName
字串
表示發佈程式名稱的訊息目錄關鍵字。
description
字串
對發佈程式的說明。
filters
清單
指定給此發佈程式的稽核群組清單。
formatter
字串
文字格式化程式的名稱 (如果有)。
options
清單
發佈程式選項清單。這些選項是發佈程式特定的;清單中的每個項目均是 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,這可以依組織設定稽核記錄範圍。
記錄資料庫關鍵字objectType、動作、actionStatus和原因欄在資料庫中儲存為關鍵字,以節省空間。
物件類型、動作和結果
表 12-18 說明了在資料庫中儲存為關鍵字的物件類型、動作和結果:
表 12-18 儲存為關鍵字的物件類型、動作和結果
物件類型名稱
資料庫關聯字
動作名稱
資料庫關聯字
結果名稱
資料庫關聯字
帳號
AN
核准
AP
成功
S
管理員
AD
略過驗證
BV
失敗
F
AdminGroup
AG
取消調解
CR
屬性定義
AF
詢問回應
CD
應用程式
AP
變更密碼
CP
權能
US
建立
CT
配置
CN
連線
CO
探索
DS
刪除
DL
電子郵件範本
ET
取消佈建
DP
取
ER
停用
DS
ExtractTask
EX
結束連線
DC
Identity Manager 帳號
LA
啟用
EN
IDMX 使用者
UX
執行
LN
載入配置
LD
匯出
EP
LoadTask
LT
匯入
IM
登入配置
LC
清單
LI
策略
PO
載入
LD
佈建作業
PT
登入
LG
資源
RS
更新
MO
資源帳號
RA
登出
LO
資源表單
RF
本機變更
NC
資源物件
RE
作業後
PT
風險報告作業
RR
作業前
PE
角色
RL
佈建
PV
規則
RU
重設密碼
RP
使用者
US
重新佈建
RV
作業定義
TD
拒絕
RJ
作業實例
TI
終止
TR
作業排程
TS
使用者名稱回復
UR
TaskTemplate
TT
作業結果
TR
使用者表單
UF
WorkItem
WI
XML 資料
XD
原因
表 12-19 說明了在資料庫中儲存為關鍵字的原因:
表 12-19 儲存為關鍵字的原因
原因名稱
英文
資料庫關聯字
策略違規
Violation of policy {0}: {1}
PV
憑證無效
Invalid credentials
CR
權限不足
Insufficient privileges
IP
資料庫存取失敗
Database access failed
DA
帳號已停用
Account disabled
DI
防止稽核記錄竄改您可以配置 Identity Manager 以防止以下形式的稽核記錄竄改:
所有 Identity Manager 稽核記錄中的記錄均具有唯一的、視伺服器而定的序列號以及記錄和序列號的加密雜湊。當您建立竄改偵測報告時,它會對每個伺服器的稽核記錄掃描以下各項:
配置防竄改記錄
若要配置防竄改記錄,請執行以下步驟:
- 選取 [Reports] > [New] > [Audit Log Tampering Report],以建立竄改報告。
- 當顯示 [Define a Tampering Report] 頁面 (請參閱圖 12-1) 時,為報告輸入標題,然後 [Save] 該報告。
圖 12-1 配置稽核記錄竄改報告
您也可以指定以下可選參數:
- Report Summary — 輸入報告的說明性摘要。
- Starting sequence for server '<server_name>' — 輸入伺服器的起始序列號。
- 此選項可讓您刪除舊的記錄項目而無需將其標記為竄改,以及出於效能原因限制報告範圍。
- Email Report — 可將報告結果以電子郵件的形式傳送至指定的電子郵件地址。
- 選取此選項時,頁面會更新並提示您輸入電子郵件地址。但是,請記住,使用電子郵件傳送文字內容是不安全的 機密資訊 (例如帳號 ID 或帳號歷程記錄) 可能會洩漏。
- Override default PDF options — 選取改選項可以置換此報告的預設 PDF 選項。
- Organizations — 選取應具有此報告之存取權的組織。
- 接下來選取 [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 物件的稽核屬性列出所有已註冊的發佈程式和格式化程式。只有這些發佈程式和格式化程式可在稽核配置使用者介面中使用。