この章では、Sun JavaTM System Directory Server (以前は Sun ONE Directory Server および iPlanet Directory Server と呼ばれていた) から Identity Manager システムへのパスワードの同期をサポートするための、Identity Manager 製品の拡張機能について説明します。
Directory Server では、パブリックなプラグイン API を介して、サードパーティーがパスワードの変更を処理できるようになっています。カスタムプラグインであるパスワードキャプチャープラグインは、Directory Server でのパスワード変更をキャプチャーするために開発されました。
パスワードキャプチャープラグインには、次の役割があります。
LDAP ADD および LDAP MODIFY の操作時にパスワード変更を検知する。
共有キーを使用して新しいパスワード値を暗号化する。
元の LDAP 操作に対して、idmpasswd 属性とその値 (暗号化されたパスワード値) のペアを挿入します。
パスワードキャプチャープラグインを実装する前に、Directory Server の旧バージョン形式の更新履歴ログプラグインを、ディレクトリサーバーにインストールする必要があります。旧バージョン形式の更新履歴ログプラグインは、ディレクトリサーバーコアによる操作が実行されたあと、idmpasswd 属性の変更を更新履歴ログデータベースに記録します。
Active Sync を有効にしている LDAP リソースアダプタは、定期的に更新履歴ログデータベースをポーリングし、関連した変更を解析して、それらの変更を Identity Manager に送ります。LDAP アダプタは、idmpasswd 属性を解析し、共有キーを使用してパスワードを復号化し、実際のパスワードをシステムのほかの部分で利用できるようにします。
パスワードキャプチャープラグインは、サーバーが LDAP ADD または LDAP MODIFY 操作を処理しようとするたびに、Directory Server コアによって呼び出されます。このプラグインは変更を調べて、パスワード変更があると、idmpasswd 属性と値のペアを挿入します。この値は暗号化されたパスワードです。
パスワードキャプチャープラグインによってキャプチャーされたパスワードは、共有キーを使用して暗号化されます。設定された LDAP リソースアダプタによってそのパスワードが復号化されるときに、同じ共有キーが使用されます。
変更がサーバーに受け入れられると、旧バージョン形式の更新履歴ログプラグインは、旧バージョン形式の更新履歴ログデータベースにその変更 (idmpasswd 属性の新しい値を含む) を記録します。LDAP リソースアダプタは、idmpasswd 属性の変更を処理し、暗号化された文字列の形式で、Identity Manager 内のほかのコンポーネントがその値を利用できるようにします。
idmpasswd 属性は、ユーザーがパスワードを変更するときに Directory Server の通常のデータベースには表示されません。
暗号化されたパスワードは、旧バージョン形式の更新履歴ログデータベースに記録されます。旧バージョン形式の更新履歴ログプラグインは、旧バージョンの更新履歴ログデータベースから定期的にエントリを削除するように設定することができます。データベースのエントリ削除の適切な設定は、ターゲットの環境によって異なります。削除間隔が短すぎると、短時間のネットワーク機能停止やほかのサービスの中断に対処できないことがあり、LDAP リソースアダプタは一部の変更を見逃す可能性があります。反対に、データベースのサイズが大きくなりすぎると、データベース内に暗号化されたパスワードを保持することに付随するセキュリティー上のリスクが増える可能性があります。
プラグインはハッシュされたパスワードを取得しません。
旧バージョン形式の更新履歴ログデータベースのサフィックス (cn=changelog) の内容へのアクセスを制限するようにしてください。そのために、読み取りアクセス権は、LDAP リソースアダプ タのみに許可します。
idmpasswd 属性は、オペレーショナル属性として定義されます。オペレーショナル属性は、ターゲットエントリのオブジェクトクラス定義の変更を一切必要としません。そのため、パスワード同期機能を使用するために Directory Server の既存ユーザーまたは新規ユーザーを変更する必要はありません。
idmpasswd 属性は、スキーマで次のように定義されます。
attributeTypes: ( idmpasswd-oid NAME ’idmpasswd’ DESC ’IdM Password’ SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} USAGE directoryOperation X-ORIGIN ’ Identity Manager’ )
プラグインがサポートするログレベルは、SEVERE、WARNING、INFO、CONFIG、FINE、FINER、および FINEST です。SEVERE では最小限の情報が記録され、FINEST ではもっとも詳細なログが記録されます。デフォルトのレベルは INFO ログレベルです。
LDAP アダプタを使用して LDAP パスワードを同期するには、次の作業を実行します。
LDAP リソースアダプタを設定します。
パスワード同期機能を有効にします。
パスワード同期をサポートするように LDAP リソースアダプタを設定するには、次の手順を使用します。
LDAP Password ActiveSync Form を Identity Manager にインポートします。このフォームは、$WSHOME/sample/forms/LDAPPasswordActiveSyncForm.xml で定義されています。
リソースの Active Sync ウィザードで、入力フォームを「LDAP Password ActiveSync Form」に設定します。
LDAP リソースアダプタでパスワード同期を有効にするために、Identity Manager にはカスタム JSP ページが用意されています。管理者はこのページで次の操作を行えます。
任意の LDAP リソースアダプタでパスワード同期を有効にする
パスワードキャプチャープラグインのインストールに必要な設定 LDIF ファイルを生成する
必要に応じて、パスワード暗号化キーおよびパスワード暗号化ソルトを再生成する。これはオプションの機能です。
LDIF ファイルは、次の 3 つのエントリで構成されます。
スキーマの変更。idmpasswd オペレーショナル属性の使用を許可するように Directory Server スキーマを更新します。
プラグインの定義。プラグインを Directory Server に登録し、プラグイン有効にします。
プラグインの設定。プラグインの基本的な設定を行います。たとえば、難読化されたパスワード暗号化キーは、この設定エントリに含まれます。
これらの機能を実装するには、次の手順を使用します。
Identity Manager の「パスワード同期の設定」ページを開きます。このページには、http://PathToIdentityManager/configure/passwordsync.jsp からアクセスします。
「リソース」メニューから、パスワードの同期に使用する LDAP リソースを選択します。
「アクション」メニューから、「パスワード同期の有効化」を選択します。
「OK」をクリックします。ページが再描画され、「アクション」メニューに新しい項目が表示されます。
「アクション」メニューから、「プラグイン設定 LDIF をダウンロードします」を選択します。
「OK」をクリックします。ページが再描画され、いくつかの新しいオプションが表示されます。
「Directory Server のバージョン」メニューからバージョンを選択します。
「オペレーティングシステムタイプ」メニューから、リソースのオペレーティングシステムを選択します。
「プラグインのインストールディレクトリ」フィールドに、プラグインをインストールするホスト上のディレクトリを入力します。
「OK」をクリックして、LDIF ファイルを生成およびダウンロードします。必要に応じて、ここで暗号化キーを再生成してもかまいません。
「アクション」メニューから、「暗号化キーを再生成します」を選択します。
「OK」をクリックします。暗号化パラメータが更新されます。
Directory Server ユーザーがデフォルトのオブジェクトクラス (person、organizationalPerson、または inetorgperson) を持たない場合は、「プラグイン設定 LDIF をダウンロードします」を選択したときに作成される LDIF ファイルを編集する必要があります。idm-objectclass 属性で指定したデフォルト値を、環境に実装されているオブジェクトクラスに置換する必要があります。これにより、プラグインはパスワードの変更をキャプチャーできるようになります。
たとえば、ユーザーが account、posixaccount、および shadowaccount オブジェクトクラスで定義されている場合、idm-objectclass 属性に指定されているデフォルト値を、これらのオブジェクトクラスのいずれか (複数可) で置換します。
たとえば、次のようにします。
idm-objectclass: account idm-objectclass: posixaccount |
複数値属性は、コンマ区切りの文字列で指定しないでください。一致させる idm-objectclass の値は、LDIF 設定に 1 行に 1 つずつ入力する必要があります。idm-objectclass 値のいずれかに一致するエントリに対してパスワードがキャプチャーされます。
パスワード同期を有効にしたら、リソースの Active Sync ウィザードパラメータページの「リソース固有の設定」ページに、次の属性が表示されます。
パスワード同期の有効化
パスワード暗号化キー
パスワード暗号化ソルト
「パスワード同期の有効化」フィールドのみ、このページで変更できます。暗号化属性は、JSP ページでのみ更新するようにしてください。
プラグインのインストールを開始する前に、必ずリソースの設定を完了してください。詳細は、「Identity Manager での LDAP パスワード同期の設定」を参照してください。
Directory Server インスタンスがマルチマスターレプリケーション環境にセットアップされている場合は、マスターレプリカごとにプラグインをインストールおよび設定する必要があります。
パスワードキャプチャープラグインをインストールするには、次の一般的な手順を実行する必要があります。これらの作業の実行の詳細については、製品マニュアルを参照してください。
設定 LDIF ファイルをターゲット Directory Server にアップロードします。Directory Server に付属する LDAP コマンド行ユーティリティーを使用できます。次に例を示します。
/opt/iPlanet/shared/bin/ldapmodify -p 1389 -D "cn=directory manager" -w secret -c -f /tmp/pluginconfig.ldif |
Directory Server version 5.2 P4 以前の場合のみ、プラグインバイナリ (idm-plugin.so) を Directory Server が実行されているホストに配置します。この例では、/opt/SUNWidm/plugin です。ディレクトリサーバーを実行するユーザーは、プラグインライブラリを読み取れる必要があります。そうでなければ、Directory Server の起動に失敗します。
Directory Server を再起動します (たとえば、/opt/iPlanet/slapd-examplehost/restart-slapd)。Directory Server を再起動したあとに、パスワードキャプチャープラグインは読み込まれません。
マルチマスターレプリケーション環境では、インストールごとに新しいプラグイン設定を生成してください (各ホストでオペレーティングシステムタイプとプラグインのインストールディレクトリが同じである場合は除く)。このような環境では、インストールごとに 「手順 2: パスワード同期機能を有効にする」の手順を繰り返します。
プラグインの設定に変更を加えた場合は、必ず Directory Server を再起動する必要があります。
パスワードキャプチャープラグインが有効になったあとで、クライアントがパスワード変更を行うには、userPassword 属性と idmpasswd 属性の両方に対する MODIFY 権限が必要です。それに応じて、ディレクトリツリー内のアクセス制御情報の設定を調整してください。これは通常、ディレクトリマネージャー以外の管理者がほかのユーザーのパスワードを更新できる場合に必要になります。