この章では、リコンシリエーションの機能およびアーキテクチャと、リコンシリエーション操作のカスタマイズの様々な側面について、次の各項で説明します。
次の機能は、リコンシリエーション時のパフォーマンスの向上に役立ちます。
メタデータがリコンシリエーション・ターゲットに関連付けられていると、同じターゲットに対して複数のジョブを実行して様々なタイプのリコンシリエーションを行う機能が制限されます。そのため、Oracle Identity Managerの各種コンポーネントのすべての構成は、MDSと呼ばれるXMLストアに集中的に格納されています。
下位互換性のために、現在のデプロイメントは、Oracle Identity Manager Design Consoleを介して継続して構成を管理し、構成は引き続きOracle Identity Managerデータベースに格納されます。Oracle Identity Managerでは、構成APIは構成を表から自動的に読み取り、それをデフォルト・プロファイルと呼ばれるXMLプロファイルに変換し、そのプロファイルを既存のリコンシリエーションの実行に関連付けます。
すべてのメタデータは、Oracle Identity Manager Design Consoleを使用して管理されます。Oracle Identity Manager Design Consoleを使用して、デフォルトのリコンシリエーション・プロファイルを生成できます。Oracle Identity Manager Design Consoleからリコンシリエーション構成を変更する場合は、このデフォルトのプロファイルを使用してプロファイルを再生成できます。デプロイメント・マネージャから構成をインポートする場合は、デフォルトでプロファイルが生成されます。
デフォルト以外のすべてのプロファイルは、任意のXMLエディタを使用してすべて管理できます。
制御イベント処理のパラメータ
BatchSizeは、イベント処理を制御するパラメータです。これはバッチのサイズを決定します。バッチ・サイズが1の場合、一度に1つのイベントが処理されます。バッチ・サイズはシステム・プロパティとして利用でき、Oracle Identity Manager Design Consoleから管理できます。そのプロパティ名は、OIM.ReconBatchSizeです。システムのBatchSizeパラメータのデフォルト値は500です。システム・プロパティの詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』のシステム・プロパティの管理に関する説明を参照してください。
自動再試行を制御するシステム・プロパティ
「リコンシリエーション・イベントの再試行回数」システム・プロパティは、リコンシリエーション・エンジンがエラーとしてフラグを付けるか手動キューに送信する前に項目を再試行する回数を指定して、自動再試行を制御します。このプロパティの値が0の場合は、自動再試行オプションが構成されていないことを意味します。
リコンシリエーション・データベースで作成されるすべてのイベントは、リコンシリエーション実行によってグループ化されます。リコンシリエーション実行のすべてのイベントは、共通のリコンシリエーション実行IDによってグループ化されます。各リコンシリエーション実行はプロファイルと関連付けられているため、リコンシリエーション実行のすべてのイベントは、同じプロファイルを使用して処理されます。これにより、構成はリコンシリエーション実行ごとに一度のみ取得されるため、パフォーマンスの最適化に役立ちます。
各プロファイルはそれぞれ異なるバッチ・サイズを使用できます。そのため、各ターゲット・リコンシリエーションに適したバッチ・サイズに調整することで、システム・パフォーマンスを向上させることができます。
バッチは、リコンシリエーション時のシステム・パフォーマンスを向上させるために導入されました。バッチには多数のイベントが含まれます。これはリコンシリエーション・エンジンの処理の単位です。バッチのサイズは設定可能です。リコンシリエーション実行は、固定サイズのバッチに分割されます。たとえば、リコンシリエーション実行が9900のイベントで構成され、バッチ・サイズが1000の場合、そのリコンシリエーション実行は、各サイズ1000のバッチと最後のサイズ900のバッチの計10個のバッチに分割されます。
バッチを1つの単位として処理すると、一度に1つのイベントを処理する際のオーバーヘッドを排除でき、システム・パフォーマンスが最適化されます。またこれにより、可能な場合にはバルク操作も実行できます。バッチを並列で実行して、ハードウェア・リソースをバランスよく使用することもできます。
以前のリリースでは、すべてのエンジン・ロジックはJavaで実装されており、一度に1つのイベントが処理されていました。11gリリース2 (11.1.2)では、イベントを処理するロジックのほとんどは、ストアド・プロシージャとして実装されています。バッチ・レベルでの処理とPLSQLで実装されたロジックの組合せにより、SQLレイヤでバルク操作を実行できるようになりました。次の手順は、バルク(一度に1つのバッチ)で実行されます。
必要なデータのチェック
一致ルールの適用
アクション・ルールの適用
ストアド・プロシージャで実行できず、Javaレイヤで実行する必要のある処理でも、次の理由により、以前のリリースのエンジンよりも優れたパフォーマンスが得られます。
Oracle Identity Managerには、Webベースのイベント管理インタフェースが付属しており、Webからイベントを管理できます。認可されたユーザーは、イベントとユーザーを検索し、イベントをユーザーおよびアカウントにリンクして例外を処理できます。イベントのクローズ、失敗したイベントの再評価の強制、および非定型リンクも実行できます。
非定型リンクは、「イベント管理」セクションの認可されたユーザーに提供される機能を参照して、イベントをOracle Identity Managerのいずれかのユーザーにリンクします。リコンシリエーション・エンジンによってそのイベントに対するユーザー一致が検出された場合でも、この非定型リンク機能により、ユーザーはその一致を無視して別のユーザーを選択できるようになります。これにより、誤った一致によって生じる例外を処理できます。
関連項目: リコンシリエーション・イベントを管理するために実行されるタスクの詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』のリコンシリエーションの管理に関する説明を参照してください。 |
その他のリコンシリエーションの機能について、次の各項で説明します。
以前のバージョンのOracle Identity Managerでは、さまざまなターゲットから取得したすべてのイベント詳細が、リコンシリエーション・スキーマの1つの表に格納されます。各種リコンシリエーション・イベントに含まれる属性およびその名前とタイプのリストは、ターゲットによって異なる場合があります。つまり、あるターゲットのイベントに含まれるデータ・セットが、別のターゲットのイベントに含まれるものと異なる場合があります。このようなイベントのデータを1つの表に格納する唯一の方法は、1行に1つの属性を格納することです。そのため、以前のリリースでは、イベント詳細表の各行が、リコンシリエーション・イベント・データの1つの属性に相当しています。各属性行には、その属性が属するイベント、属性の名前、タイプ、値が格納されます。このような表のことを、このドキュメントでは垂直表とも呼びます。垂直表は、柔軟性と拡張性の面では利点がありますが、パフォーマンスの観点からはイベント・レコードを格納する効率的な方法とはいえません。
垂直表での格納が、水平表またはステージング表と呼ばれるターゲットごとの個別表で置き換えられました。イベントの属性を表内の行として垂直に格納する(属性の数が行数になる)のではなく、イベントの属性を列として格納するため、水平表と呼ばれます。つまり、ターゲットの属性数と同じ数の列が存在します。各イベントは、行として格納されます。異なるターゲットは異なる属性セットを持つことがあるため、各ターゲットは、イベントの詳細を格納するリコンシリエーション・スキーマ内に個別の表を持ちます。子テーブル内の行として格納される複数値属性を処理する要件のために、1つのターゲットに複数の表が存在することがあります。
特定のプロファイルに対するイベント詳細表の各行には、1つのイベントのリコンシリエーション・フィールドのリストが格納されます。たとえば、信頼できるユーザーのリコンシリエーションで姓、名、電子メール属性がリコンサイルされる場合、RA_XELLERATE_USERステージング表に次の列が含まれます。
RE_KEY、RECON_FIRSTNAME、RECON_LASTNAME、RECON_EMAI
ステージング表の作成と管理
ステージング表は、ターゲットをOracle Identity Managerに対してデプロイしている場合のみ作成できます。これは、ターゲットのデプロイ時に、リコンシリエーション・システムがリコンサイルする必要のあるターゲットの属性とそのタイプのリストを把握しているためです。
デプロイメント・マネージャから構成をインポートしたり、Oracle Identity Manager Design Consoleから変更を行ったりした場合には、ステージング表が更新されます。Oracle Identity Manager Design Consoleからステージング表を生成するには、オブジェクト・リコンシリエーション・フォームで、リコンシリエーション・プロファイルの生成をクリックします。
以前のリリースのOracle Identity Managerでは、イベントをリコンサイルする際に、そのイベントをリコンサイルする前に別のイベントをリコンサイルする必要があるために、リコンシリエーション・エンジンがそのイベントを正常に処理できないことがありました。たとえば、リコンシリエーション・エンジンは、アカウントを作成するイベントをリコンサイルする前に、ユーザーを作成するイベントをリコンサイルする必要があります。これを競合条件と呼びます。
Oracle Identity Manager 11gリリース2 (11.1.2)では、「リコンシリエーション・イベントの再試行回数」システム・プロパティの値を設定することによって競合条件が処理されます。自動再試行を構成するには、このプロパティに0より大きい値を指定します。自動再試行を構成しない場合は、「リコンシリエーション・イベントの再試行回数」システム・プロパティの値に0を指定します。
自動再試行を構成する場合、リコンシリエーション・エンジンは競合条件をチェックします。競合条件が見つかると、リコンシリエーション・エンジンは、再試行回数に達するまでリコンシリエーション・イベントを再評価キューに入れます。
リコンシリエーションの再試行スケジュール済タスクは、再試行を待っているイベントがないか、そして再評価される準備ができているかどうかを定期的にチェックし、ある場合は、それをリコンシリエーション・エンジン処理用のキューに入れます。このスケジュール済タスクは、デフォルトで構成されています。
注意: 自動再試行回数に達すると、リコンシリエーション・エンジンはイベントの処理をやめ、一致ルールによってステータスを設定します。ただし、「イベント管理」から再評価をリクエストすれば、手動で再試行できます。イベントの再評価の詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』のイベントの再評価に関する説明を参照してください。 |
自動再試行は次の競合条件を処理できます。
ユーザーを作成するイベントがまだ処理されていないために、Oracle Identity Managerのアカウントを作成するアカウント・イベントが、このイベントのユーザーが作成される前に処理されます。
Oracle Identity ManagerのXellerateユーザーを作成するユーザー・イベントが、このユーザーが属する組織が作成される前に処理されます。
すべての自動再試行パラメータは、リコンシリエーション・プロファイルの一部として格納されます。つまり、あるリコンシリエーション実行に属するイベントに自動再試行が構成されていて、別のリコンシリエーション実行に属するイベントでは自動再試行が構成されていないこともあります。
Oracle Identity Managerでは、このプロファイル内のパラメータを管理するUIがないため、XMLエディタを使用してXMLプロファイルを直接編集してパラメータを管理する必要があります。XMLプロファイルの編集については、「リコンシリエーション・プロファイルの作成および更新」を参照してください。
リコンシリエーション・エンジンで一致ルールに基づいて所有者を決定できない場合は、Oracle Identity Manager拡張管理を使用してアカウントをユーザーに手動でリンクできます。その後のアカウントに対する変更は、そのアカウントに自動的にリンクされます。
非定型リンクは、ユーザー・イベントおよびアカウント・イベントでサポートされています。リコンシリエーション・エンジンで一致ルールに基づいて所有者を決定できない場合は、ユーザー・イベントまたはアカウント・イベントをユーザーに手動でリンクできます。
関連項目: 非定型リンクの実行方法の詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』の非定型リンクに関する説明を参照してください。 |
リコンシリエーションは、2つのシステム間のエンティティ・データが整合性のある状態で維持されるように、エンティティ・データをターゲット・システムからOracle Identity Managerに取得するプロセスです。図23-1に、リコンシリエーションに関係するOracle Identity Managerの様々なコンポーネント、およびこれらのコンポーネント間の相互作用を示します。
リコンシリエーションのアーキテクチャを次のステップで説明します。
各コネクタには、スケジュール済タスクが関連付けられます。スケジューラがコネクタのスケジュール済タスクをトリガーし、このタスクによってイベントを生成するためのリコンシリエーションAPIが起動されます。イベントのタイプは、標準、変更ログまたは削除のいずれかです。
スケジューラの詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』のスケジューラの管理に関する説明を参照してください。スケジュール済タスクの詳細は、「リコンシリエーションのコネクタ」を参照してください。
リコンシリエーション・イベントがリコンシリエーション・イベント・リポジトリ(Oracle Identity Managerデータベース)に格納されます。
バッチ・サイズが適合する場合は、イベントのバッチをまとめて処理する非同期メッセージが送信されます。スケジュール済タスクの終了時に、最後のバッチのイベントを処理する目的で、別の非同期メッセージが送信されます。
注意:
|
処理には、データの検証、エンティティの照合およびアクション(作成、更新、削除など)が含まれます。その後、カーネル・オーケストレーションを介した後処理が続きます。アクション・モジュールの詳細は、「アクション・モジュール」を参照してください。リコンシリエーション・プロファイルの詳細は、「新しいメタデータ・モデル - プロファイル」を参照してください。
デフォルトでは、リコンシリエーションのイベント処理は大量に発生するため、後処理までのすべてのステップは、PL/SQLストアド・プロシージャで実行されます。次のシナリオでは、イベントを1度に1つずつ処理できます(この場合、照合までのすべてのステップはPL/SQLで処理され、アクションはJavaレイヤーで実行されます)。
イベントがイベント管理UIから処理される場合
失敗したイベントが、定期的に実行される再試行のスケジュール済タスクによって再試行される場合
単一のイベントを処理するリコンシリエーションの場合、アクションおよび後処理はカーネル経由で実行されます。
リコンシリエーション・イベントは、リコンシリエーション管理サービスの別のAPIコールによって、イベント管理UIに対して使用可能になります。
リコンシリエーション・サービスの様々なコンポーネントの機能は、次の各項を参照してください。
リコンシリエーション・プロファイルは、特定のリソースに対するリコンシリエーションの実行方法を管理するために定義された構成です。特定のリソースに複数のリコンシリエーション・プロファイルを指定し、それぞれに照合ルール、アクション・ルールおよびフィールド・マッピングを定義し、その際、リソースに対応する各プロファイルには異なる定義を指定できます。たとえば、削除を1日1回のみ実行する必要がある場合は、一方のリコンシリエーションの実行で新規および変更されたアカウントのリコンシリエーションを実行し、もう一方のリコンシリエーションの実行でアカウントの削除をリコンサイルできます。この例では、2つのリコンシリエーション実行と2つのプロファイルを定義します。各プロファイルはそれぞれのリコンシリエーションの実行に関連付けられ、各プロファイルには独自のリコンシリエーション・ルールがあります。
プロファイルはXMLベースの構成ファイルで、Oracle Identity Manager MetaData Store (MDS)に格納されます。例23-1に、リコンシリエーション・プロファイルのサンプルを示します。
例23-1 リコンシリエーション・プロファイルのサンプル
<?xml version='1.0' encoding='UTF-8'?> <profile xmlns="http://www.oracle.com/oracle/iam/reconciliation/config" ownerType="User" changeType="CHANGELOG" auditEnabled="true" batchSize="500" resourceType="Account" name="Modified AD User" configure="true" active="true"> <matchingRule>((UPPER(USR.usr_udf_obguid)=UPPER(RA_ADUSERE469E5C8.RA_OBJECTGUID)))</matchingRule> <form oimTableName="UD_ADUSER" stagingTableName="RA_ADUSERE469E5C8" name="Modified AD User" mlsOimTable="mlsOIMTableIfAny" mlsStagingTable="mlsStagingTableIfmlsOIMTable"> <matchingRule>(UD_ADUSER.UD_ADUSER_OBJECTGUID=RA_ADUSERE469E5C8.RA_OBJECTGUID)</matchingRule> <targetAttributes> <targetAttribute type="String" name="Status"> <stagingField type="String" length="256" name="RA_STATUS"/> </targetAttribute> <targetAttribute type="String" name="copyStatus" ref="Status" mls="true"> <stagingField type="String" length="256" name="COPY_STATUS"/> <oimAttribute type="String" fieldName="OIM_OBJECT_STATUS" fieldType="String" name="OIM_OBJECT_STATUS"/> </targetAttribute> <targetAttribute type="String" name="password" encrypted="true" keyField="false" required="false"> <stagingField type="String" length="256" name="PASSWORD"/> <oimAttribute type="String" fieldName="UD_ADUSER_PASSWORD" fieldType="String" name="AD Password"/> </targetAttribute> <targetAttribute type="Date" name="accountExpires"> <stagingField type="Date" name="RA_ACCOUNTEXPIRES"/> <oimAttribute type="Date" fieldName="UD_ADUSER_DATE" fieldType="Date" name="Account Expiration Date"/> </targetAttribute> <targetAttribute type="ITResource" name="IT Resource" keyField="false"> <stagingField type="ITResource" length="19" name="RA_ITRESOURCE15641F83"/> <oimAttribute type="Number" fieldName="UD_ADUSER_AD" fieldType="Number" name="AD Server"/> </targetAttribute> <targetAttribute type="String" keyField="true" name="objectGUID"> <stagingField type="String" length="32" name="RA_OBJECTGUID"/> <oimAttribute type="String" fieldName="UD_ADUSER_OBJECTGUID" fieldType="String" name="Object GUID"/> </targetAttribute> </targetAttributes> <form oimTableName="UD_ADUSRC" stagingTableName="RA_ADUSERGROUPDETA902DB909" name="memberOf"> <matchingRule>(UD_ADUSRC.UD_ADUSRC_GROUPNAME=RA_ADUSERGROUPDETA902DB909.RA_MEMBEROF)</matchingRule> <targetAttributes> <targetAttribute type="String" keyField="true" name="memberOf"> <stagingField type="String" length="256" name="RA_MEMBEROF"/> <oimAttribute type="String" fieldName="UD_ADUSRC_GROUPNAME" fieldType="String" name="UD_ADUSRC_GROUPNAME"/> </targetAttribute> </targetAttributes> </form> </form> <actionRules> <actionRule condition="One Entity Match Found" action="Establish Link"/> </actionRules> </profile>
表23-1に、リコンシリエーション・プロファイルXMLファイルの要素および構造を示します。
表23-1 リコンシリエーション・プロファイルXMLの要素
要素レベル1 | サブ要素レベル2 | サブ要素レベル3 | サブ要素レベル4 | サブ要素レベル5 | 説明 |
---|---|---|---|---|---|
<profile> |
リコンシリエーション構成プロファイルのルート要素またはオブジェクト。 |
||||
<ownerType> |
ロール階層、ロール・メンバーシップ、アカウントのみに対して、それぞれRole、Role、Userの値が移入されます。 |
||||
<changeType> |
デフォルトでは(または要素が存在しない場合)、値はCHANGELOGです。それ以外の場合、値はREGULAR、CHANGELOGまたはDELETEとなります。 |
||||
<auditEnabled> |
アカウント・タイプのプロファイルのみで使用されます。デフォルトでは(または要素が存在しない場合)、値はfalseで、リソース・オブジェクトの監査が停止されます。 |
||||
<batchSize> |
バッチごとのリコンシリエーション・イベントのサイズまたは数を変更します。デフォルトでは(または要素が存在しない場合)、バッチ・サイズは500です。 |
||||
<resourceType> |
値は、Account、User、Role、RoleRole、RoleUser、Organizationのいずれかです。 |
||||
<name> |
これは、リソース・オブジェクト名です。 |
||||
<configure> |
デフォルトでは(または要素が存在しない場合)、値はfalseです。システムでリコンシリエーション構成を作成または更新する場合は、これをtrueとしてマークする必要があります。プロファイルのすべての手動修正の後、この属性をtrueとしてマークする必要があります。本番のテストの場合は、ターゲット・システムにインポートする前にこの要素をtrueとしてマークします。 |
||||
<active> |
デフォルトでは(または要素が存在しない場合)、値はtrueです。破損したプロファイルまたは無効なプロファイルの場合、値はfalseで、プロファイルが使用不可とマークされます。このようなプロファイルは、システムにロードされません。プロファイルのすべての手動修正の後、この属性を削除するか、trueとしてマークする必要があります。 |
||||
<matchingRule> |
ロール階層、ロール・メンバーシップ、アカウントのみに対して、所有者一致ルールが移入されます。それ以外の場合、要素は存在しません。 |
||||
<form> |
プロファイルごとに1つの親フォームを指定します。 |
||||
<oimTableName> |
データのリコンサイル先のOracle Identity Manager表。 |
||||
<stagingTableName> |
ターゲット・システムのデータが処理前に格納されるステージング表。 |
||||
<name> |
親フォームの場合はプロファイル名と同じであり、子フォームの場合は複数値属性名と同じです。 |
||||
<mlsOimTable> |
リソース・オブジェクトがMLA対応の場合は、データのリコンサイル先である多言語サポート(MLS) Oracle Identity Manager表。 |
||||
<mlsStagingTable> |
リソース・オブジェクトがMLS対応の場合は、ターゲット・システムのデータが処理前に格納されるMLSステージング表。 |
||||
<matchingRule> |
フォーム(プロファイルに関連付けられているリソース・オブジェクト)の一致ルールであり、必須です。 |
||||
<targetAttributes> |
すべてのターゲット属性をグループ化します。 |
||||
<targetAttribute> |
ターゲット・システムの属性ごとに1つ。 |
||||
<type> |
ターゲット属性のデータ・タイプ。 |
||||
<keyfield> |
デフォルト値はfalseです。アカウント・リソース・タイプの一致ルールで使用されます。 |
||||
<name> |
リコンシリエーションを開始するコネクタによって提供される、ターゲット・システムの属性の名前。 |
||||
<required> |
属性が必須の場合、この要素が存在する必要があります。 |
||||
<encrypted> |
値がtrueの場合、属性値は暗号化されてステージング表およびOracle Identity Manager表に格納されます。 |
||||
<ref> |
値がコピーされてこの属性に格納される、同じフォーム内のターゲット属性の名前。 |
||||
<stagingField> |
ターゲット属性に対応する、ステージング表の列を指定します。これには、次の要素が含まれます。 <type>: ステージング表の列のデータ・タイプ。 <length>: ステージング表の列またはフィールドの長さまたはサイズ。 <name>: ステージング表の列の名前。 |
||||
<oimAttribute> |
マップされたOracle Identity Managerドメイン属性名を指定します。この要素は、ターゲット属性がマップされる場合にのみ存在します。これには、次の要素が含まれます。 <name>: Oracle Identity Manager属性名 <type>: Oracle Identity Manager属性タイプ <fieldName>: Oracle Identity Managerのマップ済属性に対応するOracle Identity Manager表の列名 <fieldType>: Oracle Identity Managerのマップ済属性に対応するOracle Identity Manager表の列の型 |
||||
<form> |
子フォームか、親フォームまたはルート・フォームのフォームを指定します。複数値属性に対応します。 |
||||
<matchingRule> |
子フォームの一致ルール。 |
||||
<targetAttributes> |
これは、親の<targetAttributes>要素と同じ要素です。この要素は、複数回ネストできます(例: <form><targetAttributes><form><targetAttributes>)。 |
||||
<actionRules> |
リソース・オブジェクトのすべてのアクション・ルールをグループ化します。 |
||||
<actionRule> |
アクション・ルールごとのactionRule要素。 |
||||
<condition> |
値は、No Matches Found、One Entity Match Found、Multiple Entity Matches Found、One Process Match Found、Multiple Process Matches Foundのいずれかです。 |
||||
<action> |
プロファイルXSDに基づいて任意に指定できます。 |
リソース・オブジェクトには、リコンシリエーション構成に関連付けられたデフォルトのプロファイルが常に存在します。デフォルトのプロファイルは、開発者の環境のOracle Identity Manager Design Consoleから明示的に生成するか、デプロイメント・マネージャからのインポート時に暗黙的に生成できます。プロファイルを作成および更新する方法の詳細は、「リコンシリエーション・プロファイルの手動による更新」を参照してください。
リコンシリエーション・メタデータは、リコンシリエーション・イベントの作成と処理で使用する様々な構成で構成されます。リコンシリエーション・メタデータは、プロファイルと呼ばれる論理的なコンテナに格納されます。リコンシリエーション・プロファイルの詳細は、「リコンシリエーション・プロファイル」を参照してください。
次に、リコンシリエーション・メタデータの例を示します。
マッピング・ルール: ターゲット・システムから受け取ったデータを、そのターゲット・システムに関して管理されている、Oracle Identity Managerのデータにマップする際に使用されます。
照合ルール: イベント・データと特定のアカウント、ユーザーまたはロールを相互に関連付けるために、各リコンシリエーション・イベントの処理時に使用されます。
アクション・ルール: リコンシリエーション・イベントの処理結果に基づいてOracle Identity Managerが実行するアクションを指定するために使用されます。
ターゲット属性のリスト: リコンシリエーションを介してターゲット・システムから受け取ったデータ属性の定義に使用されます。マッピング・ルールで使用され、Oracle Identity Manager Design Consoleを使用して構成されます。
リコンシリエーション・イベントの作成と処理で使用する様々な構成は、Oracle Identity Manager Design Consoleを使用して管理され、下位互換性のために、Oracle Identity Managerリリース9.1.0と同じOracle Identity Managerの表に格納されます。さらに、これらの構成はリコンシリエーション・プロファイルにも格納されます。
注意: Oracle Identity Managerでのリコンシリエーションには、メタデータ・モデルが使用されます。Oracle Fusion Middleware Oracle Identity Manager管理者ガイドのリコンシリエーション・イベントの管理に関する項を参照してください。 |
リコンシリエーション・ターゲットとは、Oracle Identity Managerの変更のソースとして機能するアプリケーションのインスタンスです。リコンシリエーション・ターゲットの例には、Oracle Identity Managerのアイデンティティのソースとして機能する人事管理システムがあります。リコンシリエーション・ターゲットのソースは、ユーザーまたはアカウントのいずれかです。
リコンシリエーション実行とは、リコンシリエーション・コネクタと関連する構成の組合せを意味し、スケジュール済タスクによって実行される場合は、関連する構成に定義されているルールに基づいてリコンシリエーションを実行します。スケジューラは、リコンシリエーションを固定間隔で定期的に実行します。リコンシリエーション実行はOracle Identity Managerのスケジューラでスケジュールされ、指定した頻度で実行されます。リコンシリエーション実行時に作成されたすべてのイベントは、一意のリコンシリエーション実行IDに従ってグループ化されます。
リコンシリエーションAPIは、リコンシリエーション・データをリコンシリエーション・イベントの形式でOracle Identity Managerに提供するために公開された一連のAPIです。コネクタは、このAPIを使用して、リコンシリエーション・イベント・リポジトリにデータをプッシュできます。リコンシリエーションをスケジュールに従って実行する場合は、APIを実行するスケジュール済タスクを設定できます。既存のAPIがサポートされているため、既存のコネクタを変更する必要はありません。
リコンシリエーション用にターゲット・システムから受け取ったデータは、リコンシリエーション・スキーマに格納されます。このデータには、Oracle Identity Managerとリコンサイルする変更も含まれています。
リコンシリエーション・スキーマとは、リコンシリエーション・データを格納する一連のスキーマ表です。リコンシリエーション・スキーマは、パフォーマンス上の理由および将来の拡張性に備えて再設計されています。リコンシリエーション・スキーマの詳細は、「改善されたデータベース・スキーマ」を参照してください。
リコンシリエーション・エンジンでは、構成可能なすべてのコンポーネントが使用され、これらのコンポーネントを使用して入力データをアクション・アイテムのリストに変換するデータ・プロセッサとルール・エバリュエータが組み込まれています。ルールのコンテキストに基づいてアクションを自動化できるかどうかを判断するコンポーネントも組み込まれています。アクションが自動または手動で実行されると、エンジンは適切な更新とプロビジョニング・アクションを実行します。
リコンシリエーション・エンジンのメイン・タスクは、比較を実施して、実行するアクションを判断し、そのアクションをOracle Identity Managerで適用することです。2つのモジュールがあり、各モジュールについては、次の各項で説明します。
プロファイルで指定した照合ルールは、検索対象レコードがOracle Identity Managerにあるかどうかを識別するために使用されます。照合ルールは、Oracle Identity Managerにすでにレコードがあるアイデンティティに対応するデータであるかどうかを識別するためのルール、あるいはOracle Identity Managerでアカウントの所有者を識別するためのルールです。
アカウントのエンティティでは、レコードが見つからない場合は、次に所有者の照合が実行され、アカウントの所有者が識別されます。
ロール階層イベントでは、親ロールおよび子ロールを識別する照合が実行されます。
注意: ロール階層およびロール・メンバーシップのリコンシリエーションの実行では、照合基準に、ネームスペースとロール名の両方が含まれている必要があります。次に、照合ルールの例を示します。 ((UGP.ugp_rolename=x) and (UGP.ugp_namespace=y)) xはロール名にマップされているステージング表名の列の名前で、yはネームスペースにマップされるステージング列の名前です。 |
評価が終了すると、照合表には、イベントの基準を満たし、Oracle Identity Manager内で検出された考えられる適合すべてが格納され、イベントの状態は表23-2に示すいずれかのステータスに更新されます。
表23-2 リコンシリエーションのステータス・イベント
ステータス・イベント | 説明 |
---|---|
データを受信しました |
イベント・データがデータベースに作成され、次の処理に対する準備が整っています。 |
イベントを受信しました |
リコンシリエーション・イベントが作成され、次の処理に対する準備が整っています。finishReconciliationEvent APIはコールされていません。 |
データ検証に失敗しました |
リコンシリエーション・イベント・レコードは無効です。たとえば、ロール・カテゴリが無効なロール・イベントは検証に失敗します。(この状況は競合状態を示している可能性があります。)RE_NOTEフィールドには失敗の詳細が表示され、ユーザー・インタフェースにも表示されます。 |
データ検証に成功しました |
イベント・データが正常に検証され、イベントはエンジンで支障なく処理できます。 |
複数のアカウントの一致が見つかりました |
現在の照合ルールでは、データと一致する複数のアカウント・レコードが見つかりました。 |
アカウントの一致が見つかりません |
現在の照合ルールでは、データと一致するアカウント・レコードは見つかりません。 |
単一のアカウントの一致が見つかりました |
現在の照合ルールでは、データと一致する単一のアカウント・レコードが見つかりました。 |
複数の組織の一致が見つかりました |
現在の照合ルールでは、データと一致する複数の組織レコードが見つかりました。 |
組織の一致が見つかりません |
現在の照合ルールでは、データと一致する組織レコードは見つかりません。 |
単一の組織の一致が見つかりました |
現在の照合ルールでは、データと一致する単一の組織レコードが見つかりました。 |
複数のロール付与の一致が見つかりました |
ロール内のユーザー・メンバーシップと一致する複数のレコードが見つかりました。 |
ロール付与の一致が見つかりません |
ロール内のユーザー・メンバーシップと一致するレコードは見つかりません。 |
単一のロール付与の一致が見つかりました |
ロール内のユーザー・メンバーシップと一致する単一のレコードが見つかりました。 |
複数のロールの一致が見つかりました |
現在の照合ルールでは、データと一致する複数のロール・レコードが見つかりました。 |
ロールの一致が見つかりません |
現在の照合ルールでは、データと一致するロール・レコードは見つかりません。 |
単一のロールの一致が見つかりました |
現在の照合ルールでは、データと一致する単一のロール・レコードが見つかりました。 |
ロール・メンバーが見つかりませんでした |
現在の照合ルールでは、データと一致するロール・メンバーは見つかりません。 |
ロールの親が見つかりません |
現在の照合ルールでは、データと一致するロールは見つかりません。 |
複数のロール関係の一致が見つかりました |
現在の照合ルールでは、イベントのデータと一致する複数のロール対ロールの関係が見つかりました。 |
ロール関係の一致が見つかりません |
現在の照合ルールでは、イベントのデータと一致するロール対ロールの関係は見つかりません。 |
単一のロール関係の一致が見つかりました |
現在の照合ルールでは、イベントのデータと一致する単一のロール対ロールの関係が見つかりました。 |
複数のユーザーの一致が見つかりました |
現在の照合ルールでは、データと一致する複数のユーザー・レコードが見つかりました。 |
ユーザーの一致が見つかりません |
現在の照合ルールでは、データと一致するユーザー・レコードは見つかりません。 |
単一のユーザーの一致が見つかりました |
現在の照合ルールでは、データと一致する単一のユーザー・レコードが見つかりました。 |
無効なイベント・データが渡されました |
イベントに無効なデータが含まれています。 |
再評価中です |
リコンシリエーション・イベントは、現在、リコンシリエーション・イベント管理UIで再評価されています。 |
再試行中です |
リコンシリエーション・イベントは、現在、自動的に再試行されています。このステータス・イベントはすでに廃止されています。 |
作成に失敗しました |
ユーザー、アカウントまたはロールのエンティティが、正常に作成されていません。 |
作成に成功しました |
ユーザー、アカウントまたはロールのエンティティは、正常に作成されました。 |
削除に失敗しました |
ユーザー、アカウントまたはロールのエンティティが、正常に削除されていません。 |
削除に成功しました |
ユーザー、アカウントまたはロールのエンティティは、正常に削除されました。 |
イベントがクローズされました |
リコンシリエーション・イベントは、リコンシリエーション・イベント管理UIからクローズされました。変更は完了しています。 |
更新に失敗しました |
ユーザー、アカウントまたはロールのエンティティが、正常に更新されていません。 |
更新に成功しました |
ユーザー、アカウントまたはロールのエンティティは、正常に更新されました。 |
このモジュールでは、表23-3に示すように、イベントの状態、エンティティ・タイプおよびアクション・ルールに基づいてアクションが適用されます。
表23-3 アクション・ルール
イベントの状態 | エンティティ・タイプ | アクション | 説明 |
---|---|---|---|
ユーザーの一致が見つかりません |
ユーザー |
なし |
アクションは実行されません。 |
ユーザーの作成 |
Oracle Identity Managerのユーザーを作成します。 |
||
アカウントの一致が見つかりません |
アカウント |
なし |
アクションは実行されません。 |
単一のユーザーが一致しました |
ユーザーまたはアカウント |
なし |
アクションは実行されません。 |
ユーザー |
リンクの確立 |
変更タイプに基づいて一致したユーザーを変更または削除します。 |
|
アカウント |
リンクの確立 |
所有者が識別され、アカウントが作成されます。 |
|
複数のユーザーが一致しました |
ユーザーまたはアカウント |
なし |
アクションは実行されません。 |
単一のアカウントが一致しました |
アカウント |
なし |
アクションは実行されません。 |
リンクの確立 |
変更タイプに基づいてアカウントを変更または失効します。 |
||
複数のアカウントが一致しました |
なし |
アクションは実行されません。 |
|
ロールの一致が見つかりません |
ロール |
なし |
アクションは実行されません。 |
単一のロールの一致が見つかりました |
ロール |
なし |
アクションは実行されません。 |
リンクの確立 |
ロールを変更または削除します。 |
||
ロール・メンバーシップ |
ロール・メンバーシップの作成 |
ロール・メンバーをOracle Identity Managerに付与します。 |
|
ロール・メンバーシップの削除 |
ロール・メンバーをOracle Identity Managerから削除します。 |
||
なし |
アクションは実行されません。 |
||
ロール階層 |
ロール階層の作成 |
Oracle Identity Managerにロール階層を作成します。 |
|
ロール階層の削除 |
Oracle Identity Managerのロール階層を削除します。 |
||
なし |
アクションは実行されません。 |
||
複数のロールが一致しました |
ロール、ロール・メンバーシップおよびロール階層 |
なし |
アクションは実行されません。 |
ロール付与の一致が見つかりません |
ロール・メンバーシップ |
なし |
アクションは実行されません。 |
ロール・メンバーの作成 |
Oracle Identity Managerにロール・メンバーを作成します。 |
||
単一のロール付与の一致が見つかりました |
ロール・メンバーシップ |
なし |
アクションは実行されません。 |
リンクの確立 |
ロール・メンバーの削除 |
||
複数のロール付与の一致が見つかりました |
ロール・メンバーシップ |
なし |
アクションは実行されません。 注意: ロール付与の照合は主キー(ユーザー・キーとグループ・キーの組合せ)を検索することで処理されるため、この状態は発生しません。 |
ロールの親の一致が見つかりません |
ロール階層 |
なし |
アクションは実行されません。 |
ロールの親の作成 |
Oracle Identity Managerにロールの親を作成します。 |
||
単一のロールの親の一致が見つかりました |
ロール階層 |
なし |
アクションは実行されません。 |
リンクの確立 |
ロールの親を削除します。 |
||
複数のロールの親の一致が見つかりました |
ロール階層 |
なし |
アクションは実行されません。 |
データ検証に失敗しました |
ロール、ロール階層、ロール・メンバー |
競合状態 |
アクションは実行されません。イベントを再評価する必要があります。 |
親ロールが見つかりません |
ロール階層 |
競合状態 |
アクションは実行されません。イベントを再評価する必要があります。 |
ロール・メンバーが見つかりません |
ロール・メンバーシップ |
競合状態 |
アクションは実行されません。イベントを再評価する必要があります。 |
コネクタとは、ターゲット・システムから変更を抽出し、リコンシリエーションAPIをコールしてリコンシリエーション・スキーマにイベントを作成するソフトウェアです。使用するコネクタが事前定義済リコンシリエーション・モジュールに付属している場合は、スケジュール済タスク定義を使用できます。このコンポーネントを使用して、データおよび他のコネクタ固有のパラメータを追跡するために、ターゲット・システムで変更がポーリングされる頻度を制御します。
リコンシリエーションのコネクタは、デプロイメント・マネージャを使用してデプロイされます。コネクタがデプロイされると、そのコネクタの対応するリコンシリエーション・プロファイルがメタデータ・ストア(MDS)に作成され、イベント・データを格納する水平表も作成されます。
注意: リコンシリエーションの実行中は、リコンシリエーション・プロファイルを手動で更新したり、デプロイメント・マネージャまたはOracle Identity Manager Design Consoleからリコンシリエーション構成を更新しないでください。これは、リコンシリエーションの実行中にリコンシリエーション・フィールドが削除または更新されると、イベント・データが無効になる可能性があるためです。 |
コネクタの構成の詳細は、Oracle Identity Managerのコネクタのドキュメントを参照してください。
リコンシリエーション・アーカイブ・ユーティリティを使用すると、処理したイベントをアクティブ・リコンシリエーション表からアーカイブ表に移動できます。移動するイベントは、時間の範囲に基づいて選択できます。アーカイブできるのは、リンクしたイベントおよびクローズしたイベント(つまり、正常に処理されたか、管理者がクローズしたイベント)のみです。
関連項目: リコンシリエーション・アーカイブ・ユーティリティの使用方法は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』のリコンシリエーション・アーカイブ・ユーティリティの使用に関する説明を参照してください。 |
新規のリコンシリエーション・サービスを活用するために、既存のリコンシリエーション構成またはスケジュール済タスクを変更する必要はありません。
Oracle Identity Managerの以前のリリースでのリコンシリエーション設定に関する既存の構成は、11gリリース2 (11.1.2)にアップグレードした後も引き続き機能します。アップグレードの一環として、リコンサイル対象の既存のオブジェクト・タイプごとに、対応するリコンシリエーション・イベントの表が作成されます。
リコンシリエーション・イベントは、Oracle Identity System Administrationの「イベント管理」セクションを使用して管理されます。「イベント管理」セクションでは、Oracle Identity Managerリコンシリエーション・エンジンによって生成されたリコンシリエーション・イベントを表示および管理できます。これらのイベントは、スケジュール済リコンシリエーション実行を介して生成されます。「イベント管理」セクションには、リコンシリエーション実行およびイベントの検索機能が用意されています。「イベント管理」セクションを使用すると、生成されたイベントに対してリコンシリエーションを手動で実行できます。
関連項目: Oracle Identity System Administrationでのリコンシリエーション・イベントの管理の詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』のリコンシリエーション・イベントの管理に関する説明を参照してください。 |
次のインスタンスで起動されるリコンシリエーション・ルールを定義できます。
信頼できるソースへの変更に関連付けられているユーザーまたは組織のレコードをOracle Identity Managerにより判別する場合。これらのルールは、「リコンシリエーション・マネージャ」フォームの「リコンシリエーション・データ」タブで、リコンシリエーション・イベントのすべての必須フィールドが処理された時点で評価されます。
(たとえば、システムで変更が検出されたことを受けて)どのユーザー・レコードまたは組織レコードがターゲット・リソースで検出されたアカウントの所有者かをOracle Identity Managerにより判別する場合。これらのルールは、「リコンシリエーション・マネージャ」フォームの「リコンシリエーション・データ」タブで、リコンシリエーション・イベントのすべての必須フィールドが処理され、同フォームのプロセス一致ツリー・タブのイベントと一致するプロセスがなかった場合のみ評価されます。
Design Consoleの「リコンシリエーション・ルール」フォームは、Oracle Identity Managerのリコンシリエーション・ルールを作成および管理するために使用します。このフォームは、「開発ツール」フォルダにあります。図23-2に、「リコンシリエーション・ルール」フォームを示します。
前述のように、このフォームを使用して定義されたルールは、信頼できるソースまたはターゲットのリソースでの変更に関連付けられているユーザーまたは組織いずれかとの一致に使用されます。これらのタイプのルールは、それぞれユーザー一致ルールまたは組織一致ルールと呼ばれます。これらのルールは、「ルール・デザイナ」フォームを使用して定義できるルールと似ていますが、「リコンシリエーション・ルール」フォームを使用して作成されたルールは、(単一のターゲット・リソースに関連するため)リソース・オブジェクト固有で、リコンシリエーション関連の機能のみに影響します。
リコンシリエーション・ルールの使用に関するトピックは次のとおりです。
次の手順では、リコンシリエーション・ルールの定義方法について説明します。
注意: 次の手順では、必ず「アクティブ」チェック・ボックスが選択されていることを確認してください。このチェック・ボックスが選択されていない場合、リソースに関連するリコンシリエーション・イベントの処理時に、Oracle Identity Managerのリコンシリエーション・エンジンによってルールが評価されません。ただし、このチェック・ボックスを選択できるのは、Oracle Identity Managerによって「valid」システム・チェック・ボックスが選択されている場合のみです。「valid」チェック・ボックスは、1つ以上のルール要素が作成され、そのルール要素のロジックが有効であるとOracle Identity Managerによって判断された後でのみ選択可能です。 |
ユーザーの一致または組織の一致用にリコンシリエーション・ルールを定義するには、次の手順を実行します。
「リコンシリエーション・ルール」フォームに移動します。
「名前」フィールドに、ルール名を入力します。
「オブジェクト」フィールドで、このルールを関連付けるターゲット・リソースを選択します。
「説明」フィールドにルールの説明を入力します。
ルールに使用する「および」演算子または「または」演算子を選択します。「および」を選択した場合は、ルールのすべての要素(およびルールがネストされている場合はそれらのルール)が一致しないかぎり、ルールがtrueと評価されません。「または」を選択した場合は、ルールのいずれかの要素(またはルールがネストされている場合はそのいずれか)が一致すると、trueと評価されます。
「保存」をクリックします。
ルール定義が保存されます。次に、このルールのルール要素を作成する必要があります。
リコンシリエーション・ルールの個々の要素を定義するには、次の手順を実行します。
要素を追加するルール定義に移動します。
「ルール要素」タブのルール要素の追加をクリックします。
ルール要素の追加ダイアログ・ボックスが表示されます。
「ルール要素」タブをクリックします。
「ユーザー・データ」メニューからユーザー関連のデータ項目を選択します。
これが、ルール要素の評価時にOracle Identity Managerによって調査されるユーザー・データ要素になります。このメニューには、Oracleユーザー・フォームのすべてのフィールド(作成済のユーザー定義フィールドを含む)が表示されます。
注意: 組織の一致のためのルールを定義する場合、使用可能なデータおよびメニュー名は、ユーザーではなく組織に関連付けられます。 |
「演算子」メニューから演算子を選択します。
これは、ルール要素の評価時に、選択したデータ項目の属性にOracle Identity Managerによって適用される条件です。有効な演算子は次のとおりです。
次と等しい: このオプションを選択した場合、ユーザーまたは組織のレコードのデータ要素は、選択された属性と完全に一致する必要があります。
注意:
|
次を含む: このオプションを選択した場合、ユーザーまたは組織のレコードのデータ要素は選択された属性と完全に一致するのではなく、この属性を含んでいる必要があります。
次で始まる: このオプションを選択した場合、ユーザーまたは組織のレコードのデータ要素は、選択された属性で始まる必要があります。
次で終わる: このオプションを選択した場合、ユーザーまたは組織のレコードのデータ要素は、選択された属性で終わる必要があります。
「属性」メニューから値を選択します。このメニューの値は、ルールに関連付けられているリソースに対して、「リコンシリエーション・フィールド」タブで定義されたフィールドです。そのリソースのリコンシリエーション・フィールドが指定されていない場合、値は選択できません。
注意: (信頼できるソースとは対照的に)ターゲット・リソースのルール要素を定義する際には、リソースのカスタム・プロセス・フォームの親表に関連付けられているフィールドのみが、「属性」フィールドで選択可能になります。 |
「属性」フィールド内のデータに対して(演算子を適用する前に)Oracle Identity Managerで特定の変換処理が実行されるようにするには、変換メニューから目的の変換処理を選択します。
注意: このメニューで「なし」以外の値を選択した場合は、Oracle Identity Managerによって変換処理が正しく実行されるように、「保存」をクリックした後でタブを選択し、適切なプロパティを設定する必要があります。 |
表23-4に、実行できる変換処理を示します。
大文字/小文字を区別チェック・ボックスを選択します。
このチェック・ボックスを選択した場合、ルール要素が条件と一致するには、「属性」フィールドで選択された値と、リコンシリエーション・イベント・レコードで評価される値の大/小文字が一致している必要があります。このチェック・ボックスの選択を解除した場合、「属性」フィールドで選択された値と、リコンシリエーション・イベント・レコードで評価される値の大/小文字が一致する必要はありません。
「保存」をクリックします。
変換メニューで(「なし」以外の)値が選択されていても、変換処理のプロパティが設定されていない場合は、プロパティが設定されていますチェック・ボックスは選択されません。
その場合は、ルール要素プロパティ・タブを選択し、適切なプロパティを設定して、再度「保存」をクリックする必要があります。
ルール要素がルールに追加されます。
ルールに追加するルール要素ごとに、この手順全体を繰り返します。
注意: 「アクティブ」チェック・ボックスが選択されていることを確認してください。 |
ルールの中に既存のルールをネストできます。Oracle Identity Managerでは、ネストされたルールの条件は、他のルールの要素と同様に評価されます。
注意: ダイアログ・ボックスで選択できるのは、同じリソース・オブジェクトに関連付けられているリコンシリエーション関連のルールのみです。 |
ルールの中にルールをネストするには、次の手順を実行します。
別のルールが追加されるルールに移動します。
「ルール要素」タブの「ルールの追加」をクリックします。
ルールの選択参照ダイアログ・ボックスが表示されます。
目的のルールの場所を特定し、選択します。
「OK」をクリックします。
選択したリコンシリエーション・ルールがルールに追加されます。
ルールにネストするルールごとに、手順2から4を繰り返します。
ルール要素またはルールを削除するには、次の手順を実行します。
要素を削除するルールに移動します。
「ルール要素」タブで、削除するルール要素またはルールを選択します。
「削除」をクリックします。
Oracle Identity Managerでは、Microsoft Active Directory、Sun Java System Directory、Oracle Internet Directory、Oracle E-Business Suiteなどの様々なターゲット・システムからユーザーやアカウントをリコンシリエーションするためのコネクタを提供しています。これらのコネクタの詳細は、次のURLのOracle Technology Network(OTN)WebサイトにあるOracle Identity Managerコネクタのドキュメントを参照してください。
http://www.oracle.com/technetwork/indexes/documentation/index.html
ただし、カスタム・コネクタを作成するには、次を実行する新しいスケジュール済タスクを開発する必要があります。
ターゲット・システムからユーザーやアカウント情報を取得します。
リコンシリエーションAPIを使用して、イベント・データを送信するリコンシリエーション・イベントを作成します。
エンティティを作成、変更または削除するためのイベントを作成します。
特定のターゲット・システムに接続するには、次のことを実行する必要があります。
新規ITリソース・タイプの作成
新規ITリソースの定義
スケジュール済タスクの入力パラメータとしてITリソースを使用
関連項目: ITリソース定義を参照するためのAPIの詳細は、Oracle Fusion Middleware Oracle Identity Manager Java APIリファレンスを参照してください。 |
Oracle Identity Managerでは、プロビジョニング・プロセスとプロセス・インスタンスは、ユーザーまたはアカウントに関係するアクティビティに関連付けられています。これにより、様々なアクションに対するカスタマイズを追加するためのフックまたはポイントが提供されます。
ユーザー状態またはアカウント状態に対する変更が、直接APIまたはリコンシリエーションを介して発生する場合があります。変更には、次のように様々なタイプがあります。
ユーザーまたはアカウント・プロファイルでのデータ変更
有効化や無効化などのステータス変更
アテステーション・プロセスに基づくユーザーへの変更
組織の変更
属性の伝播
パスワードの伝播
これらの各変更の場合は、プロセス定義により、これらのいずれかの変更時に実行されるフックを追加する機能が提供されます。リコンシリエーションの場合は、プロセス定義により、次の条件付きタスクの形式でフックが提供されます。
受信したリコンシリエーションの挿入: この条件付きタスクは、アカウントがリコンシリエーションを介して作成された場合に挿入されます。
受信したリコンシリエーションの更新: この条件付きタスクは、ユーザーにリンクされている既存のアカウントがリコンシリエーションを介して更新された場合に挿入されます。プロセス・フォーム内のデータ、またはアカウントのステータスが更新されます。
受信したリコンシリエーションの削除: この条件付きタスクは、既存のアカウントがリコンシリエーションを介して失効された場合に挿入されます。
これらのタスクでは、ワークフローの開始ポイントを提供します。プロビジョニング・プロセスにカスタム・ワークフローを作成したり、リコンシリエーション・トリガー・タスクとワークフロー間の依存性を作成できます。これにより、ワークフローが個別のトリガーで実行されるようになります。
ユーザーまたはアカウントに正常にリンクされているすべてのリコンシリエーション・イベントが、条件付きタスクからの単一トリガーを挿入します。ユーザー・プロファイルおよびアカウント・プロファイル内のすべてのデータが、これらの依存タスクのいずれかにアタッチされているアダプタで状況依存データとして使用できます。
この項では、リコンシリエーション・プロファイルの手動による更新について、次の各項で説明します。
リソース・オブジェクトに基づいたリコンシリエーションでは、プロファイル名はリソース・オブジェクトの名前と同じです。たとえば、リソース・オブジェクト名がtestresourceとすると、デフォルトのプロファイル名もtestresourceになります。対応するリコンシリエーション・ステージング表の名前は、プロファイルで使用できます。リソースに多言語サポート(MLS)データが含まれる場合は、MLSステージング表名およびOracle Identity Manager表名もプロファイルで使用できます。リコンシリエーション・プロファイルの構造および要素の詳細は、表23-1「リコンシリエーション・プロファイルXMLの要素」を参照してください。
リソース・オブジェクトに子フォームが含まれる場合は、子フォームごとに、Oracle Identity Manager表名とステージング表名をプロファイルで使用できます。各ステージング表には、対応するエンティティ定義XMLファイルがあります(名前はステージング表名と同じでドットxml拡張子(.xml)が付き、MDSに格納されています)。
batch size属性など、リコンシリエーション・プロファイル内でなんらかの変更を行う場合は、手動により、またはDesign Consoleを使用してプロファイルを更新できます。リコンシリエーション・プロファイルを更新するには、次の手順を実行します。
注意: Design Consoleを使用してリコンシリエーション・プロファイルを変更した場合は、Design Consoleのオブジェクト・リコンシリエーション・タブのリコンシリエーション・プロファイルの作成ボタンをクリックして、リコンシリエーション・プロファイルを再生成する必要があります。 |
MDSから/db/PROFILE_NAMEプロファイル・ドキュメントをエクスポートします。
XMLファイルを修正します。たとえば、バッチ・サイズの値を変更します。
configure属性の値をtrueに設定します。この属性の詳細は、表23-1「リコンシリエーション・プロファイルXMLの要素」を参照してください。
更新したプロファイルをMDSにインポートします。MDSとの間のメタデータのエクスポートおよびインポートの詳細は、「ユーザーが修正可能なメタデータ・ファイルの移行」を参照してください。
これによって、ステージング表および対応するステージング表のエンティティ定義が自動的に更新されます。
次のいずれかの方法を使用して、プロファイル・モードのプロパティをCHANGELOGからREGULARに変更できます。
関連項目: 変更ログおよび定期リコンシリエーション・モードの詳細は、Oracle Fusion Middleware Oracle Identity Managerユーザーズ・ガイドのリコンシリエーションのモードに関する項を参照してください。 |
次の例のように、プロファイルのchangeType属性の値を変更します。
<profile xmlns="http://www.oracle.com/oracle/iam/reconciliation/config" changeType="REGULAR" batchSize="500" resourceType="Organization" name="Xellerate Organization">
次の方法で、イベント作成時に属性を変更します。
Oracle Identity Manager 11gリリース2 (11.1.2)で導入されたイベント作成APIには、3つのパラメータが含まれています。最初の2つのパラメータは、以前の作成イベントAPIで使用されるパラメータと同じです。3番目のパラメータは、dateFormat、changeType、eventFinished、actionDateなどの属性を持つことができます。
このAPIを使用してchangeTypeを次のように設定できます。
public long createReconciliationEvent(String objName, Map<String, Object>inputData, EventAttributes eventAttribs);
注意: APIを使用したchangeType属性の設定は、プロファイルで設定されたchangeType属性の値より優先されます。 |
リコンシリエーションAPIは、単一値や複数値の属性データおよびその他の機能でリコンシリエーション・イベントを作成するために使用できる一連の公開APIです。
リコンシリエーション・コネクタの開発者は、これらのAPIを使用して、リコンシリエーション・イベント・リポジトリにデータをプッシュする必要があります。
これらのAPIのほとんどが、以前のバージョンのOracle Identity Managerに存在していました。ただし、11gリリース2 (11.1.2)では、実装が変更され、このリリースで導入された新しいリコンシリエーション・アーキテクチャに基づいています。
以前のAPIが引き続きサポートされているため、既存の標準コネクタでもこれらのAPIが使用され、これらのコネクタに対する変更は必要ありません。
callingEndOfJobAPI
は、11gリリース2 (11.1.2)における唯一の新しいリコンシリエーションAPIです。
コネクタの各実行は、ジョブと呼ばれます。11gリリース2 (11.1.2)では、リコンシリエーション・イベントはリコンシリエーション・エンジンにバッチ送信されます。ジョブが終了すると、(コネクタのスケジュール済タスクを実行する)スケジューラはリスナーを実行し、リスナーはcallingEndOfJOBAPI
を呼び出します。このAPIは、すべてのオープン・バッチを処理のためにリコンシリエーション・エンジンに送信します。
このAPIコールは、多言語サポート(MLS)データと非MLSデータで類似しています。コネクタは、HashMapとしてリコンサイルされるデータを渡します。相違点は、属性がMLS対応である場合、キーが属性名で、値がMLSデータの別のHashMapであることです。このMLS固有のHashMapのキーは言語コードで、値はターゲット・システムから取得された対応するロケール固有データです。定義されたロケールがないMLSデータがターゲット・システムに存在する場合、そのデータはMLS入力データHashMapでキーbaseを使用して渡されます。
信頼できるリコンシリエーションにユーザー・ログインが渡されない場合は、ログイン・ハンドラがユーザー・ログインを生成します。パスワードは、後処理イベント・ハンドラで生成されます。このことを示す通知を送信するようにOracle Identity Managerを構成できます。
通知は、Recon.SEND_NOTIFICATIONシステム・プロパティの値がtrueに設定されている場合にのみ送信されます。Recon.SEND_NOTIFICATIONシステム・プロパティの詳細は、Oracle Fusion Middleware Oracle Identity Manager管理者ガイドのOracle Identity Managerのシステム・プロパティに関する説明を参照してください。
SSOが無効な環境では、リコンシリエーションを介したユーザー作成の場合、ユーザー・ログインとパスワードの両方が後処理ハンドラで生成され、単一の通知がユーザー・ログインとパスワードの両方に送信されます。
SSOが有効な環境では、パスワードは生成されないため、ログインが後処理ハンドラで生成されると、通知はユーザー・ログインに対してのみ送信されます。
リコンシリエーションに関連する問題をトラブルシューティングする前に、リコンシリエーション・ロギング・レベルをINFOに変更します。これを行うには、次の行をlogging.xmlファイルに追加し、Oracle Identity Managerを再起動します。
<LOGGER NAME="ORACLE.IAM.RECONCILIATION" LEVEL="INFO"/>
この項では、リコンシリエーション問題のトラブルシューティングについて次の各項で説明します。
表23-5に、リコンシリエーション・エラーが発生した場合に実行できるトラブルシューティング手順を示します。
表23-5 リコンシリエーションのトラブルシューティング
問題 | 解決策 |
---|---|
イベント処理での失敗 |
エラーの詳細は、リコンシリエーション表から次のように取得できます。
|
カーネル編成ハンドラで発生した失敗 |
編成IDは、リコンシリエーション表で追跡でき、この表をさらに使用して、次のように関連ハンドラのステータスを確認できます。
リコンシリエーション時にLDAP同期を表示するUIはありません。したがって、LDAPの成功または失敗は、RB_NOTE/RE_NOTE列で使用可能なIDに基づいて、編成内のLDAP同期イベント・ハンドラのステータスを確認することによってのみ追跡できます。 |
ジョブの実行後、多数のイベントが「データを受信しました」ステータスになる |
次の文を使用して、関連するバッチが処理の準備完了ステータスであるかどうかを確認します。
select rb_batch_status, rb_note from recon_batches where rb_batch_status = 'Ready For Processing' and rj_key = JOB_ID_ON_UI
また、RECON_BATCHES.RB_NOTEには、接続の問題などの一般的な例外が含まれています。問題を修正し、次のいずれかを実行します。
|
信頼できるソースのリコンシリエーションの場合にユーザー更新を実行すると、次のエラーが生成される ORA Error Code =>ORA-00001: unique constraint (.) violated |
信頼できるソースのリコンシリエーションでは、一致ルールがUsr_loginに基づいている場合、その一致ルールでは大文字/小文字が区別されていないことが必要です。そうでないと、ユーザーの更新がユーザーの作成として機能し、エラーが生成される場合があります。 |
この項では、信頼できるソースのリコンシリエーションに関連する次の問題について説明します。
リコンシリエーション・プロファイルが存在しない
リコンシリエーション・プロファイルが欠落している場合、次のエラーがログに記録されます。
[EXEC] ORACLE.IAM.RECONCILIATION.EXCEPTION.RECONCILIATIONEXCEPTION: EXCEPTION OCCURRED WHILE INSERTING DATA INTO TABLE RA_TESTRORECON7 DUE TO RA_TESTRORECON7 [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.RECONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.API.RECONOPERATIONSSERVICEEJB.CREATERECONCILIATIONEVENTX(UNKNOWN SOURCE) ..... ..... ..... [EXEC] CAUSED BY: ORACLE.IAM.PLATFORM.ENTITYMGR.NOSUCHENTITYEXCEPTION: RA_TESTRORECON7 [EXEC] AT ORACLE.IAM.PLATFORM.ENTITYMGR.IMPL.ENTITYMANAGERCONFIGIMPL.EXISTS(ENTITYMANAGERCONFIGIMPL.JAVA) [EXEC] AT ORACLE.IAM.PLATFORM.ENTITYMGR.IMPL.ENTITYMANAGERCONFIGIMPL.GETDATAPROVIDER(ENTITYMANAGERCONFIGIMPL.JAVA) [EXEC] AT ORACLE.IAM.PLATFORM.ENTITYMGR.IMPL.ENTITYMANAGERIMPL.GETENTITYCAPABILITY(ENTITYMANAGERIMPL.JAVA) [EXEC] AT ORACLE.IAM.PLATFORM.ENTITYMGR.IMPL.ENTITYMANAGERIMPL.GETENTITYCAPABILITY(ENTITYMANAGERIMPL.JAVA) [EXEC] AT ORACLE.IAM.PLATFORM.ENTITYMGR.IMPL.ENTITYMANAGERIMPL.CREATEENTITY(ENTITYMANAGERIMPL.JAVA) [EXEC] AT ORACLE.IAM.PLATFORM.ENTITYMGR.IMPL.ENTITYMANAGERIMPL.CREATEENTITY(ENTITYMANAGERIMPL.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.RECONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.RECONOPERATIONSSERVICEIMPL.CREATERECONCILIATIONEVENT(RECONOPERATIONSSERVICEIMPL.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.API.RECONOPERATIONSSERVICEEJB.CREATERECONCILIATIONEVENTX(UNKNOWN SOURCE) ..... ..... .....
リコンシリエーション・フィールド・マッピングの欠落または非アクティブな所有者ルール
次のエラーがログに記録される場合は、次のとおりです。
定義されているリコンシリエーション・フィールドがありません。
リコンシリエーション・フィールドが追加されているが、マッピングが定義されていません。
定義されている一致ルールが存在しないか、または一致ルールが非アクティブです。
[EXEC] ORACLE.IAM.PLATFORM.UTILS.SUPERRUNTIMEEXCEPTION: -100: ERROR OCCURED IN XL_SP_RECONBLKUSRRQDCVALDNMTCH WHILE PROCESSING BATCH ID 4 ONE OR MORE INPUT PARAMETER PASSED AS NULL [EXEC] AT ORACLE.IAM.RECONCILIATION.DAO.RECONACTIONDAO.EXECUTEBULKUSERMATCHCRUD(RECONACTIONDAO.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.USERHANDLER.EXECUTEBULKCUD(USERHANDLER.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.BASEENTITYTYPEHANDLER.PROCESS(BASEENTITYTYPEHANDLER.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.PROCESSBATCH(ACTIONENGINE.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.EXECUTE(ACTIONENGINE.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONTASK.EXECUTE(ACTIONTASK.JAVA) [EXEC] AT ORACLE.IAM.PLATFORM.ASYNC.IMPL.TASKEXECUTOR.EXECUTEUNMANAGEDTASK(TASKEXECUTOR.JAVA) [EXEC] AT ORACLE.IAM.PLATFORM.ASYNC.IMPL.TASKEXECUTOR.EXECUTE(TASKEXECUTOR.JAVA) [EXEC] AT ORACLE.IAM.PLATFORM.ASYNC.MESSAGING.MESSAGERECEIVER.ONMESSAGE(MESSAGERECEIVER.JAVA) ..... ..... ..... [EXEC] CAUSED BY: ORACLE.IAM.PLATFORM.UTILS.SUPERRUNTIMEEXCEPTION: -100: ERROR OCCURED IN XL_SP_RECONBLKUSRRQDCVALDNMTCH WHILE PROCESSING BATCH ID 4 ONE OR MORE INPUT PARAMETER PASSED AS NULL [EXEC] AT ORACLE.IAM.RECONCILIATION.DAO.RECONACTIONDAO.EXECUTEBULKUSERMATCHCRUD(RECONACTIONDAO.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.USERHANDLER.EXECUTEBULKCUD(USERHANDLER.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.BASEENTITYTYPEHANDLER.PROCESS(BASEENTITYTYPEHANDLER.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.PROCESSBATCH(ACTIONENGINE.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.EXECUTE(ACTIONENGINE.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONTASK.EXECUTE(ACTIONTASK.JAVA) [EXEC] AT ORACLE.IAM.PLATFORM.ASYNC.IMPL.TASKEXECUTOR.EXECUTEUNMANAGEDTASK(TASKEXECUTOR.JAVA)
リコンシリエーション・アクション・ルールの欠落
適切なリコンシリエーション・フィールドとマッピングが定義されており、一致ルールも有効かつアクティブであるが、依然としてイベント・ステータスが「ユーザーの一致が見つかりません」である場合は、定義されたアクション・ルールが存在しない可能性があります。リコンシリエーション・アクション・ルールを追加すると、ユーザーが正常に作成されます。
この項では、ターゲット・リソースのリコンシリエーションに関連する次の問題について説明します。
プロセス・フォームの欠落
すべてのプロセス・データ・フィールド・マッピングを削除し、プロファイルを再生成した場合に、次のエラーがログに記録されます。
[EXEC] <APR 19, 2011 11:13:48 PM PDT> <ERROR> <ORACLE.IAM.RECONCILIATION.IMPL> <IAM-5010000> <GENERIC INFORMATION: {0} [EXEC] ORACLE.IAM.PLATFORM.UTILS.SUPERRUNTIMEEXCEPTION: -1: ERROR OCCURRED IN XL_SP_RECONINPUTPARAMSVALDN ORA-20001: COMMA-SEPARATED LIST INVALID NEAR D [EXEC] AT ORACLE.IAM.RECONCILIATION.DAO.RECONACTIONDAO.EXECUTEBULKUSERMATCHCRUD(RECONACTIONDAO.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.USERHANDLER.EXECUTEBULKCUD(USERHANDLER.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.BASEENTITYTYPEHANDLER.PROCESS(BASEENTITYTYPEHANDLER.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.PROCESSBATCH(ACTIONENGINE.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.EXECUTE(ACTIONENGINE.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONTASK.EXECUTE(ACTIONTASK.JAVA)
このエラーの原因として、プロセス・フォームの欠落が考えられます。
プロセス・フォーム・マッピングの欠落またはWHERE句選択の欠落
すべてのプロセス・データ・フィールド・マッピングを削除し、プロセス・フォームを追加し、プロファイルを再生成した場合に、次のエラーがログに記録されます。
[EXEC] <APR 19, 2011 11:25:31 PM PDT> <WARNING> <JNDI> <BEA-050007> <AN ATTEMPT WAS MADE TO LOOK UP NON-VERSIONED GLOBAL RESOURCE "QUEUE" FROM AN APPLICATION VERSION "OIM [VERSION=11.1.1.5.0]". THIS CAN POTENTIALLY CAUSE CONFLICT OF THE GLOBAL RESOURCE USAGES AMONG MULTIPLE APPLICATION VERSIONS.> [EXEC] <APR 19, 2011 11:25:31 PM PDT> <ERROR> <ORACLE.IAM.RECONCILIATION.IMPL> <IAM-5010000> <GENERIC INFORMATION: {0} [EXEC] JAVA.LANG.NULLPOINTEREXCEPTION [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.CONFIG.PROFILE.GETACCOUNTMATCHINGRULESWHERECLAUSE(PROFILE.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.PROFILEDATA.GETACCOUNTMATCHINGRULES(PROFILEDATA.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.DAO.RECONACTIONDAO.EXECUTEBULKACCOUNTMATCHCRUD(RECONACTIONDAO.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACCOUNTHANDLER.EXECUTEBULKCUD(ACCOUNTHANDLER.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.BASEENTITYTYPEHANDLER.PROCESS(BASEENTITYTYPEHANDLER.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.PROCESSBATCH(ACTIONENGINE.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.EXECUTE(ACTIONENGINE.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONTASK.EXECUTE(ACTIONTASK.JAVA)
このエラーの原因として、プロセス・フォーム・マッピングの欠落またはWHERE句選択の欠落が考えられます。
有効なアクション・ルールの欠落
すべてのプロセス・データ・フィールド・マッピングを削除し、プロセス・フォームとマッピングを追加し、WHERE句選択を追加し、プロファイルを再生成した場合に、次のエラーがログに記録されます。
[EXEC] <APR 19, 2011 11:36:20 PM PDT> <WARNING> <ORACLE.IAM.PLATFORM.ASYNC> <BEA-000000> <EXCEPTION FOR ABOVE MESSAGE I.E IAM-0050000 [EXEC] ORACLE.IAM.PLATFORM.UTILS.SUPERRUNTIMEEXCEPTION: ORACLE.IAM.PLATFORM.UTILS.SUPERRUNTIMEEXCEPTION: -15: ERROR IN XL_SP_RECONBLKACNTRQDCMTCHCRUD WHILE PROCESSING BATCH ID 18 ERROR OCCURED IN XL_SP_RECONBLKCHILDMTHACNTCRUD WHILE PROCESSING BATCH ID - 18 ACTION RULE 'CREATE USER' FOR NO ENTITY MATCH FOUND IS INVALID. YOU MUST PASS A VALID NO USER MATCH FOUND ACTION RULE. -20101 -ERROR- ORA-20101: [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.PROCESSBATCH(ACTIONENGINE.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONENGINE.EXECUTE(ACTIONENGINE.JAVA) [EXEC] AT ORACLE.IAM.RECONCILIATION.IMPL.ACTIONTASK.EXECUTE(ACTIONTASK.JAVA)
このエラーの原因として、有効なアクション・ルールが追加されていないことが考えられます。図23-3に、無効なアクション・ルールが表示されたDesign Console画面を示します。
有効なアクション・ルールを追加すると、アカウントが正常に作成されます。図23-4に、有効なアクション・ルールが表示されたDesign Console画面を示します。
プロファイルが生成されていない
すべてのプロセス・データ・フィールド・マッピングを削除し、プロセス・フォームとマッピングを追加し、WHERE句選択を追加し、一致ルールを更新した場合に、プロファイルが生成されず、「有効なアクション・ルールの欠落」と同じエラーがログに記録されます。
一致ルールがNULLまたは非アクティブである
一致ルールがNULLまたは非アクティブな場合、次のエラーがログに記録されます。
Thor.API.Exceptions.tcAPIException: oracle.iam.reconciliation.exception.ReconciliationException: Matching rule where clause is null
プロファイルXMLファイルを更新します。プロファイルXMLファイルを手動で更新する場合は、次のサンプルXMLを、プロファイル内の明確に定義されたアクティブな一致ルールに使用します。
<ReconUserMatchingRule repo-type="RDBMS" name="AS400TrustedUser Recon Rule"> <RRL_UPDATE>1301687006000</RRL_UPDATE> <RRL_VALID>1</RRL_VALID> <RRL_OPERATOR>AND</RRL_OPERATOR> <RRL_DESCRIPTION>CONNECTOR_NAMETrustedUser Recon Rule</RRL_DESCRIPTION> <RRL_ACTIVE>1</RRL_ACTIVE> <ReconRuleElement repo-type="RDBMS" id="RRE1"> <RRE_SEQUENCE>1</RRE_SEQUENCE> <RRE_UPDATE>1301689575000</RRE_UPDATE> <RRE_FIELDNAME>User Login</RRE_FIELDNAME> <RRE_CASESENSITIVE>0</RRE_CASESENSITIVE> <RRE_VALID>1</RRE_VALID> <RRE_TRANSFORM>None</RRE_TRANSFORM> <RRE_OPERATOR>Equals</RRE_OPERATOR> <ORF_KEY Resource="CONNECTOR_NAMETrustedUser" ReconField="User Login"/> </ReconRuleElement> </ReconUserMatchingRule>
Design Consoleを使用した変更の場合は、ルールを更新し、プロファイルを再生成します。
イベントの子データの欠落
イベントの子データを渡さなかった場合にデータが削除されないという現象が、アカウントのターゲットですべての子データが削除されている場合に一部のコネクタで発生します。
アカウントからユーザーへの非定型リンクがある場合に、複数のアカウントが一致する
アカウントからユーザーへの非定型リンクがある場合は、特定のユーザーのアカウントを指定しても、アカウントの一致ルールに基づいて、複数のアカウントが一致する場合があります。これは、一致したアカウント・リストからアカウントを選択し、Identity System Administrationで「リンク」をクリックすることによって解決できます。
この項では、次のデータベース関連のリコンシリエーション問題について説明します。
Oracle Database 11gリリース1の重要な個別パッチの欠落
RDBMS個別パッチ# 7614692が欠落している場合は、次のエラーがログに記録されます。
ORA-02291: INTEGRITY CONSTRAINT (FK_RECON_EVENTS_USR) VIOLATED - PARENT KEY NOT FOUND [EXEC] ORA-06512: AT "OIM_SP_RECONBLKUSERCRUD" [EXEC] ORA-06512: AT "OIM_SP_RECONBLKUSRMLSWRAPPER" [EXEC] ORA-06512:
この問題を解決するには、次のパッチがOracle Database 11gリリース1(11.1.0.7.0)にインストールされている必要があります。
p7614692_111070
p7000281_111070
p8327137_111070
p8617824_111070
Oracle Database 11gリリース2の重要な個別パッチの欠落
一部のSQLスクリプトを実行すると、Oracle Database 11gリリース2(11.2.0.2.0)で誤った結果または矛盾した結果が生成される場合があり、これは以前のリリースのOracle Databaseでは発生しませんでした。
この問題を解決するには、Oracle Database 11gリリース2用のパッチ# 10259620がインストールされている必要があります。
低速なリコンシリエーションおよびエラー・ログ内の類似トレース
SQLスクリプトに大量の一致ルールがある場合、エンティティ表が低速になるのは、データベースでの全表スキャンや最適化されていないSQL計画が原因であると考えられます。
リコンシリエーションは、一致ルールの列が適切に索引付けされていなかったり、スキーマ統計が古いと、低速になる場合があります。低速の結果として、次のようなエラー・ログが記録されます。
oracle.iam.platform.utils.SuperRuntimeException: java.sql.SQLException: ORA-01013: user requested cancel of current operation ORA-06512: at "XL_SP_RECONBLKROLEMATCH" ORA-06512: at "OIM_SP_RECONBLKROLEMLSWRAPPER" ORA-06512: at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java) at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkMana gerImpl.java) at weblogic.work.ExecuteThread.execute(ExecuteThread.java) at weblogic.work.ExecuteThread.run(ExecuteThread.java) Caused by: java.sql.SQLException: ORA-01013: user requested cancel of current operation ORA-06512: at "XL_SP_RECONBLKROLEMATCH" ORA-06512: at "OIM_SP_RECONBLKROLEMLSWRAPPER" ORA-06512: . at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java) at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java)
この問題の解決方法:
一致ルールの列に対して適切な索引がすべて作成されていることを確認します。
データベースのスキーマ統計がガイドラインに従って収集されていることを確認します。
Oracle Identity Managerデータベース内のRECON_EXCEPTIONS表は、アカウント・リコンシリエーション中に生成されるエラー・メッセージを取得するために使用されます。このデータは、レポートの生成目的で収集されます。
関連項目: アカウント・リコンシリエーションの詳細は、Oracle Fusion Middleware Oracle Identity Managerユーザーズ・ガイドのアカウント・リコンシリエーションに関する項を参照してください。 |
リコンシリエーションが削除されたユーザーに一致することが検出された場合は、USER_DELETEDをREX_EXCEPTION列に、削除されたユーザーのキーをRECON_EXCEPTIONS表のUSR_KEY列に挿入する必要があります。
一致が検出されなかった場合は、USER_NOT_FOUNDをREX_EXCEPTION列に挿入します。
アカウント一致が検出された場合は、アカウントがすでにプロビジョニング解除されているかどうかチェックします。それからプロビジョニングされるユーザーに対して、RECON_EXCEPTIONS表のREX_EXCEPTION列に値RESOURCE_DEPROVISIONED
を挿入します。
RECON_EXEPTIONS表に例外データを移入するには:
変更タイプ!= ('Modify' , 'Delete')でイベント・ステータスが('Single User Match Found', 'Single Org Match Found')のイベントをすべてフェッチします。
次の手順を実行して、エンティティに対してリソース・オブジェクトをプロビジョニングします。
RECON_EXCEPTION DB表から例外データを収集します。これを行うには、次のいずれかを実行します。
XL.EnableExceptionReportsプロパティの値がTRUEかどうかをチェックします。これがTRUEに設定されている場合は、次のステップに進みます。そうでない場合は、例外データを収集しないでください。
プロビジョニングされたリソース・オブジェクトに対してobj表のobj_initial_recon_dateを選択し、今日の日付以前かどうかチェックします。以前の日付が表示される場合は、次のステップに進みます。そうでない場合は、例外データを収集しないでください。
リソース・オブジェクトをユーザーにプロビジョニングするときには、Oracle Identity Managerでリソース・オブジェクトがすでにプロビジョニング解除されているかどうかチェックします。:
リソース・オブジェクトがすでにプロビジョニング解除されている場合は、プロビジョニングされるユーザーに対して、RECON_EXCEPTIONS表のREX_EXCEPTION列に値RESOURCE_DEPROVISIONED
を挿入します。
リソース・オブジェクトがプロビジョニング解除されていない場合は、プロビジョニングされるユーザーに対して、RECON_EXCEPTIONS表のREX_EXCEPTION列に値RESOURCE_NEVER_PROVISIONED
を挿入します。
表23-6に、リコンシリエーション・エラーが発生した場合に実行できるトラブルシューティング手順を示します。
表23-6 リコンシリエーション・プロファイル構成の失敗のトラブルシューティング
問題 | 解決策 |
---|---|
プロファイルが無効なため、次の例外でロードに失敗します。 oracle.iam.reconciliation.exception.ConfigNotFoundExceptionまたは oracle.iam.reconciliation.exception.Configおよび内部例外org.xml.sax.SAXParseException |
次のいずれかを実行します。
|
有効なリコンシリエーション・プロファイルXMLをシステムにインポートする際に、必要な構成の作成に失敗します。 |
profile.configure属性を確認します。この属性の値は、trueである必要があります。 profile.active属性を確認します。これの値は、trueである必要があります。または、この属性が存在しない場合、profile.activeがtrueであることを意味します。 |
次のエラーが生成されます。
oracle.iam.reconciliation.exception.ReconciliationException: Exception occurred while inserting data into table STAGING_TABLE_NAME due to STAGING_TABLE_NAME
これは、有効なリコンシリエーション・プロファイルがロードされており、このプロファイルによってOracle Identity Managerで構成が作成されていないことを意味します。 |
profile.configure属性およびprofile.active属性を確認します。 |
この項では、コネクタ表およびリコンシリエーション表に必要な索引を指定してパフォーマンスを向上させる方法について説明します。内容は次のとおりです。
注意: 効率的な重複権限または子データ検証を有効にするように、リコンシリエーション・フィールド・マッピングの子データの権限属性およびキー属性の両方を構成することをお薦めします。権限または子データの重複検証の詳細は、『Oracle Fusion Middleware Oracle Identity Manager管理者ガイド』の権限または子データの重複検証に関する説明を参照してください。 |
Oracle Identity Managerをインストールすると、必要な索引がOracle Identity Managerデータベース・スキーマに作成されます。ただし、Oracle Identity Managerのいくつかの機能の動的な性質のために、追加の索引が必要になる場合があります。これは、特にリコンシリエーションに当てはまります。
リコンシリエーションでは、照合アルゴリズムを使用して、変更がリクエストされたユーザー、アカウント、ロールまたは組織がOracle Identity Managerにすでに存在するかどうかが検索されます。照合アルゴリズムでは、Oracle Identity Managerの一連の列のデータとターゲット水平表の列のデータが比較されます。照合ルールを格納する列は、リコンシリエーション・プロファイルに定義されます。照合操作のパフォーマンスを迅速に改善するためには、照合ルールの列に正しい索引が作成されている必要があります。
適切な索引を識別する推奨方法を示すために、メタデータ・ストア(MDS)リポジトリに存在するサンプルActive Directory (ADUser)プロファイルを例として取り上げます。
リコンシリエーションに対する索引の選択
一致ルール基準に基づいて索引を選択するには、次の手順を実行します。
テキスト・エディタでADプロファイル・ファイルを開きます。
注意: 「ユーザーが修正可能なメタデータ・ファイルの移行」の説明に従い、Oracle Enterprise Managerを使用してADユーザー・プロファイルをMDSからインポートする必要があります。 |
図23-5に示すように、ADプロファイル内のすべての<matchingRule>タグ要素を検索します。
それぞれの一致ルールを構成する列を識別した後は、それに応じて索引を作成します。
注意:
|
データベース統計は、SQL問合せの実行時にOracleオプティマイザが最適な計画を選択するために不可欠な情報です。Oracle Identity Managerスキーマの統計は、定期的に収集することをお薦めします。Oracle Identity Manager 11g リリース2 (11.1.2)では、リコンシリエーション・プロセスに多数のデータベースSQL機能が使用されるため、スキーマ統計が更新されていることを確認してからリコンシリエーションを実行してください。
注意:
|
また、Oracle Identity Managerリコンシリエーション・プロセスは、データ量が多く、大量のデータが高速で移動するため、データベース統計によって基礎となるデータが正確に表現される必要があります。そのためには、次のガイドラインを参考にしてください。
統計が、Oracle Identity Managerスキーマの新規の設定のリコンシリエーション、または既存のデータがない(あるとしてもわずかな)少量のリコンシリエーションを対象として収集されるようにします。Oracle Identity Managerの関連する表の最大行数は、100から1000までの行にする必要があります。表の例には、信頼できるソース・リコンシリエーションのUSR表や、ターゲット・リソースのリコンシリエーションの親アカウント表があります。
20000以上のユーザーやアカウントなど、大量のデータの移動が予想されるリコンシリエーションが開始した後も、統計が適切な表現のデータ配信になるために、次のようにしてOracle Identity Managerスキーマ統計を収集してください。
リコンシリエーションが正常に開始して、しばらく実行されていた場合にのみ、初期コレクション後の統計を収集するように計画します。これを確認するには、信頼できるソース・リコンシリエーションのUSR表や、ターゲット・リソースのリコンシリエーションの親アカウント(UD_*)表など、Oracle Identity Managerスキーマで主要な複数の表の件数をチェックします。
リコンシリエーションによってUSR表または親アカウント表で約20000から25000行が移動した後で、統計を収集します。
注意:
|
統計を収集した後、パフォーマンスは即時には改善されない可能性があります。ただし、Oracle Databaseの共有プールから以前のSQL計画が消去され、さらに効率的な新しい計画が作成されるに従って、パフォーマンスは向上します。