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

String 

WorkflowServices の操作。audit または auditWorkflow に設定する必要があります。標準ワークフロー監査では audit を使用します。時間計算に必要なタイミング監査イベントの格納には auditWorkflow を使用します。必須。

type

String 

監査対象のオブジェクトタイプの名前。監査可能なオブジェクトタイプの一覧については、表 B–5 を参照してください。標準監査イベントのログに必須。

action

String 

実行されるアクションの名前。監査可能なアクションの一覧については、表 B–6 を参照してください。必須。

status

String 

指定されたアクションの状態名。状態の一覧については、表 B–7 の「結果」列を参照してください。標準監査イベントのログに必須。

name

String 

指定されたアクションの影響を受けるオブジェクトの名前。標準監査イベントのログに必須。 

resource

String 

(オプション) 変更されるオブジェクトが置かれているリソースの名前。

accountId

String 

(オプション) 変更されるアカウント ID。これはネイティブなリソースアカウント名にします。

error

String 

(オプション) 障害の発生時に付けられるローカライズされたエラー文字列。

reason

String 

(オプション) ReasonDenied オブジェクトの名前。一般的な障害の原因を説明する、国際化されたメッセージにマップされています。

attributes

Map 

(オプション) 追加または変更された属性の名前および値のマップ。

parameters

Map 

(オプション) イベントに関連する追加の名前または値を最大 5 つまでマップします。

organizations

List 

(オプション) このイベントが配置される組織の名前または ID のリスト。これは、組織での監査ログの範囲設定に使用されます。このリストが存在しない場合、ハンドラは、種類と名前に基づいて組織を解決しようと試みます。組織を解決できない場合、イベントは最上位 (組織階層の最高レベル) に置かれます。

originalAttributes

Map 

(オプション) 古い属性値のマップ。この名前は、attributes 引数でリストされた名前に一致している必要があります。値は、監査ログに保存しておく必要がある任意の以前の値になります。

標準監査イベントをログするためのワークフローの変更

ワークフロー内に標準監査イベントを作成するには、ワークフローに次の <Activity> 要素を追加します。

<Activity name=’createEvent’>

次に、<Activity> 要素の入れ子として、com.waveset.session.WorkflowServices アプリケーションを参照する <Action> 要素を記述します。

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

<Action> 要素の入れ子として、必須およびオプションの <Argument> 要素を記述します。引数の一覧については、表 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 は、それが割り当てられた人物を識別します。


例 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>

ワークフローでタイミング監査イベントのログを停止するには、ワークフローの終わりにある pre-end アクティビティーに例 10–4 のコードを追加します。ワークフローまたはプロセスの設定時には、end アクティビティーには何も追加できません。最後の auditWorkflow イベントの実行後、無条件に end イベントに移行する pre-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

ワークフローインスタンス内での一意の識別子 

これらの属性は auditableAttributesList にあり、logattr テーブルに格納されます。Identity Manager は、workflowAuditAttrConds 属性が定義されているかどうかもチェックします。

プロセスまたはワークフローの 1 つのインスタンス内でアクティビティーを複数回呼び出すことができます。監査イベントを特定のアクティビティーインスタンスと対応させるために、ワークフローインスタンス内で一意の識別子が logattr テーブルに格納されます。

ワークフローの logattr テーブルに追加の属性を格納するには、workflowAuditAttrConds リストを定義します。 これは GenericObjects のリストと見なされます。workflowAuditAttrConds リストに attrName 属性を定義すると、Identity Manager はコード内のオブジェクトから attrName を取得します。最初に attrName をキーとして使用し、続いて attrName 値を保存します。すべてのキーと値は、大文字の値として記録されます。