ヘッダーをスキップ
Oracle Identity Manager Audit Report開発者ガイド
リリース9.0.3
E05097-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

2 Oracle Identity Managerのユーザー・プロファイル監査機能

ユーザー・プロファイル監査には、ユーザー・プロファイルの属性、ユーザー・メンバーシップ、リソース・プロビジョニング、アクセス・ポリシーおよびリソース・フォームへの変更に関する情報が含まれます。

この章の内容は次のとおりです。

ユーザー・プロファイル監査用に収集されるデータ

Oracle Identity Managerを監査およびコンプライアンス・モジュールとともにインストールすると、デフォルトでユーザー・プロファイル監査機能が有効になり、監査レベルはResource Formに設定されます。監査レベルは、フォーム・データに対するアテステーションに必要な最低レベルを指定します。

監査レベルは、管理およびユーザー・コンソールのシステム・プロパティ・ページで、キーワードXL.UserProfileAuditDataCollectionを使用して構成します。詳細は、「監査レベル」を参照してください。

この項の内容は次のとおりです。

ユーザー・プロファイル・データの収集とアーカイブ

Oracle Identity Managerでは、ユーザー・プロファイルのスナップショットを取得してデータベースの監査表に格納し、ユーザー・データの変更のたびにスナップショットを更新します。スナップショットには、ユーザーの過去のデータがすべて含まれています。リリース9.0.3のOracle Identity Managerの場合、ユーザー用に監査を作成したときに、たとえ最初のスナップショットが存在しなくても、スナップショットが生成されます。現在のスナップショットが最初のスナップショットとして取り扱われます。

次に、ユーザー・プロファイルの内容とこれらのコンポーネントを構成する表を示します。

  • ユーザー・レコード: USR表(すべてのユーザー定義ファイル(UDF)を含む)

  • ユーザー・グループ・メンバーシップ: USGUGPおよびRUL情報

  • ユーザー・ポリシー・プロファイル: UPPおよびUPD情報


注意:

Oracle Identity Manager管理およびユーザー・コンソールを使用してグループ名を変更すると、ユーザーの次のスナップショットまで、データベース内のユーザー・プロファイル監査の表にその変更は反映されません。

ユーザー・リソース・プロファイルは次の内容で構成されています。

  • ユーザー・リソース・インスタンス: OIUOBIOSTおよびOBJ情報

  • リソース・ライフサイクル(プロビジョニング)・プロセス: ORCPKGTOSSTAOSISCHMIL

  • リソース状態(プロセス)フォーム: UD_*(子表を含む)

ユーザー・プロファイル・スナップショットのXML表現

Oracle Identity Managerでは、スナップショット・データをXMLとして格納します。XMLにより、スナップショットの更新が発生するイベントに関する情報は、読取り可能な形式になります。次の各項では、スナップショットおよびユーザー・プロファイル監査(UPA)表のフィールドに対する変更におけるXMLについて説明します。

スナップショットのXMLファイル

スナップショットのXMLファイルには、ユーザー・プロファイルに関連する属性がすべて記述されます。このファイルの一番上の要素は、UserProfileSnapshotです。この要素には、各XMLエントリのユーザー・キーとバージョンが含まれます。後続の各要素には、次のようにユーザー・プロファイルに関する情報が格納されます。

  • UserInfo: ユーザー・プロファイルに関する一般情報

  • GroupMembership: グループ・メンバーシップに関する情報

  • PolicyProfile:特定のリソースのプロビジョニングを許可したポリシーに関する情報

  • ResourceProfile: すべてのプロビジョニングされたリソースに関する情報

    • ResourceInstance: ユーザーにプロビジョニングされた各リソースに関する情報

    • ProcessData: UDFに格納されるデータに関する情報

次のコードは、スナップショットのXMLの例です。

例2-1 スナップショット・コード

<?xml version="1.0" encoding="UTF-8"?>
- <UserProfileSnapshot key="202" version="1.0">
- <UserInfo>
    <Attribute name="Users.First Name">Testing02First</Attribute>
    <Attribute name="Users.Role">Full-Time</Attribute>
    <Attribute name="Users.Disable User">0</Attribute>
    <Attribute name="Users.Email">amol@thortech.com</Attribute>
    <Attribute name="Users.Status">Active</Attribute>
    <Attribute name="Users.Update Date">2007-01-05 17:12:25.181</Attribute>
    <Attribute name="Users.User ID">TESTING02USER9</Attribute>
    <Attribute name="Users.Xellerate Type">End-User</Attribute>
    <Attribute name="Users.Last Name">Testing02Last</Attribute>
    <Attribute name="Users.Provisioned Date">2007-01-05 17:11:56.868</Attribute>
    <Attribute encrypted="true" name="Users.Password"
                password="true">8YxO3YSKDXJLmcsKeZhUSw == </Attribute>
    <Attribute name="Users.Creation Date">2007-01-05 17:11:56.868</Attribute>
    <Attribute name="Users.Lock User">0</Attribute>
    <Attribute key="1" name="Users.Updated By Login">XELSYSADM</Attribute>
    <Attribute name="Users.Password Reset Attempts Counter">0</Attribute>
    <Attribute key="1" name="Organizations.Organization Name">Xellerate Users
    </Attribute>
    <Attribute name="Users.Login Attempts Counter">0</Attribute>
    <Attribute key="1" name="Users.Created By Login">XELSYSADM</Attribute>
  </UserInfo>
- <GroupMembership>
-   <Group key="3">
      <Attribute name="Groups-Users.Creation Date">2007-01-05 17:12:30.299
      </Attribute>
      <Attribute name="Groups-Users.Update Date">2007-01-05 17:12:30.299
      </Attribute>
      <Attribute name="Groups-Users.Membership Status">Active</Attribute>
      <Attribute key="1" name="Groups-Users.Updated By Login">XELSYSADM
      </Attribute>
      <Attribute name="Groups-Users.Membership Type">Direct</Attribute>
      <Attribute key="3" name="Groups.Group Name">ALL USERS</Attribute>
      <Attribute key="1" name="Groups-Users.Created By Login">XELSYSADM
      </Attribute>
    </Group>
  </GroupMembership>
- <PolicyProfile>
-   <Policy key="1">
      <Attribute name="UPD_ALLOW_LIST">Res2</Attribute>
      <Attribute name="Access Policies.Key">1</Attribute>
      <Attribute name="Access Policies.Name">AP2</Attribute>
    </Policy>
  </PolicyProfile>
- <ResourceProfile>
-   <ResourceInstance key="57">
      <Attribute name="Users-Object Instance For User.Creation Date">2007-01-05
                  17:12:36.599 </Attribute>
      <Attribute key="45" name="Objects.Object Status.Status">Enabled</Attribute>
      <Attribute key="1" name="Access Policies.Name">AP2</Attribute>
      <Attribute key="6" name="Objects.Name">Res2</Attribute>
      <Attribute name="Users-Object Instance For User.Provisioned By Method">
                  Access Policy</Attribute>
      <Attribute key="1"
                  name="Users-Object Instance For User.Provisioned By Login">
            XELSYSADM</Attribute>
      <Attribute name="Users-Object Instance For User.Provisioned By ID">1
      </Attribute>
      <Attribute key="AP2" name="Access Policies.Key">1</Attribute>
-     <ProcessData>
-       <Parent key="8">
-         <FormInfo>
            <Attribute key="8" name="Structure Utility.Table Name">UD_RES2_PP
             </Attribute>
             <Attribute key="0" name="Structure Utility.Structure Utility Version
                          Label.Version Label">Initial Version</Attribute>
          </FormInfo>
-         <Data key="54">
            <Attribute name="UD_RES2_PP_B">bbbbbbbbbbbb</Attribute>
            <Attribute name="UD_RES2_PP_A">aaaaaaaaaaaa</Attribute>
            <Attribute key="1" name="Access Policies.Name">AP2</Attribute>
          </Data>
        </Parent>
-       <Children>
-         <Child key="9">
-           <FormInfo>
             <Attribute key="9" name="Structure Utility.Table Name">UD_RES2_CP
              </Attribute>
             <Attribute key="0" name="Structure Utility.Structure Utility Version
                                Label.Version Label">Initial Version</Attribute>
            </FormInfo>
-           <Data key="63">
              <Attribute name="UD_RES2_CP_C">Entry1C</Attribute>
              <Attribute name="UD_RES2_CP_D">Entry1D</Attribute>
              <Attribute key="1" name="Access Policies.Name">AP2</Attribute>
            </Data>
          </Child>
        </Children>
      </ProcessData>
    </ResourceInstance>
-   <ResourceInstance key="74">
      <Attribute name="Users-Object Instance For User.Creation Date">2007-01-05
                   17:22:37.597</Attribute>
      <Attribute key="33" name="Objects.Object Status.Status">Provisioning
      </Attribute>
      <Attribute key="5" name="Objects.Name">Res1</Attribute>
      <Attribute name="Users-Object Instance For User.Provisioned By Method">
                  Direct Provision</Attribute>
      <Attribute key="1" name="Users-Object Instance For User.Provisioned By
                  Login"> XELSYSADM</Attribute>
      <Attribute name="Users-Object Instance For User.Provisioned By ID">
                  XELSYSADM</Attribute>
      </ResourceInstance>
    </ResourceProfile>
  </UserProfileSnapshot>

スナップショットに対する変更用のXMLファイル

元のスナップショットに対する変更は、XMLファイルに格納されます。このファイル内の情報には、特定のトランザクションのユーザー・プロファイルの属性に影響する変更がすべて記述されます。このファイルの一番上の要素は、Changesです。特定のトランザクション中に行われた変更はすべて、各Change要素の下に表示されます。where属性で変更の場所が特定されます。監査エンジンにより、前のスナップショットのXMLファイルが変更されます。

次に、スナップショットの変更が含まれるXMLファイルを示します。

例2-2 スナップショット変更ファイル

<?xml version="1.0" encoding="UTF-8"?>
- <Changes>
-   <Change action="insert" order="1"
    where="/UserProfileSnapshot/ResourceProfile/ResourceInstance[@key='74']">
-     <Attribute name="Users-Object Instance For User.Creation Date">
        <OldValue />
        <NewValue>2007-01-05 17:22:37.597</NewValue>
      </Attribute>
-     <Attribute name="Objects.Object Status.Status">
        <OldValue key="" />
        <NewValue key="35">Ready</NewValue>
      </Attribute>
-     <Attribute name="Objects.Name">
        <OldValue key="" />
        <NewValue key="5">Res1</NewValue>
      </Attribute>
-     <Attribute name="Users-Object Instance For User.Provisioned By Method">
        <OldValue />
        <NewValue>Direct Provision</NewValue>
      </Attribute>
-     <Attribute name="Users-Object Instance For User.Provisioned By Login">
        <OldValue key="" />
        <NewValue key="1">XELSYSADM</NewValue>
      </Attribute>
-     <Attribute name="Users-Object Instance For User.Provisioned By ID">
        <OldValue />
        <NewValue>XELSYSADM</NewValue>
      </Attribute>
     </Change>
-   <Change action="update" order="2"
     where="/UserProfileSnapshot/ResourceProfile/ResourceInstance[@key='74']">
-     <Attribute name="Objects.Object Status.Status">
        <OldValue key="35">Ready</OldValue>
        <NewValue key="33">Provisioning</NewValue>
      </Attribute>
    </Change>
  </Changes>

UPA表の情報は、レポート作成のための問合せがしやすいように、UPA_USRUPA_FIELDSUPA_RESOURCEおよびUPA_GRP_MEMBERSHIPに正規化されます。

ユーザー・プロファイル・スナップショットの保存

Oracle Identity Managerでユーザー・プロファイルのスナップショットを取得すると、そのスナップショットはUPA表に格納されます。この表の構造は、表2-1に示すとおりです。

表2-1 監査表の構造

フィールド

エントリID

監査レコードのキー。

ユーザー・キー

このエントリにユーザー・スナップショットが記録されるユーザーのキー。

開始日

スナップショット・エントリが有効になった日付。

終了日

スナップショット・エントリが無効になった日付。現在のユーザー・プロファイルを表すエントリの場合、終了日はNULLに設定されます。

デルタ

変更のXML表現専用。

ユーザー・プロファイル・スナップショット

ユーザー・プロファイル・スナップショットのXML表現。

ソース

エントリのソース。この変更と使用されるAPIの責任を負うユーザーのユーザー名。

署名

顧客が否認防止のためにスナップショットにサインするための列。


スナップショット取得のトリガー

ユーザー・プロファイル・スナップショットのデータ要素が変更されると、Oracle Identity Managerでは新しいユーザー・プロファイル・スナップショットを取得します。次のイベントにより、新しいスナップショットの作成がトリガーされます。

  • リコンシリエーション、直接、アダプタなどによる、あらゆる種類のユーザー・レコードに対する変更

  • ユーザーに対するグループ・メンバーシップの変更

  • ユーザーに適用されるポリシーの変更

  • ユーザーへのリソースのプロビジョニング

  • ユーザーに対するリソースのプロビジョニング解除

  • プロビジョニングされたリソースに対するプロビジョニング関連イベント

    • リソース・ステータスの変更

    • プロビジョニング・プロセスへのプロビジョニング・タスクの追加

    • プロビジョニング・プロセスのプロビジョニング・タスクに対する更新(ステータス変更、エスカレーションなど)

    • プロセス・フォーム・データの作成または更新

監査エンジン

監査レコードの量がパフォーマンスに影響を及ぼさないようにするため、複雑なデータの抽出、処理および記録は監査エンジンが実行します。監査エンジンは、トランザクション処理中ではなく、Oracle Identity Managerにおける処理のすべてのステップ間で機能します。定義済イベントのトリガーが起動すると、監査エンジンはスナップショットを取得し、オフライン処理を実行してスナップショットを生成および記録します。

残りの項の内容は次のとおりです。

監査レベル

ユーザー・プロファイル監査機能は、監査およびコンプライアンス・モジュールをインストールするとデフォルトで有効になり、監査レベルはResource Formに設定されます。監査レベルの変更後には、Linuxの場合はGenerateSnapshot.shスクリプトを、Windowsの場合はGenerateSnapshot.batスクリプトを実行する必要があります。このスクリプトは、Oracle Identity Managerデータベース内のすべてのユーザーを調査し、新しいスナップショットを監査レベルに基づいて生成します。


注意:

監査レベルの変更後は、必ずGenerateSnapshotスクリプトを実行してからユーザーにシステムへのアクセスを許可してください。

監査には、アクティブ・トリガー、監査エンジンの動作、監査スナップショットに収集されるデータなど、監査詳細のレベルを指定できます。

監査レベルは、システム構成プロパティとしてOracle Identity Managerに指定します。サポートされるレベルは、次のとおりです。

  • Process Task: リソース・ライフサイクル・プロセスでユーザー・プロファイル・スナップショット全体を監査します。

  • Resource Form: ユーザー・レコード、グループ・メンバーシップ、プロビジョニングされたリソース、リソースに関連付けられたフォーム・データを監査します。

  • Resource: ユーザー・レコード、グループ・メンバーシップ、プロビジョニングされたリソースを監査します。

  • Membership: ユーザー・レコードおよびユーザー・グループ・メンバーシップのみを監査します。

  • Core: ユーザー・レコードのみを監査します。

  • None: 監査は格納されません。


注意:

監査レベルの指定では、大/小文字が区別されます。

ポストプロセッサの使用

AUD表は、監査メタデータのXMLを格納します。監査エンジンでは、メタデータを使用してスナップショットのXMLファイルおよびスナップショットに対する変更用のXMLファイルを作成します。メタデータのXMLは、特に、スナップショット、変更用のXMLファイルおよびポストプロセッサを格納する表に関する情報を指定します。ポストプロセッサは、監査エンジンがスナップショットおよび変更のXMLを生成して監査表に格納した後に、データを処理します。

ポストプロセッサのタイプ

ポストプロセッサには、内部監査タイプとカスタム・タイプの2種類があります。内部監査ポストプロセッサは、監査者のXMLメタデータに定義されます。たとえば、ユーザー・プロファイルの監査者は、XMLファイルをレポート表UPA_USRUPA_FIELDSUPA_GRP_MEMBERSHIPおよびUPA_RESOURCEに正規化する内部ポストプロセッサを保持します。これらの表は、レポート・モジュールで適切なレポートを生成するために使用されます。

カスタム・ポストプロセッサの作成

特定の監査者の機能またはレポート機能を拡張するには、カスタム・ポストプロセッサを作成します。カスタム・ポストプロセッサは、XMLメタデータには定義されません。これらは、Oracle Identity Managerの参照表に定義します。

カスタム・ポストプロセッサを作成するには、次のようにします。

  1. CustomAuditDataProcessorクラスから拡張する新しいクラスを作成し、processAuditDataメソッドを実装します。

  2. Oracle Identity Manager Design Consoleで、次のように新しい参照定義を作成します。

    1. コードAudit.AuditorName.CustomProcessorsをコールします。AuditorNameは、ポストプロセッサで使用する監査者の名前です。

      たとえば、ユーザー・プロファイル監査の場合、監査者の名前をUserProfileAuditorとします。

    2. 「Lookup Type」オプションを選択します。

    3. 監査者に関連付けられたグループ名を入力します。この場合はUPA Processors Groupです。

    4. 参照コード情報を追加します。

      これは、作成したクラスへの完全修飾されたクラスパスです。コード・キーおよびデコードは、クラスパスである必要があります。

    5. 「Language」設定にはenと入力し、「Country」設定にはUSと入力します。

  3. クラスを作成して参照情報を設定したら、OIM_HOME/JavaTasksディレクトリの.jarファイルに配置します。

監査に使用される表

ユーザー・プロファイル監査では、データベース内の次の表を使用します。

Oracle Identity Managerのレポート・モジュールでは、次の表を使用します。

監査メッセージ再発行タスク

Oracle Identity Managerには、監査メッセージ再発行タスクというスケジュール済タスクがあります。このタスクは、データベース接続の問題のために処理されなかった監査JMSメッセージを再発行します。処理のためにJMSメッセージを取得する際に問題が検出されると、JMSシステムは構成された回数まで再試行を行います。構成された再試行回数を超えても処理されないと、メッセージは最終的に送達不能キューに入れられます。

実際のデータはJMSシステム内にはありません。すべての監査メッセージ・データはAUD_JMSに格納されます。対応するJMSメッセージにAUD_JMS IDが付けられて、送信されます。処理のためにJMSメッセージを取得すると、データがAUD_JMSから取り出されます。監査メッセージ再発行タスクを使用し、AUD_JMSのIDをJMSシステムに返送すると、メッセージを再発行できます。

更新される同じエンティティ(ユーザー・プロファイルの場合、エンティティはユーザー・キー)に関するメッセージはすべて、解決されるまでAUD_JMSに存在します。監査メッセージ再発行タスクを実行すると、AUD_JMSのエントリはなくなります。AUD_JMSのエントリが存在する場合、メッセージが破損しているか、メッセージのプロセッサがメッセージを理解できない可能性があります。単一のユーザーに対する監査はそれぞれ順次実行されるため、イベントの発生時期に従って監査はログに記録されます。

デフォルトでは、監査メッセージ再発行タスクは毎日実行されますが、特定の開始日および時間(システムがあまりビジーでない時期が好ましい)を構成する必要があります。これにより、特にメッセージ数が多い場合に、メッセージの処理に十分な時間が与えられます。このタスクは、定期的に実行する必要があります。管理メッセージ再発行タスクに対して特定の開始日および時間を構成する場合は、Oracle Identity Manager Design Consoleを使用します。管理メッセージ再発行タスクを次のように構成する場合にもDesign Consoleを使用できます。

リリース9.0.3では、Design Consoleのシステム・プロパティ・セクションから構成可能な新しいシステム・フラグXL.SendAuditJMSMessageを導入しています。このフラグのデフォルトはTrueです。Falseに設定すると、監査エンジンはAUD_JMSの中にエントリを作成しますが、JMSメッセージは送信しません。Flaseの場合は、AUD_JMSのエントリを処理するために、スケジュール済ReissueAuditMessageタスクを実行する必要があります。

表2-2 は、Design Consoleで構成可能なスケジュール済ReissueAuditMessageタスクの属性をまとめたものです。

表2-2 ReissueAuditMessage属性

属性

Key: スケジュール・タスクがAUD_JMSのエントリを処理する方法

有効なKeyは次のとおり:

  • identifier

  • all

  • デフォルト: all

Value: Key属性に対応する値

有効なValueは次のとおり:

  • Keyがidentifierの場合、処理される識別子を指定します。複数の値を指定する場合は、カンマ(",")で区切ってください。

  • Keyがallの場合、このパラメータは何も作用しません。

QueueDelay

メッセージがキューに送信されるまでの期間をしきい値として時間単位で構成する。

このパラメータの目的は、他のタスクの監査記録を処理する前に、そのタスクを完了させることです。

デフォルト: 5


旧監査メッセージ処理タスク

リリース9.0.3では、新しいスケジュール済タスクとして、旧監査メッセージ処理タスクが追加されました。このスケジュール済タスクは将来的な使用のための予約タスクで、将来のリリースでは改正あるいは廃止される可能性があります。このタスクを有効にしたり、実行したりしないでください。