[翻訳] ルールの拡張について (呼び出し方法、同期ルール、ライフタイム)
皆さんこんにちは。何だか狂ったように Up しているのは時間を逃すと、更新が滞ってしまいそうだからです…すみません。はい、私は夏休みの宿題は最終日に全て一気に終わらせるタイプです。本当にすみません…。
ちなみに、師走に入るとお問い合わせが一気に増えたり、超緊急案件がどーんと入ってきたりしてきます。3 の倍数月はお問い合わせが増加する傾向にあるようです。
今は昼休み、ちょっぴり時間が空いたのでこの隙に一気に更新をしてしまおうという算段です。
RSS でごらんいただいている方はどんな風に見えているのか不安です。また Word で草稿を作って Update するのですが、何かインデントとかフォントとかおかしくなるのはそのうち直す予定なので許してください…。
そしてお待たせいたしました。今回はついにルール拡張についてのセクションです!
グリーン気味な字は “About Rules Extentions”の入れ子構造のドキュメントです。
About Rules Extentions |
How Rules Extensions Are Called |
Synchronization Rules Mapped to Rules Extension Methods |
Rules Extension Lifetime |
(2009.1.4 追加) <o:p></o:p>
まとめページを作りました。他のリファレンスを参照される際や、戻る際はこちらからどうぞです!<o:p></o:p>
Microsoft Identity Integration Server 2003 Developer Reference<o:p></o:p>
ルールの拡張について
Microsoft Identity Integration Server 2003 には、接続先データ ソースとメタディレクトリ間で、ビジネスルールに合うようID データの処理を可能にする柔軟な同期ルール エンジンが備わっています。ビジネス ルールは、Microsoft Identity Integration Server 2003 内では同期ルールとして定義される他、宣言型ルールまたはルールの拡張として定義することができます。
宣言型ルールは、Microsoft Identity Integration Server 2003 の Identity Manager で設定を行うことができる同期ルールです。宣言型ルールで対応できないビジネスルールについては、拡張ルールを使用することで、複雑なロジックでも論理的に記述することができます。
宣言型ルールと拡張ルールは共存させることができるため、シナリオにあわせて適切な方法を柔軟に選択することができます。拡張ルールで実現できるルールには、次のようなものがあります。
- 指定の属性値に適用されるロジックや、メタバースへのデータ フローを制御する条件を使用するフィルタの適用。
- オブジェクトの複雑な競合を解決する。
- コネクタ スペースとメタバース間の、不要なオブジェクト結合を解決する。
- 属性の優先順位を処理する。
- 複数の接続先データ ソース間の属性値の変換処理。
- メタバース内のオブジェクトのプロビジョニングを実行し、属性値を他の接続先データ ソースにエクスポートする。
- 既存のコネクタ スペース オブジェクトおよびメタバース オブジェクト上で新しいビジネス ルールを実装する。
拡張ルールは、.NET Framework アセンブリの 1 つで、ダイナミック リンクライブラリ (.dll) ファイル形式で実装されます。拡張ルールは、.NET Framework アセンブリを作成するプログラミング言語とコンパイラであれば作成することが可能です。詳しい内容については、拡張ルールの作成を参照してください。
拡張ルールの種類
Microsoft Identity Integration Server 2003 では、次の種類の拡張ルールをサポートしています。
拡張ルールの種類 |
説明 |
管理エージェント |
データの変換、結合ルール、プロビジョニングの解除など、コネクタ スペースとメタバース間のデータ フローで使われます。拡張ルールは、管理エージェント 1 つにつき、1 つ作成できます。 |
メタバース |
属性値の変更や、メタバース オブジェクトへのリンクの追加や削除など、メタバース内の変更により発生する、メタバースおよびコネクタ スペース間のデータ フローで使われます。メタバースの拡張ルールを使用すると、たとえば、すべての接続先システム オブジェクトにメタバース内に格納されている統合 ID データを持たせるようなことができます。ただし、メタバース拡張ルールは 1 つしか作成できません。 |
拡張ルールは、ID データを処理するタイミングで呼び出されます。詳しい内容については、管理ルールの呼び出し方法を参照してください。また、拡張ルールメソッドへの同期ルールのマップ方法については、拡張ルール メソッドへの同期ルールのマップを参照してください。
オブジェクトへのアクセス
コネクタ スペースおよびメタバースのオブジェクトは、次のクラスから生成されます。
クラス |
オブジェクト |
CSEntry |
コネクタ スペース オブジェクト |
MVEntry |
メタバース オブジェクト |
Microsoft.MetadirectoryServices 名前空間のほとんどのクラスは、上記 2 つのオブジェクトに関係しています。
拡張ルールの呼び出し方法
拡張ルールの呼び出し方法を理解するには、まず、Microsoft Identity Integration Server 2003 が ID 情報を処理する仕組みを理解する必要があります。Identity Integration Server は、接続先データ ソース内の情報の統合ビューを作成することで ID 情報の処理を行います。この統合ビューは、各接続先データソース内のすべてのオブジェクトに反映されるよう、適宜、配信が行われます。
同期処理
Identity Integration Server における ID 情報の作成および出力は同期処理と呼ばれます。同期処理は、次のステップで構成されます。
- インバウンド (入力方向の) 同期—各接続先データ ソースの ID 情報の統合ビューを作成・更新します。インバウンド同期はコネクタ スペースで開始され、メタバースで完了します。
- アウトバウンド (出力方向の) 同期—ID 情報の統合ビューを、他のすべての接続先データ ソースに対して反映します。アウトバウンド同期はメタバースで開始され、コネクタ スペースで完了します。
同期を実行すると、実行プロファイル内の定義に応じて完全同期または差分同期が実行されます。同期処理では、最初にインバウンド同期を実行し、ID データのコネクタ スペースからメタバースへの取り込みが必要かどうか、必要な場合はどういった方法で取り込みを行うかを判断します。インバウンド同期では、コネクタスペースとメタバース間で次のタスクを実行する同期ルールを使用します。
- コネクタ スペースおよびメタバース オブジェクトの作成または削除。
- オブジェクト間のリンクの追加または削除に基づいたコネクタ スペースおよびメタバース オブジェクトの処理。
- コネクタ スペースからメタバースへのID 情報の同期。
アウトバウンド同期ステップは、インバウンド同期が完了して初めて開始することができます。アウトバウンド同期は、メタバースにある統合ビューをコネクタスペースに対して反映します。このビューは、接続先データソースにもエクスポートすることができます。コネクタ スペース内のオブジェクトは、接続先データ ソース内の ID 情報を表わします。そのため、このオブジェクトには、対応する接続先データソースから取り込んだ属性のみが含まれています。Identity Integration Server は、そのコネクタスペース内にあるオブジェクト属性の値のみを反映させます。
アウトバウンド同期の同期処理では、メタバースとコネクタスペース間で次の処理を実行する同期ルールを使用します。
- メタバース オブジェクト内の変更に基づいた新規コネクタ スペース オブジェクトの作成。
- メタバース オブジェクトの既存コネクタ スペース オブジェクトへのリンク。
- メタバースとコネクタ スペース オブジェクト間のリンクの削除に基づいたコネクタ スペース オブジェクトの処理。
- メタバースからコネクタ スペースへの ID 情報の同期。
同期ルール
同期処理は同期ルールにより制御されます。同期ルールは、宣言型ルールおよび拡張ルールのルールにより定義されます。同期ルールは、Identity Integration Server の同期エンジンが統合ビューの作成および反映を実施する際、同期処理の一部として使用されます。
重要: 同期ルールは、あらかじめ決められた順番ではなく、コネクタスペースまたはメタバース オブジェクトの状態に対応した順序で Identity Integration Server が使用します。ルールを設定するときは、規定の順序で呼び出されるルールではなく、オブジェクトの状態に応じて設定します。
次の図は、コネクタ スペースおよびメタバースそれぞれに適用される同期ルールを示したものです。
>>> 図が入ります <<<
オブジェクトの削除ルール: インバウンド同期処理の実行中に適用され、コネクタ スペース オブジェクトとメタバース オブジェクト間のリンクが削除された場合のメタバース オブジェクトの処理方法を決定します。Identity Manager のオブジェクトの削除ルールの設定で拡張ルールを使用するよう設定されていると、メタバース拡張ルール内の IMVSynchronization.ShouldDeleteFromMV メソッドが同期処理から呼び出され、メタバース オブジェクトを削除するタイミングを決定します。たとえば、ある社員が指定の期間後に解雇された場合にメタバース オブジェクトを削除するといったルールを設定することができます。
コネクタ フィルタ ルール: インバウンド同期処理の実行中に適用され、コネクタ スペース オブジェクトに対しこれ以上の処理を行うかどうかを決定します。Identity Manager のコネクタ フィルタ ルールの設定で拡張ルールを使用するよう設定されていると、管理エージェント拡張ルール内に実装された IMASynchronization.FilterForDisconnection メソッドが同期処理から呼び出されます。このメソッドを使用すると、コネクタ スペース オブジェクトの属性値に対してこれ以上の処理を行うかどうかを決定することができます。たとえば、ステータス属性がアクティブの社員のコネクタ スペース オブジェクトだけを処理するようなフィルタを作成することができます。社員のステータス属性がアクティブでないコネクタ スペース オブジェクトについては、それ以上の処理は行われません。
[ 注意] このルールは同期処理では常に使用されます。
ジョイン ルール: インバウンド同期処理の実行中に適用され、コネクタ スペース オブジェクトへのリンクが可能なメタバース オブジェクトを検索します。Identity Manager のジョイン フィルタの設定で拡張ルールを使用するよう設定されていると、管理エージェント拡張ルールに実装された MASynchronization.MapAttributesForJoin メソッドが同期処理から呼び出され、既存のメタバース オブジェクトの検索に使用する属性値リストを生成します。メタバース オブジェクトが 1 つ以上見つかった場合は、IMASynchronization.ResolveJoinSearch メソッドが呼び出され、ディスコネクタ オブジェクトにジョインするメタバース オブジェクトを決定します。
プロジェクション ルール: インバウンド同期処理の実行中に適用され、メタバース オブジェクトを作成し、作成したオブジェクトをコネクタ スペース オブジェクトにリンクします。Identity Manager のプロジェクション フィルタ ルールの設定が拡張ルールを使用するよう設定されていると、管理エージェント ルール拡張内に実装された IMASynchronization.ShouldProjectToMV メソッドが同期処理から呼び出され、メタバース オブジェクトが新規に作成されます。
[ 注意] このルールはメタバース オブジェクトを生成する唯一の同期ルールです。
- インポート アトリビュート フロー ルール: インバウンド同期処理の実行中に適用され、コネクタ スペース オブジェクトからメタバース オブジェクトへの ID 情報のデータ フローを制御します。Identity Manager のインポート アトリビュート フロー ルールの設定が拡張ルールを使用するよう設定されていると、管理マネージメント拡張ルール内の IMASynchronization.MapAttributesForImport メソッドが同期処理から呼び出され、コネクタ スペース オブジェクトからメタバース オブジェクトに対し、1 つまたはそれ以上の属性値を同期化します。たとえば、コネクタ スペースに取り込まれたある社員の名前が、firstname と lastname の 2 つの属性で定義されていて、メタバース オブジェクトにその社員のフルネームを定義する fullname 属性がある場合、このメソッドを使用することで、firstname 属性と lastname 属性を 1 つにまとめ、fullname 属性の文字列を作成することができます。
ルールのフローをデザインする場合は、特定の順序で評価を行うような宣言型ルールや拡張ルール内のルールに依存しないようにしてください。ルールの評価は不規則な方法で行われます。同期処理における次のステップは、オブジェクトの状態の結果生じたイベントではなく、オブジェクトの状態を使用して決定します。オブジェクトの状態は、属性の Value プロパティで判断します。たとえば、一人の社員は、employeeStatus 属性をベースにして active または invactive という状態を持つことができます。その社員の状態は、employeeStatus 属性の Value プロパティを参照することで判断することができます。在職中の社員の場合は、employeeStatus が active であり、非在職中の社員の場合は employeeStatus が inactive のようになります。オブジェクトの状態については、コネクタ スペースに取り込まれたオブジェクトのプロビジョニングを参照してください。
また、拡張ルールでの IMASynchronization.MapAttributesForImport メソッドの実装例については、サンプル: メタバース上に一意の名前を持つ属性を作成するを参照してください。
- プロビジョニング ルール: アウトバウンド同期処理の実行中に適用され、メタバース オブジェクトへの変更に基づいて、コネクタ スペース オブジェクトを新規に作成する、あるいはコネクタ スペース オブジェクトの接続または切断を実施します。メタバース オブジェクトで変更処理が発生すると、メタバース拡張ルール内の IMVSynchronization.Provision メソッドが同期処理から呼び出されます。他の接続先データ ソースにエクスポートするコネクタ スペース オブジェクトや属性値を新規に作成するには、このルールを使用します。
- [ 注意] このルールは、 Identity Manager での設定ができない唯一のルールです。プロビジョン ルールの場合、メタバース拡張ルールを使用する必要があります。
拡張ルールでのこのメソッドの実装例については、コネクタスペース上のオブジェクトのプロビジョニングを参照してください。
- プロビジョニングの解除ルール: アウトバウンド同期処理の実行中に適用され、メタバース オブジェクトとコネクタ スペース オブジェクト間のリンクが削除された場合のコネクタ スペース オブジェクトの処理方法を決定します。Identity Manager のプロビジョニングの解除ルールの設定で拡張ルールを使用するよう設定されていると、メタバース オブジェクトが削除され、削除されたオブジェクトへのリンクが削除された場合、管理エージェント拡張ルール内の IMASynchronization.Deprovision メソッドが同期処理から呼び出され、コネクタ スペース オブジェクトの評価が実施されます。
拡張ルールでのこのメソッドの実装例については、コネクタ スペース上のオブジェクトのプロビジョニング解除を参照してください。
エクスポート アトリビュート フロー ルール: アウトバウンド同期処理の実行中に適用され、メタバース オブジェクトからコネクタ スペース オブジェクトへの属性値のデータフローを制御します。Identity Manager のエクスポート アトリビュート フロー ルールの設定で拡張ルールを使用するよう設定されていると、管理エージェント拡張ルール内の IMASynchronization.MapAttributesForExport メソッドが同期処理から呼び出され、1 つまたはそれ以上の属性が、メタバース オブジェクトからコネクタ スペース オブジェクトに対して同期化されます。このメソッドを使用することで、たとえば、Active Directory データ ソース内の任意のユーザー アカウントを有効にするまたは無効にするといったことが可能です。
拡張ルールでのこのメソッドの実装例については、 サンプル: Active Directory 上の任意のユーザーを有効または無効化するを参照してください。
関連情報
拡張ルールメソッドにマップされた同期ルール (※真下のこれです↓)
拡張ルール メソッドにマップされた同期ルール
次の表は、各同期ルールごとに、実装するメソッドと実装場所を一覧にしたものです。
ルール |
実行するメソッド |
拡張ルールの種類 |
コネクタ フィルタ |
IMASynchronization.FilterForDisconnection |
管理エージェント |
ジョイン |
IMASynchronization.MapAttributesForJoin およびIMASynchronization.ResolveJoinSearch |
管理エージェント |
プロジェクション |
IMASynchronization.ShouldProjectToMV |
管理エージェント |
インポート アトリビュート フロー |
IMASynchronization.MapAttributesForImport |
管理エージェント |
プロビジョニング |
IMVSynchronization.Provision |
メタバース |
エクスポート アトリビュート フロー |
IMASynchronization.MapAttributesForExport |
管理エージェント |
プロビジョニングの解除 |
IMASynchronization.Deprovision |
管理エージェント |
オブジェクトの削除 |
IMVSynchronization.ShouldDeleteFromMV |
メタバース |
関連情報
拡張ルールの呼び出し方法 (※上にあります)
拡張ルールのライフタイム
拡張ルールは、拡張ルールの実行が設定されている同期ルールを Microsoft Identity Integration Server 2003 が初めて適用するタイミングでメモリにロードされます。ロードされた拡張ルールは、次の条件の場合にメモリからアンロードされます。
- Identity Integration Server が、初回実行時から 5 分以内に拡張ルールを呼び出さない場合。
- Identity Manager で、 [Configure Rules Extension] の [Global rules Extension Settings] で [Unload extension if the duration of a single operation exceeds] が選択されている場合、Identity Integration Server が拡張ルールを呼び出したときに、指定の時間経過後に拡張ルールからの応答がない場合。Identity Integration Server が指定の時間までにレスポンスを受け取らない場合、Identity Integration Server は extension-dll-timeout の同期エラーを返します。
上記いずれかの理由でアンロードされた拡張ルールは、次に Identity Integration Server が拡張ルールの実行が設定されている同期ルールを適用すると、もう一度メモリにロードされます。
詳しい内容については、Identity Integration Server Help の "Enable Metaverse Rules Extensions" を参照してください。
補足 :
下記の翻訳は正式な対応内容ではありません。そのため、内容についてご参照いただく際は必ず原文と併用してご参考にとどめていただければと存じます。また、翻訳順序は必ずしもデベロッパーリファレンスと合致しない場合もございますことをご了承ください。
Comments
- Anonymous
January 01, 2003
Microsoft Identity Integration Server 2003 デベロッパー リファレンス 本リファレンスの目的 Microsoft® Identity Integration Server