この章では、Oracle Virtual DirectoryのJavaプラグインについて説明します。この章の内容は次のとおりです。
プラグインを使用すると、情報の区分化機能でOracle Virtual Directoryを拡張し、特定のビジネスや技術の要件に対応することができます。また、プラグインを使用して、カスタム・ロジックをトランザクションの一部として提供することや、カスタム・データ・ソースに簡単に接続することができます。Oracle Virtual Directoryは、JavaプラグインおよびPythonマッピング・プラグインの2種類をサポートしています。
注意: この章は、Oracle Virtual Directory用のJavaプラグインに特化していますが、操作上、Oracle Virtual Directoryではこれら2種類のプラグインは同等に扱われます。この章では、プラグインはJavaプラグインを表します。マッピング・プラグインの詳細は、第5章「Oracle Virtual Directoryのマッピングの概要」を参照してください。 |
Oracle Virtual Directoryには、分析、監査、キャッシング、動的グループ用のプラグインを含む、様々な目的の多数のプラグインが含まれています。また、様々な方法を使用して、仮想ディレクトリ内でのプラグインの配置を完全に制御してプラグインをデプロイできます。次に例を示します。
プラグインを「接続」し、結合された再利用可能な機能を構築する。
プラグインがすべてのリクエストとレスポンスを処理するように、「グローバル」サーバー・レベルでプラグインをデプロイする。
プラグインが特定のアダプタに対するリクエストとレスポンスを処理するように、アダプタ・レベルでプラグインをデプロイする。
たとえば、特定のMicrosoft Active Directoryサーバー上のみで、Active Directoryユーザーの標準inetOrgPersonオブジェクト・クラスへの変換を行うマッピングが実行された後にのみ実行されるCacheプラグインをデプロイすることができます。
注意:
|
図4-1に、Oracle Virtual Directoryのプラグイン・フレームワークの3層アーキテクチャを示します。
プラグインはチェーンを形成するように配置されています。Oracle Virtual Directoryがリクエストを受診すると、リクエストは次の順序でOracle Virtual Directoryに渡されます(図4-1を参照)。
グローバル・サービス・インタフェース(GSI)
グローバル・プラグインのチェーン
アダプタ・サービス・インタフェース(ASI)
アダプタ・プラグインのチェーン
グローバル・プラグインは、すべてのリクエストに対してコールされます。インバウンド・リクエストの場合、すべてのグローバル・プラグインが実行されると、リクエストはASIに移動します。ASIは、ルーティングおよびアダプタの処理が決定されるOracle Virtual Directoryのコンポーネントです。ルーティング・システムによりリクエストにどのアダプタが含まれるかが決定されると、選択されたアダプタ・プラグインが実行されます。アダプタによりレスポンスが生成され、さらに処理およびフィルタ処理を実行するためにチェーンに戻されます。
Oracle Virtual Directoryでは、プラグインをグローバルに実行するべきか、または1つのアダプタのコンテキスト内で実行するべきかを非常に柔軟に判断できます。プラグインがいつ使用されるかをさらに制限する必要が生じる場合もあります。たとえば、アダプタがMicrosoft Active Directoryドメインのかわりになるように設定されているとします。アダプタは、DC=VAN,DC=Oracle,DC=comを指しています。ドメイン・ツリー内のそのポイントの下には、CN=UsersコンテナおよびCN=Groupsコンテナがあります。プラグインまたはマッピングにネームスペース・フィルタを追加すると、ツリーの一部にのみマッピングまたはプラグインを適用することができます。
Oracle Virtual Directoryでは、プラグインをグローバルに実行するべきか、または1つのアダプタのコンテキスト内で実行するべきかを非常に柔軟に判断できます。プラグインがいつ使用されるかをさらに制限する必要が生じる場合もあります。たとえば、アダプタがMicrosoft Active Directoryドメインのかわりになるように設定されているとします。アダプタは、DC=VAN,DC=Oracle,DC=comを指しています。ドメイン・ツリー内のそのポイントの下には、CN=UsersコンテナおよびCN=Groupsコンテナがあります。プラグインまたはマッピングにネームスペース・フィルタを追加すると、ツリーの一部にのみマッピングまたはプラグインを適用することができます。
Dump Transactionsプラグインは、各LDAP操作の全トランザクションのレコードを生成し、そのレコードをOracle Virtual Directoryのコンソール・ログに記録します。Dump Transactionsプラグインは、任意のログ・レベルで実行するように構成できます。Dump Transactionsプラグインは、ロジックがOracle Virtual Directoryシステムを通過する際に、マッピングおよび統合作業を診断するのに特に便利です。Dump Transactionsプラグインを使用すると、サーバー・ログ・レベル全体をより詳細なレベルに設定せずに、特定のアダプタの問題を分析できます。Dump Transactionsプラグインは、Oracle Virtual Directoryのプロトコル・アナライザのようなものです。
Dump Transactionsプラグインには、次の構成パラメータがあります。
プラグインによりトランザクションが記録されるログ・レベル。デフォルト値はDebugです。Oracle Virtual Directoryサーバーのログ・レベルがDebugに設定されている場合、デフォルトでDebugに設定されるため、Dump Transactionsプラグインにloglevelを設定する必要はありません。Oracle Virtual Directoryサーバーのログ・レベルがDebugではない場合は、Dump TransactionsのloglevelをOracle Virtual Directoryサーバーと同じレベルに設定する必要があります。
DynamicEntryTreeは、エントリのリーフ・ノードで検出される属性を使用して、仮想ディレクトリ・ツリー階層を生成する際に使用できる汎用目的のプラグインです。たとえば、アダプタにo=Airius.comのルートがあり、ユーザーがuid=scarter,ou=people,o=airius.comとして表されている場合、ユーザーのエントリにあるデータを使用して、DynamicEntryTreeプラグインにより、uid=scarter,ou=accounting,ou=people,o=airius.comなどの新しい階層が挿入されます。
DynamicEntryTreeプラグインには、次の構成パラメータがあります。
DynamicEntryTreeプラグインは、patterns構成パラメータを使用して一致パターンを指定することにより構成されます。patternsパラメータ値の構文は次のとおりです。
attr[=entryattr[(SUPPRESS|value)]],...
各DNコンポーネントで、等号(=)の右側の属性に代入された値を属性名に含められることを意味しています。代入の必要がない場合には、属性のみがリストされます。基本的に、元のDNに一致するコンポーネントが参照されます。値が代入されている際には、entryattrに値がない場合の処理をさらに条件付けることもできます。SUPPRESSを指定してエントリを完全に抑制するか、entryattrの名前の後の大カッコ内にデフォルト値を指定できます。
|
を使用して区切ることで、複数のパターンを定義できます。次に例を示します。
uid,ou=department(contract),ou|cn,ou=code(SUPPRESS)
このルールには2つのパターンがあります。1つ目のパターンは、dnコンポーネントがuid,ouに一致するアダプタ・ルート(o=airius.com)の下のオブジェクトに一致します。そのため、uid=scarter,ou=people,o=airius.comがマッピングに選択されます。戻される際には、department属性に値があるかどうかが確認されます。存在しない場合には、静的なテキストcontract
が代入されます。検索時に、ベースがuid=scarter,ou=accounting,ou=people,o=airius.comに設定されている場合には、新しいベースがuid=scarter,ou=people,o=airius.comになるように検索が変更され、フィルタはou=accountingの追加のandで結合された項目で変更されます。
2つ目のパターンは、cn rdnコンポーネントを持つo=airius.comの子オブジェクトに一致することが意図されています。一致した場合、エントリに属性codeがあると、その値にはcn=mygroup,ou=code12,o=airius.comが代入されます。属性code
が存在しない場合には、SUPPRESSキーワードがあるためエントリ結果は抑制されます。
Dynamic Entry Treeと同様に、Flat Treeプラグインも仮想ディレクトリ・ツリーの動的マッピングを実行します。FlatTreeプラグインではディレクトリ・ソースが圧縮されるため、すべてのエントリがアダプタ・ルートの下に直接表示されます。
FlatTreeプラグインは、2種類のデプロイ・モードで動作します。
既存のネームスペースをフラット化するための既存のアダプタの一部として動作
カスタム・アダプタ・デプロイの一部として動作
カスタム・アダプタ・デプロイの一部として、FlatTreeプラグインのアダプタ・パラメータを使用して、指定されたアダプタからデータを取得できます。これにより、データは、アダプタのカスタム・ネームスペースの一部として表示されます。この方法でデプロイすると、アダプタ・ルート・オブジェクトは定義されません。このタイプのデプロイは、重複した親ノードを作成せずに、親アダプタの上に複数のアダプタをオーバーレイする場合に便利です。
次に、FlatTreeプラグイン構成パラメータのリストと説明を示します。
criteriaには、FlatTreeプラグインを介して検索できるエントリを制限するLDAPフィルタを定義します。たとえば、criteriaをobjectclass=userと設定した場合、FlatTreeプラグインを介して戻されるのはuserオブジェクトのみです。
adapterパラメータが定義されていない場合、FlatTreeプラグインでは、データは親アダプタを介して取得されるとみなされます。定義されている場合、アダプタ・パラメータは、Oracle Virtual Directory構成内の別のアダプタ名である必要があります。FlatTreeプラグインによりこのアダプタからデータが取得され、そのエントリが親アダプタのルートにマップされます。アダプタ・パラメータが定義されている場合、子エントリのみが戻され、ルート・オブジェクトは戻されません。
Dynamic Groupsプラグインを使用すると、Oracle Virtual Directoryで(動的グループと呼ばれる)groupofuniquenames
およびgroupofurls
の両方のLDAPオブジェクト・クラスを処理し、仮想の静的なグループまたはgroupofuniquenamesの等価に変換できるようになります。プラグインにより、戻されたLDAPオブジェクトが監視され、memberurl属性が存在してオブジェクト・クラスがgroupofuniquenamesおよびgroupofurlsの両方のオブジェクトが検出されます。
検出された場合には、プラグインによりmemberurl値が自動的に処理され、uniquemember属性に結果が追加されます。動的にオブジェクトが処理されることにより、管理者は、通常ならgroupofurlsオブジェクト・クラスがサポートされないアプリケーションとの互換性を維持しながら、静的メンバーと動的メンバーの両方が含まれるグループを定義できます。
例4-1に、Dynamic Groupsプラグインが有効化されていない場合の問合せの例を示します。2つのグループが戻され、1つ目のグループには、2つの静的メンバーと、メンバーとなる特定のディレクトリ・サブツリーを定義するmemberurlが含まれています。
例4-1 Dynamic Groupsプラグインが有効化されていない場合の問合せの例
C:\>ldapsearch -D bindDN -q -b ou=groups,ou=airius,o=yourcompany.com -s
sub "(memberurl=*)"
cn=test,ou=groups,ou=airius,o=yourcompany.com
cn=test
memberurl=ldap:///ou=accounting,o=yourcompany.com??sub?(&(objectclass=person)(obj
ectclass=organizationalperson))
objectclass=groupofuniquenames
objectclass=groupofurls
objectclass=top
uniquemember=cn=Paul Jacobs,ou=People,ou=Airius,o=yourcompany.com
uniquemember=cn=Wendy Verbaas,ou=People,ou=Airius,o=YourCompany.com
cn=TestCheck,ou=groups,ou=airius,o=yourcompany.com
memberurl=ldap:///ou=alt bind,o=yourcompany.com??sub?(&(userprincipalname=*))
objectclass=groupofuniquenames
objectclass=groupofurls
cn=TestCheck
例4-2に、例4-1と同じ問合せで、Dynamic Groupsプラグインが有効化されている場合の結果を示します。
例4-2 Dynamic Groupsプラグインが有効化されている場合の問合せの例
C:\>ldapsearch -D bindDN -q -b ou=groups,ou=airius,o=yourcompany.com -s
sub "(cn=test)"
cn=test,ou=groups,ou=airius,o=yourcompany.com
memberurl=ldap:///ou=accounting,o=yourcompany.com??sub?(&(objectclass=person)(obj
ectclass=organizationalperson))
objectclass=groupofuniquenames
objectclass=groupofurls
objectclass=top
cn=test
uniquemember=cn=Paul Jacobs,ou=People,ou=Airius,o=yourcompany.com
uniquemember=cn=Wendy Verbaas,ou=People,ou=Airius,o=YourCompany.com
uniquemember=cn=Vipi Velasquez,ou=accounting,o=yourcompany.com
uniquemember=cn=Preston Pena-Fernandez,ou=accounting,o=yourcompany.com
uniquemember=cn=Andreas O'Hara,ou=accounting,o=yourcompany.com
uniquemember=cn=Chitra Guenette,ou=accounting,o=yourcompany.com
...
uniquemember=cn=Jim Ward,ou=accounting,o=yourcompany.com
ポリシー・サーバーなどの製品では、特定のユーザーがグループのメンバーであるかどうかの確認が必要な場合がよくあります。これは、グループが大規模である場合や、動的グループである場合には大変なタスクになる場合があります。ただし、Dynamic Groupsプラグインを使用して、cnおよびuniquememberフィルタ項目の両方の有無を確認することで、メンバーシップ・テストの問合せを検出できます。問合せを検出すると、Dynamic Groupsプラグインは、クライアントでメンバーシップ・アサーションのテストが必要であることを確認し、別の方法で問合せを処理できます。例4-3に示すように、プラグインにより結果が変更され、メンバーとしてテストされる単一のユーザーのみが戻されます。
例4-3 Dynamic Groupsプラグインを使用したメンバーシップ・テストの例
C:\>ldapsearch -D bindDN -q -b ou=groups,ou=airius,o=yourcompany.com -s
sub "(&(cn=TestCheck)(uniquemember=cn=Jim Ward,ou=accounting,o=yourcompany.com))"
cn=TestCheck,ou=groups,ou=airius,o=yourcompany.com
memberurl=ldap:///ou=accounting,o=yourcompany.com??sub?(&(userprincipalname=*))
objectclass=groupofuniquenames
objectclass=groupofurls
cn=TestCheck
uniquemember=cn=Jim Ward,ou=Accounting,o=YourCompany.com
Cacheプラグインは、Oracle Virtual Directoryに本来のキャッシュを提供します。これは、LDAP検索結果セットのメモリー内コピーで、繰り返される問合せのパフォーマンスが向上するように設計されています。たとえば、3回連続でエンタープライズLDAPサーバー(Oracle Virtual Directory)のすべてのグループを問い合せる日次同期プロセスの一部にサード・パーティのポータル・サーバーがあるとします。Cacheプラグインは、LDAPクライアントが再利用できるように、最初の検索結果のコピーを保持できます。クライアント・アプリケーションにとっては結果がわずかに早くなるだけですが、より重要なことは、エンタープライズ・ソース・システムの負荷が削減されることです。
Oracle Virtual Directoryは、Cacheプラグインなしで機能するように設計されていますが、多くの場合必要ありません。これは、多くのアプリケーションで結果がキャッシュされるか、ほとんどのエンタープライズ・ソース・システムですでにデータがキャッシュされているためです。また、Oracle Virtual Directoryは安全な環境で使用されることが多いため、従業員が終了して、そのユーザー結果がキャッシュに存在したままの場合にどうなるかなど、キャッシュを保持することがセキュリティ要素の公開につながります。
注意: Cacheプラグインを使用する場合は、キャッシュ・タイムアウトを小さくして、このような場合にキャッシュの更新の問題を避ける必要があります。 |
Cacheプラグインを使用すると、問合せが何度も繰り返されるアプリケーションのパフォーマンスを大幅に向上できます。また、Oracle Virtual Directory内のどこでも実行できるように構成できます。Cacheプラグインはグローバルに実行することも、単一アダプタのコンテキスト内で実行することも可能で、ネームスペース・フィルタ処理を使用して特定のネームスペースに制限することもできます。
問合せが同じユーザーによって繰り返され、同一の属性または属性のサブセットがリクエストされると、Oracle Virtual Directoryがソースから情報を取得するのではなく、キャッシュによってその結果が戻されます。たとえば、問合せ2でクライアントが検索属性を変更する、次のような仮想の問合せが2つあるとします。
問合せ1
バインド: "cn=Example User,cn=users,dc=mycompany,dc=com"
ベース: "dc=mycompany,dc=com"
問合せ: "uid=jdoe"
属性: "cn,mail"
問合せ2
バインド: "cn=Example User,cn=users,dc=mycompany,dc=com"
ベース: "dc=mycompany,dc=com"
問合せ: "uid=jdoe"
属性: "telephonenumber,manager"
Cacheプラグインを使用すると、Oracle Virtual Directoryは問合せ1と問合せ2を2つの別々の問合せとして扱わないため、バックエンド・ソースは2回検索されません。Oracle Virtual Directoryは、問合せ1で一致するエントリのすべての属性をリクエストしますが、クライアントがリクエストした属性のみを戻し、キャッシュに検索結果のメモリー内コピーを保持します。
注意: Oracle Virtual Directoryは、バックエンドのソース・リポジトリであるアクセス制御リスト(ACL)、Oracle Virtual Directory ACLおよびアダプタ・ルーティング・ルールに基づいて、バインドされたユーザーがアクセス権を持っている属性のみを取得します。 |
ユーザー間でキャッシュ・ヒットを共有するようCacheプラグインを構成することもできます。passcredentials
がバックエンド・ソースに渡されず、セキュリティの実行がOracle Virtual Directoryのみによって管理されている場合以外は、ユーザー間でキャッシュ・エントリを共有しないでください。
注意: より強力な権限を持つユーザーのキャッシュ結果にアクセスする可能性があり、許可されていない情報を表示することも可能であるため、ユーザー間でキャッシュ・ヒットを共有する際には慎重に計画を立ててください。 |
キャッシュはCacheプラグインにより定期的に参照され、有効期限の切れた結果や、前の変更トランザクションにより無効化されたエントリがないか確認されます。キャッシュ割当て制限を超えた場合には、Cacheプラグインにより、使用頻度が最低の問合せをパージすることによるメモリーの削除が試行されます。
次に、Cacheプラグイン構成パラメータのリストと説明を示します。
Cacheプラグインですべての属性をリクエストするかどうかを制御します。サポートされている値は0(無効化)または1(有効化)です。デフォルトで、storeallattrsパラメータは無効化(0)されています。
サブジェクト間でキャッシュ結果を共有するかどうかを示します。サポートされている値は0または1です。0はサブジェクト間で結果が共有されることを意味し、1はサブジェクト間で結果が共有されないことを意味します。デフォルト値は1です。
キャッシュ・マネージャが期限切れの問合せの有無を確認する時間の単位(秒)。デフォルト値は60です。
一度にキャッシュされるエントリの最大数。デフォルト値は10000です。
キャッシュに保存される問合せ/エントリの秒単位の最大有効期間(時間)。デフォルト値は600です。
特定の問合せでキャッシュされるエントリの最大数。デフォルト設定は1000です。
このパラメータは、最大キャッシュ・サイズを超えた場合に、キャッシュ・マネージャが調整する必要のある量を示します。デフォルト値は10000です。
注意: 必要な場合には、最初に有効期限の切れた問合せ、続いて使用頻度が最低の問合せをパージすることで調整が行われます。 |
キャッシュ問合せ結果にゼロ・エントリが含まれているかどうかを示します。サポートされている値は0および1です。
ObjectClass Mapperプラグインは、あるobjectClass(userなど)を別のobjectClass(inetOrgPersonなど)として認識させる一般的なマッピング・プラグインです。この機能は、ディレクトリで特定のobjectClassまたは属性はサポートされていないが、アプリケーションでそのobjectClassおよび属性が予期されている際に便利です。
ObjectClass Mapperプラグインでは、選択する構成パラメータに基づいて、次に示すような複数の異なるタイプの操作を実行できます。
属性マッピング
オブジェクト・クラス・マッピング
オブジェクト・クラスへの属性条件の追加
属性の削除
補助クラスのフィルタ処理
アクティブ化および非アクティブ化の処理
属性のマッピング関係が生じた場合、接頭辞client-
はクライアント側を、source-
はデータ・ソース側を表します。たとえば、Active Directoryサーバーのuser
をInetOrgPerson
を表すようにマッピングした場合、Active Directoryはソース側でInetOrgPerson
はクライアント側になります。
次に、ObjectClass Mapperプラグイン構成パラメータのリストと説明を示します。
ユーザーのアクティブ化を実行する際に使用するディレクトリのタイプ。サポートされている値はSunOne、eDirectory、ADAMおよびActiveDirectoryです。次に例を示します。
パラメータ名: directoryType
パラメータ値: ActiveDirectory
activationAttributeパラメータは、アプリケーションに、基礎となるディレクトリのユーザー・アクティベーション・システムに関する情報がない場合に使用します。activationAttributeパラメータにより、ユーザー・アクティベーション・フラグが含まれている着信属性が、Oracle Virtual Directoryに通知されます。その後、このフラグは、ディレクトリ固有の属性およびフラグにマップされます。次に例を示します。
パラメータ名: activationAttribute
パラメータ値: myuseraccountcontrol
ユーザーを非アクティブとしてマークする必要があることを示すactivationAttribute
に指定された属性値のカンマ区切りリスト。
ユーザーをアクティブとしてマークする必要があることを示すactivationAttribute
に指定された属性値のカンマ区切りリスト。
client-ObjectClass=source-ObejctClass
という書式でマップされるobjectClass。次に例を示します。
パラメータ名: mapObjectClass
パラメータ値: inetOrgPerson=user
mapObjectClassパラメータは、複数のマッピングに複数回使用できます。
追加プロセス中にユーザーに属性を追加します。オプションのオブジェクト・クラス値は、特定のオブジェクト・クラスのみに属性を追加するために、構成名に追加できます。たとえば、ユーザー・オブジェクト・クラスのみにuserAccountControl属性を追加するには、次の値を使用します。
パラメータ名: addAttribute-user
パラメータ値: userAccountControl=546
注意: 属性名をパーセンテージ文字(% )で囲んで入力することにより、式の値側で属性値を参照できます。次に例を示します。
パラメータ名: addAttribute-group パラメータ値: samaccountname=%cn% |
追加操作中に戻されるすべてのエントリから削除される属性のカンマ区切りのリスト。条件のオブジェクト・クラス値は、特定のオブジェクト・クラスの属性を除外するために、パラメータ名に追加できます。次に例を示します。
パラメータ名: filterAttribute
パラメータ値: objectsid,memberof,samaccountname
client-Attribute=source-attribute
という書式でマップされる属性。次に例を示します。
パラメータ名: mapAttribute
パラメータ値: uniqueMember=member
mapAttributeパラメータは、複数のマッピングに複数回使用できます。
追加操作中に削除する必要のあるオブジェクト・クラスのカンマ区切りのリスト。たとえば、Microsoft Active Directory for Windows 2000では、エントリの追加中に補助オブジェクト・クラスをリストすることはできませんが、Microsoft Active DirectoryおよびADAM for Windows Server 2003では補助クラスをリストできます。次に例を示します。
パラメータ名: filterAuxiliaryClass
パラメータ値: person,myorgPerson
特定のオブジェクト・クラスの変更操作中に削除される属性のカンマ区切りのリスト。次に例を示します。
パラメータ名: filterObjectClassOnModify
パラメータ値: objectsid,memberof,samaccountname
Sub-Treeプラグインは、元々、IBMのTivoli Access Manager製品の旧バージョンをサポートするために開発されました。この製品には、ユーザー・エントリの下のユーザー・エントリに関するポリシー情報を格納するという要件があったため、通常のリーフ・モデルからのユーザー・エントリはブランチに変更されていました。一部のディレクトリではそのようなモデルをサポートしていないか、企業ディレクトリにそのような方法で移入する必要がありませんでした。
Sub-Treeプラグインを使用すると、アプリケーション(この場合はTivoli Access Manager)に対象のディレクトリ・ツリー・ビューを提供しながら、これらのサブツリー・エントリを異なるアダプタに格納できます。通常のリーフ・エントリの下にエントリを追加するという要件は、一般的ではありません。より一般的なケースは、データ・ストアを既存のデータ・ストアの下にブランチとして表示させることです。これは、ルートのネームスペース値をただしく設定することで、どのアダプタでも実行できます。
次に、Sub-Treeプラグイン構成パラメータのリストと説明を示します。
ユーザー・サブツリー・オブジェクトを格納するためのアダプタ。
ユーザー・サブツリー・オブジェクトを格納するストア・アダプタの場所。
Sub-Treeプラグインが捕捉してストア・アダプタにリダイレクトする必要のあるサブツリー識別名(DN)コンポーネントを識別します。デフォルト値はsecAuthority=Defaultです。
ユーザー・オブジェクトが検出される識別名(DN)、およびユーザー・オブジェクトRDNを指定する番号付きのパラメータ。たとえば、0=ou=People,o=Airius.com\:uid
のようになります。
Performance Monitorプラグインを使用すると、特定のアダプタのパフォーマンスを監視できます。Performance Monitorプラグインを使用するには、アダプタにプラグインを追加して、そのアダプタに対して操作を実行します。アダプタのパフォーマンスを表示するには、アダプタのルートのネームスペースで、vdeSearchtime=*
というフィルタを使用して特定タイプのベース・レベルのLDAP検索を実行する必要があります。
検索により、例4-4のような結果が戻されます。この例では、時間はすべてミリ秒単位で計測されています。
例4-4 Performance Monitorプラグインを使用して戻されるデータの例
dn: dc=demo,dc=com vdeNumSearches: 4 vdeNumEntries: 5 vdeMinSearchTime: 0 vdeMaxSearchTime: 16 vdeTotalSearchTime: 16 vdeAverageSearchTime: 4 vdeMinEntryTime: 0 vdeMaxEntryTime: 0 vdeTotalEntryTime: 0 vdeAverageEntryTime: 0 vdeMinSearchCompleteTime: 0 vdeMaxSearchCompleteTime: 203 vdeTotalSearchCompletionTime: 219 vdeAverageSearchCompletionTime: 54
注意: Performance Monitorデータは、Oracle Virtual Directoryサーバーが再起動するとリセットされます。 |
一部のOracle Virtual Directory環境のユーザーは、Oracle Virtual Directoryアダプタを使用して接続する複数のサービスに対して重複したアカウントを持っています。結合ビュー・アダプタを作成して複数のアダプタを統一し、単一の仮想ユーザー・エントリを作成すると、この問題は解決します。ただし、結合ビュー・アダプタを作成しなくてもよい場合があります。たとえば、社員用のディレクトリと顧客用のディレクトリがあり、仕事上の正当な目的で両方のディレクトリにアカウントを持っている社員がいるとします。この場合、結合ビュー・アダプタは作成できません。
UniqueEntryプラグインは、それぞれの管理ソースで様々なアダプタをランク付けすることでこの問題を解決します。たとえば、重複しているユーザーIDのどれが社員のアカウントであるかの判断を試行している場合、社員ディレクトリの方が顧客ディレクトリよりも問題に関連があるため、顧客ディレクトリ・アダプタよりも社員ディレクトリ・アダプタの優先度を高くします。
アダプタの優先度をランク付けする場合、ランク付けの数値が低いほど優先度が高くなります。たとえば、2つのアダプタを検索していて、1つのアダプタの優先度のランクが5で、もう1つのアダプタのランクが10の場合、ランクが10のアダプタよりもランクが5のアダプタが先に検出されます。
注意: UniqueEntryプラグインはアダプタ・レベルでは適用せず、必ずグローバル・プラグインとしてのみ適用してください。 |
アダプタ・プラグイン・バージョン・プラグインは、デプロイしないでください。このプラグインは、情報提供を目的とするもので、サーバー機能はありません。このアダプタは、Oracle Directory Services Managerホーム・ページに表示されるアダプタ・バージョン情報を提供します。
Oracle Virtual Directoryには、エンタープライズ・ユーザー・セキュリティ(EUS)とOracle Net Servicesとの統合を簡略化するプラグインが含まれています。この項では、この統合に関連するプラグインについて説明します。この項の内容は次のとおりです。
EUSActiveDirectoryプラグインは、Oracle Virtual DirectoryをOracleのエンタープライズ・ユーザー・セキュリティ・データベース製品と統合する際に、ユーザーIDがMicrosoft Active Directoryに格納されている場合にのみ使用します。EUSActiveDirectoryプラグインは、Active Directoryの属性を、エンタープライズ・ユーザー・セキュリティ・データベースで使用できる形式に変換します。
EUSiPlanetプラグインは、Oracle Virtual DirectoryをOracleのエンタープライズ・ユーザー・セキュリティ・データベース製品と統合する際に、ユーザーIDがSun Java System Directory Serverに格納されている場合にのみ使用します。EUSiPlanetプラグインは、Sun Java System Directory Serverの属性を、エンタープライズ・ユーザー・セキュリティ・データベースで使用できる形式に変換します。
EUSOIDプラグインは、Oracle Virtual DirectoryをOracleのエンタープライズ・ユーザー・セキュリティ・データベース製品と統合する際に、ユーザーIDがOracle Internet Directoryに格納されている場合にのみ使用します。EUSOIDプラグインは、Oracle Internet Directoryの属性を、エンタープライズ・ユーザー・セキュリティ・データベースで使用できる形式に変換します。
EUSeDirectoryプラグインは、Oracle Virtual DirectoryをOracleのエンタープライズ・ユーザー・セキュリティ・データベース製品と統合する際に、ユーザーIDがNovell eDirectoryに格納されている場合にのみ使用します。EUSeDirectoryプラグインは、Novell eDirectoryの属性を、エンタープライズ・ユーザー・セキュリティ・データベースで使用できる形式に変換します。
EUSMemberDNMappingプラグインは、Oracle Virtual DirectoryをOracleのエンタープライズ・ユーザー・セキュリティ・データベース製品と統合する場合にのみ使用します。EUSMemberDNMappingプラグインは、外部リポジトリに格納されているエンタープライズ・ユーザー・セキュリティ・データベースの管理者グループの識別名(DN)ネームスペースを、Oracle Virtual Directoryがデータベースに送信するのと同じペイロードに変換します。
次に、EUSMemberDNMappingプラグイン構成パラメータのリストと説明を示します。
エンタープライズ・ユーザー・セキュリティ・データベースの管理者グループが配置されているリモートの外部リポジトリ(Active Directory、Oracle Internet Directory、Sun Java System Directory Server)のベースDN。
Oracle Virtual Directoryが公開するグループ名のベースDN。
注意: 一般的に、remoteDomainDNおよびlocalDomainDn構成パラメータの値は同一です。 |
euslockoutプラグインは、Oracle Virtual DirectoryをOracleのエンタープライズ・ユーザー・セキュリティ・データベース製品と統合する場合にのみ使用します。バインドの試行が何度か失敗したら、LDAPサーバーによりユーザー・アカウントをロックできます。euslockoutプラグインにより、Oracle Virtual Directoryとエンタープライズ・ユーザー・セキュリティの統合では、このロックアウト機能を使用し、次のようにして、バックエンドのLDAPサーバーのパスワード・ロックアウト・ポリシーを適用できます。
Oracleデータベースへの不正なログインでは、バックエンドのLDAPサーバーにログインの失敗が記録されます。
Oracleデータベースへの適切なログインにより、バックエンドのLDAPサーバーのログインの失敗数がリセットされます。
注意: この機能は、Active Directoryを使用する統合では使用できません。 |
ロックされたユーザー・アカウントを使用して、Oracleデータベースにログインすることはできません。
euslockoutプラグインを構成するには、次の手順を実行する必要があります。
バックエンドのLDAPサーバーに応じて、Active Directoryの場合はActiveDirectory、Sun Java System Directory Serverの場合はiPlanet、Novell eDirectoryの場合はeDirectoryなどの値を使用し、directoryTypeパラメータを作成します。
Oracle Virtual Directory-Enterprise User Security統合のユーザー・コンテナの名前を使用して、ネームスペースを作成します。
ONamesプラグインは、Oracle Virtual DirectoryをOracle Net Servicesと統合する場合にのみ使用します。このプラグインは、Oracle Internet Directory固有のエントリを削除して、Oracle Virtual DirectoryとOracle Net Servicesの統合を簡略化します。
Oracleデータベースが、エンタープライズ・ユーザー・セキュリティおよびOracle Net Servicesの統合のOracle Virtual Directoryに問合せを行う場合、LDAPスキーマはOracle Internet Directoryのスキーマと同じ名前であることが想定されます。ただし、Oracle Internet DirectoryとOracle Virtual Directoryでは、LDAPスキーマの格納方法が異なります。subschemasubentryプラグインでは、Oracle Virtual Directoryとエンタープライズ・ユーザー・セキュリティまたはOracle Virtual DirectoryとOracle Net Servicesの統合が機能できるよう、Oracleデータベースの問合せが透過的にリダイレクトされます。
Microsoft Active Directoryには、多くのアプリケーションで処理できない機能が複数あります。Oracle Virtual Directoryには、アプリケーションに影響を与えず、再コーディングや再構成もせずに、アプリケーションがそれらの独自の機能を使用できるようにする複数のプラグインが同梱されています。
この項では、Oracle Virtual Directoryに含まれているMicrosoft Active DirectoryおよびActive Directory Application Mode(ADAM)のプラグインについて説明します。この項の内容は次のとおりです。
Active DirectoryおよびADAMには、LDAPを使用したユーザーのパスワードの更新に関して、次に示すような特別なルールがあります。
パスワードの更新はセキュアなSSL接続経由でのみ行う。
ユーザーが自分のパスワードを更新する場合は、同じ変更操作で新しいパスワードが変更追加に含まれている状態で、元のパスワードが変更削除に含まれている必要がある。
以前のパスワードがわからなくても、ユーザー・パスワードをリセットできるのは管理者のみ。
Active DirectoryではuserPassword属性は使用せず、unicodePwd属性(Unicode形式)を使用する。
ActiveDirectory Passwordプラグインは、アプリケーションがActive Directoryのパスワード更新ルールを使用するように設計されておらず、すべての操作においてSSL経由でActive DirectoryまたはADAMに接続するのが不都合な場合に、管理者を支援します。ActiveDirectory PasswordプラグインをSSLに対応していないアダプタに構成し、プラグインでSSL対応のアダプタを指定することにより、Active Directoryのパスワード更新がinetOrgPersonディレクトリのパスワード更新として機能します。
重要: ActiveDirectoryプラグインは、LDAPアダプタにのみ構成する必要があります(通常はMicrosoft Active Directory)。 |
ActiveDirectory Passwordプラグインには、次の構成パラメータがあります。
リクエストにuserPassword属性が含まれる場合に、ActiveDirectory Passwordプラグインがリクエストを再ルーティングするアダプタの名前。指定されたアダプタでは、仮想ルートが現行のアダプタと同一で、ルーティングの可視性が内部に設定されている必要があります。adapterパラメータが定義されていない場合は、現行のアダプタが使用されます。
パスワードをunicodePwd属性に変換する必要がある(true)か、不要である(false)かを示します。サポートされている値はtrueまたはfalseです。デフォルト値はtrueです。
Active DirectoryおよびADAMの属性には1000を超える値があり、戻された値の範囲を含む名前が付けられて、一度に1000の属性が戻されます(Windows 2003では1500)。クライアントには、次の書式で範囲が戻されます。
member;1-1000: somevalue
次の1000のエントリを取得するためには、クライアント・アプリケーションが問合せを繰り返し、属性メンバー1001-2000をリクエストすることを把握している必要があります。このため、アプリケーションでは、その他のディレクトリ製品に比べて独特な方法でActive Directoryに対応する必要があります。
Active Directory Ranged Attributesプラグインにより、Active DirectoryまたはADAMによって範囲が指定された属性が検出され、自動的にすべての値が取得されます。値の範囲が属性名に追加されるため、Active Directory Ranged Attributesプラグインが有効にされていない場合、LDAPアダプタのdn属性LDAP構成オプションは適用されません。
重要: Active Directory Ranged Attributesプラグインにより、アダプタのどの属性をdn属性としてマークするかが決定され、適切なベース・マッピングが実行されます。LDAPアダプタでアダプタ・プラグインとして使用できるのは、Active Directory Ranged Attributesプラグインのみです。 |
InetADプラグインは、ObjectClass Mapperプラグイン、Active Directory Ranged AttributesプラグインおよびActive Directory Passwordプラグインの機能を結合し、複数のActive Directory独自の機能を処理するために単一のプラグインを構成できるようにします。
Active DirectoryではActive DirectoryのNOS要件に固有の属性を持つuserおよびgroupオブジェクト・クラスが使用される一方で、ほとんどのLDAPディレクトリで、ユーザーやグループにinetOrgPersonおよびgroupOfUniqueNamesオブジェクト・クラスが使用されるため、InetADプラグインはObjectClass Mappingプラグインを利用します。
InetADプラグインを使用すると、Oracle Virtual DirectoryでActive DirectoryまたはADAMディレクトリ・サーバーにinetOrgPersonスキーマがあるように使用できます。InetADプラグインは、パラメータ構成に基づいて、属性やオブジェクト・クラスの名前を変更し、Active Directoryのユーザーが必要な属性をすべて使用できるように属性を追加できます。構成パラメータが使用されていない場合、InetAdプラグインはActive DirectoryのuserまたはgroupをinetOrgPersonまたはgroupOfUniqueNamesオブジェクト・クラスとして使用できます。
注意: 属性のマッピング関係が生じた場合、client- 接頭辞はクライアント側を、source- 接頭辞はデータ・ソース側を表します。たとえば、Active DirectoryサーバーのuserをInetOrgPersonを表すようにマッピングした場合、Active Directoryはソース側でInetOrgPersonはクライアント側になります。 |
次に、InetADプラグイン構成パラメータのリストと説明を示します。
ユーザーのアクティブ化を実行する際に使用するディレクトリのタイプ。サポートされている値はSunOne、eDirectory、ADAMおよびActiveDirectoryです。次に例を示します。
パラメータ名: directoryType
パラメータ値: ActiveDirectory
activationAttributeパラメータは、アプリケーションに、基礎となるディレクトリのユーザー・アクティベーション・システムに関する情報がない場合に使用します。activationAttributeパラメータにより、ユーザー・アクティベーション・フラグが含まれている着信属性が、Oracle Virtual Directoryに通知されます。その後、このフラグは、ディレクトリ固有の属性およびフラグにマップされます。次に例を示します。
パラメータ名: activationAttribute
パラメータ値: myuseraccountcontrol
ユーザーを非アクティブとしてマークする必要があることを示すactivationAttribute
に指定された属性値のカンマ区切りリスト。
ユーザーをアクティブとしてマークする必要があることを示すactivationAttribute
に指定された属性値のカンマ区切りリスト。
client-ObjectClass = AD-ObejctClass
という書式でマップされるobjectClass。次に例を示します。
パラメータ名: mapObjectClass
パラメータ値: inetOrgPerson=user
mapObjectClassパラメータは、複数のマッピングに複数回使用できます。デフォルト値はgroupOfUniqueNames=group, inetOrgPerson=userです。
追加プロセス中にユーザーに属性を追加します。オプションのオブジェクト・クラス値は、特定のオブジェクト・クラスのみに属性を追加するために、構成名に追加できます。たとえば、ユーザー・オブジェクト・クラスのみにuserAccountControl属性を追加するには、次の値を使用します。
パラメータ名: addAttribute-user
パラメータ値: userAccountControl=546
注意: 名前を%で囲んで入力することにより、別の属性値が式として代入されます。デフォルト構成は次のとおりです。addAttribute-user: useraccountcontrol=544, addAttribute-group:samaccountname=%cn%, addAttribute-group: grouptype=-2147483646 |
追加操作中に戻されるすべてのエントリから削除される属性のカンマ区切りのリスト。条件のオブジェクト・クラス値は、特定のオブジェクト・クラスの属性を除外するために、パラメータ名に追加できます。次に例を示します。
パラメータ名: filterAttribute
パラメータ値: objectsid,memberof,samaccountname
client-Attribute=AD-attribute
という書式でマップされる属性。次に例を示します。
パラメータ名: mapAttribute
パラメータ値: uniqueMember=member
mapAttributeパラメータは、複数のマッピングに複数回使用できます。デフォルト値は、uniqueMember=member, uid=samaccountname, ntgrouptype=grouptypeです。
追加操作中に削除する必要のあるオブジェクト・クラスのカンマ区切りのリスト。Active Directory for Windows 2000では、エントリの追加中に補助オブジェクト・クラスをリストすることはできませんが、Microsoft Active DirectoryおよびADAM for Windows Server 2003では補助クラスをリストできます。デフォルト値はperson, organizationalPersonです。
特定のオブジェクト・クラスの変更操作中に削除される属性のカンマ区切りのリスト。次に例を示します。
パラメータ名: filterObjectClassOnModify
パラメータ値: objectsid,memberof,samaccountname
パスワードをunicodePwd属性に変換する必要がある(true)か、必要がない(ADAM)(false)かを示します。サポートされている値はtrueまたはfalseです。デフォルト値はtrueです。
リクエストにuserPassword
が含まれる場合に、このプラグインがリクエストを再ルーティングするアダプタの名前。このパラメータを指定しない場合は、現行のアダプタが使用されます。このオプションで指定されるアダプタ名は、次のことを満たす必要があります。
このプラグインが構成されているアダプタと同じローカル・ベースを持つ
ルーティングの可視性がInternalに設定されている