Sun ONE Directory Server 管理ガイド |
ユーザーが Directory Server に接続すると、ユーザー認証が行われ、ディレクトリは認証中に確立された識別情報に基づいて、アクセス権限とリソース制限をユーザーに設定します。
この章では、ユーザーアカウントを管理するための作業について説明します。これらのタスクは、ディレクトリのパスワードおよびアカウントのロックアウトポ リシーの設定、ディレクトリに対するアクセスを防止するためのアカウントまたはグループの無効化、およびバインド DN に応じたユーザーのシステムリソースの使用制限などを行います。
Directory Server 5.2 では、個別のパスワードポリシーに対応できるようになりました。異なるパスワードポリシーをいくつでも定義し、特定のユーザーやユーザーグループに個別に 適用できます。これにより、異なるタイプのユーザーによるディレクトリへのアクセスを簡単に制御できます。
この章は、次の節で構成されています。
パスワードポリシーの概要
安全なパスワードポリシーを使用して、次の項目を義務付けることによって、簡単に推測されそうなパスワードに関するリスクを最小限に抑えることができます。
- スケジュールに従ったパスワードの変更
- 推測しにくいパスワードの使用
- 不正なパスワードで複数回バインドしようとした場合のアカウントのロック
Directory Server 5.2 では、個別パスワードポリシーとグローバルパスワードポリシーの両方を利用できます。個別パスワードポリシーはディレクトリツリーのサブエントリによって 定義され、そのポリシーが設定されたユーザーエントリによって参照されます。ユーザーエントリが個別ポリシーを参照しない場合、cn=PasswordPolicy,cn=config のグローバルパスワードポリシーが適用されます。
次の節では、パスワードポリシーの実装方法と、ユーザーおよびグループへの割り当て方法について説明します。詳細については、『Sun ONE Directory Server Deployment Guide』の第 7 章にある「Designing Your Password Policies」を参照してください。
辞書攻撃の防止
辞書攻撃では、侵入者は認証が得られるまで繰り返しパスワードを推測して解読しようとします。このような攻撃に対応するために、サーバーには 3 つのツールが用意されています。
- パスワード構文検査では、ユーザーエントリの uid、cn、sn、givenName、ou、または mail 属性の一致を検証します。いずれかの値と一致する場合、サーバーはユーザーによるパスワードの設定を拒否します。ただしパスワード構文検査では、/usr/dict/words の単語をすべて試すような実際の辞書攻撃は阻止されません。
- パスワードに最小限必要な文字数を設定すると、ユーザーは短いパスワードを設定できません。パスワードが長くなるほど、すべての値を想像 したり、組み合わせることが指数関数的に困難になります。Directory Server では、パスワード構文検査と最小限必要な文字数の設定の両方を有効にする必要があります。
- アカウントロックアウトメカニズムは、認証の試みが数回失敗した後にバインドを拒否します。パスワードポリシーの厳密度に応じて、一時的なロックアウトと永続的なロックアウトのいずれかが適用されます。
いずれも、自動的なパスワードの推測を効果的に防止します。たとえば、5 回までの試行を許可してその後にユーザーアカウントを 5 分間ロックアウトした場合、平均すると侵入者は 1 分間に 1 回の推測しか行えず、正規のユーザーが入力ミスなどでロックアウトされた場合も短時間で再試行できます。永続的なロックアウトの場合は、 Directory Manager から手動でパスワードをリセットする必要があります。
レプリケーション環境でのパスワードポリシー
個別のパスワードポリシー、グローバルパスワードポリシーのどちらもレプリケーションが可能です。これにより、パスワードポリシーをマスターで定義し、レ プリケーションによってレプリケートされたサーバーにポリシーを伝達させることができます。設定したすべての属性は、パスワード履歴 (すでに使用された古いパスワード) とパスワードの有効期限を含むオペレーショナル属性としてレプリケートされます。
ただし、レプリケートされた環境では、パスワードポリシーによる次の影響を考慮する必要があります。
- パスワードの期限切れが近づいたユーザーは、パスワードを変更するまで、バインドするすべてのレプリカから警告を受信する
- ユーザーがパスワードを変更すると、すべてのレプリカでパスワード変更の情報が更新されるまでに時間がかかる。ユーザーがパスワードを変 更し、すぐに新しいパスワードでコンシューマレプリカのどれかに再度バインドしようとすると、レプリカが更新されたパスワードを受信するまでは、バインド に失敗する
- 各レプリカには、レプリケートされない個別のアカウントロックアウトカウンタが保持されている。その結果、ロックアウトポリシーはどれか 1 つのレプリカで適用されるが、ユーザーが複数のレプリカでバインドを試みるとポリシーが適用されないことがある。たとえば、レプリケーショントポロジに 10 のサーバーがあり、3 回の試行後にロックアウトが有効になる場合、侵入者はパスワードの推測を 30 回行える計算になる
レプリケーションによって侵入者が推測できるパスワードの数は増えますが、推測される無数の組み合わせと比較すれば、影響はほとんどありません。それ以上 に、パスワード検査を有効にし、6 文字以上のパスワードを設定して、強度の高いパスワードをユーザーに強制することのほうが重要です。また、辞書に登場するような一般的な単語ではないパス ワードを選び、記憶する方法について、ユーザーにガイドラインを示すことも必要です。最後に、すべてのディレクトリ管理者ユーザーが強力なパスワードを持 たなければならないことは言うまでもありません。
グローバルパスワードポリシーの設定
グローバルパスワードポリシーは、個別ポリシーが定義されていない、ディレクトリのすべてのユーザーに適用されます。ただし、グローバルパスワードポリシシーは Directory Manager には適用されません。
コンソールを使用したパスワードポリシーの設定
Directory Server のグローバルパスワードポリシーを設定または変更するには、次の手順を実行します。
- Directory Server コンソールの最上位の「設定」タブで「データ」ノードを選び、右側のパネルで「パスワード」タブを選びます。
- 「パスワード」タブで、ポリシーに関する次の項目を設定します。
- 「リセット後、ユーザーにパスワード変更を要求」チェックボックスを選択して、初回ログオン時に、ユーザーがパスワードを変更しなければならないように指定します。
このチェックボックスを選択した場合、ユーザーのパスワードのリセットは Directory Manager だけができます。一般の管理者は、パスワードの更新をユーザーに義務付けることはできません。
- 各ユーザーが、自分のパスワードを変更できるようにするには、「ユーザーによるパスワードの変更可」チェックボックスを選択します。
- ユーザーが本人のパスワードを変更できる頻度を制限するには、「再変更を許可」テキストボックスに日数を指定します。制限を設けずにユーザーが自由に本人のパスワードを変更できるようにするには、「制限なし」チェックボックスを選択します。
- ユーザーが同じパスワードを何度も繰り返して利用することを禁じるには、「パスワードの履歴を保持」チェックボックスを選択し、ユーザー ごとにサーバーがいくつのパスワードを保持するかを指定します。ユーザーは、リストに残されているパスワードを設定することができません。効率的に機能さ せるには、ユーザーがパスワードを変更する頻度を制限する必要があります。
- ユーザーのパスワードを無期限にする場合は、「パスワードは永久に失効しない」ラジオボタンを選択します。
- ユーザーにパスワードを定期的に変更させる場合は、「パスワードの失効まで」ラジオボタンを選択し、パスワードの有効日数を入力します。
- 有効期限が近づいたパスワードを選択した場合に、期限が切れる何日前に警告をユーザーに送信するかを指定するには、「警告を送信」フィールドに日数を指定します。
ユーザーが警告を受信すると、パスワードは当初の期日に失効します。警告の送信後、警告期間の経過後に有効期限を延長するには、「失効の警告を行わない」 チェックボックスの選択を解除します。警告と延長は、それぞれ 1 回ずつ行われます。パスワードが失効した後にユーザーがバインドしたときは、猶予ログインは認められなくなります。
- ユーザーパスワードの構文を検査して、パスワードポリシーで設定した要件を満たしていることをサーバー側で確認する場合は、「パスワード 構文を検査」チェックボックスを選択します。次に、「パスワードの最低長」テキストボックスに、最小限必要なパスワードの文字数を指定します。
- デフォルトでは、Directory Manager はパスワードポリシーに違反するパスワード (履歴に残されているパスワードの再使用など) をリセットできません。これを許可するには、「Directory Manager がパスワードポリシーをバイパスする」チェックボックスを選択します。
- 「パスワードの暗号化」プルダウンメニューで、パスワードの格納時にサーバーで使用する暗号化方式を指定します。
- アカウントのロックアウトポリシーを定義するときは、「アカウントのロックアウト」タブをクリックし、「アカウントのロックアウト機能を利用」チェックボックスを選択します。
- どれだけの時間に何回のログインが失敗した場合にロックアウトを有効にするか、回数と時間を指定します。
- Directory Manager がユーザーパスワードをリセットするまで永続的にロックアウトするには、「無期限にロックアウト」ラジオボタンを選択します。
- それ以外の場合は「ロックアウト時間」ラジオボタンを選択し、ユーザーアカウントが一時的にロックアウトされる時間を分単位で指定します。
- パスワードポリシーの変更が完了したら、「保存」をクリックします。新しいグローバルパスワードポリシーは、直ちに適用されます。
コマンド行からのパスワードポリシーの設定
グローバルパスワードポリシーは、cn=Password Policy, cn=config エントリの属性によって定義されます。このエントリ内のグローバルポリシーを変更するには、ldapmodify ユーティリティを使います。
パスワードポリシーに関連するすべての属性の説明については、『Sun ONE Directory Server Reference Manual』の第 4 章にある「cn=Password Policy」を参照してください。
たとえば、デフォルトではパスワードの構文の長さの検査は行われず、アカウントロックアウトも無効になっています。構文検査を有効にして最小文字数を 8 に設定し、5 回のパスワード入力に失敗した場合に 5 分間の一時的なロックアウトを設定するには、次のコマンドを実行します。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: cn=Password Policy,cn=config
changetype: modify
replace: passwordCheckSyntax
passwordCheckSyntax: on
-
replace: passwordMinLength
passwordMinLength: 8
-
replace: passwordLockout
passwordLockout: on
-
replace: passwordMaxFailure
passwordMaxFailure: 5
-
replace: passwordLockoutDuration
passwordLockoutDuration: 300
-
replace: passwordUnlock
passwordUnlock: on個別パスワードポリシーの管理
個別パスワードポリシーは、passwordPolicy オブジェクトクラスを使ってサブエントリに定義されます。ポリシーは、cn=policy name,subtree という形式の DN でディレクトリツリー内の任意の場所に定義できます。Directory Server コンソールまたはコマンド行ユーティリティを使ってパスワードポリシーを定義したら、該当するユーザーエントリの passwordPolicySubentry 属性を設定してパスワードポリシーを割り当てます。
ここでは、サブツリールートが dc=example,dc=com の Example.com の一時従業員にパスワードポリシーを実装する例を使います。
コンソールからのポリシーの定義
- Directory Server コンソールの最上位にある「ディレクトリ」タブで、個別パスワードポリシーのサブエントリを定義するエントリを表示します。
- エントリをマウスの右ボタンでクリックし、「新規」、「パスワードポリシー」を順に選択します。あるいは、エントリをクリックして選択し、「オブジェクト」メニューから「新規」、「パスワードポリシー」を順に選択します。
パスワードポリシーエントリのカスタムエディタが表示されます。
- このポリシーの名前と、オプションとしてポリシーの説明を「一般」の「ポリシー名」と「説明」フィールドに入力します。この名前は、ポリシーを定義するサブエントリの cn ネーミング属性の値となります。
- 「パスワード」タブをクリックし、ポリシーに関する次の項目を設定します。
- 「リセット後、ユーザーにパスワード変更を要求」チェックボックスを選択して、初回ログオン時に、ユーザーがパスワードを変更しなければならないように指定します。
このチェックボックスを選択した場合、ユーザーのパスワードのリセットは Directory Manager だけができます。一般の管理者は、パスワードの更新をユーザーに義務付けることはできません。
- 各ユーザーが、自分のパスワードを変更できるようにするには、「ユーザーによるパスワードの変更可」チェックボックスを選択します。
- ユーザーが本人のパスワードを変更できる頻度を制限するには、「再変更を許可」テキストボックスに日数を指定します。制限を設けずにユーザーが自由に本人のパスワードを変更できるようにするには、「制限なし」チェックボックスを選択します。
- ユーザーが同じパスワードを何度も繰り返して利用することを禁じるには、「パスワードの履歴を保持」チェックボックスを選択し、ユーザー ごとにサーバーがいくつのパスワードを保持するかを指定します。ユーザーは、リストに残されているパスワードを設定することができません。効率的に機能さ せるには、ユーザーがパスワードを変更する頻度を制限する必要があります。
- ユーザーのパスワードを無期限にする場合は、「パスワードは永久に失効しない」ラジオボタンを選択します。
- ユーザーにパスワードを定期的に変更させる場合は、「パスワードの失効まで」ラジオボタンを選択し、パスワードの有効日数を入力します。
- 有効期限が近づいたパスワードを選択した場合に、期限が切れる何日前に警告をユーザーに送信するかを指定します。パスワードの有効期限の何日前に警告を送信するかを「警告を送信」テキストボックスに入力します。
ユーザーが警告を受信すると、パスワードは当初の期日に失効します。警告の送信後に完全な警告期間を設けて有効期限を延長するには、「失効の警告を行わな い」チェックボックスの選択を解除します。警告と延長は、それぞれ 1 回ずつ行われます。パスワードが失効した後にユーザーがバインドしたときは、猶予ログインは認められなくなります。
- ユーザーパスワードの構文を検査して、パスワードポリシーで設定した要件を満たしていることをサーバー側で確認する場合は、「パスワード 構文を検査」チェックボックスを選択します。次に、「パスワードの最低長」テキストボックスに、最小限必要なパスワードの文字数を指定します。
- デフォルトでは、Directory Manager はパスワードポリシーに違反するパスワード (履歴に残されているパスワードの再使用など) をリセットできません。これを許可するには、「Directory Manager がパスワードポリシーをバイパスする」チェックボックスを選択します。
- 「パスワードの暗号化」プルダウンメニューで、パスワードの格納時にサーバーで使用する暗号化方式を指定します。
- アカウントのロックアウトポリシーを定義するときは、「ロックアウト」タブをクリックし、「アカウントのロックアウト機能を利用」チェックボックスを選択します。
- どれだけの時間に何回のログインが失敗した場合にロックアウトを有効にするか、回数と時間を指定します。
- Directory Manager がユーザーパスワードをリセットするまで永続的にロックアウトするには、「無期限にロックアウト」ラジオボタンを選択します。
- それ以外の場合は「ロックアウト時間」ラジオボタンを選択し、ユーザーアカウントが一時的にロックアウトされる時間を分単位で指定します。
- カスタムエディタの「了解」をクリックして、ポリシーを保存し、サブエントリを作成します。
コマンド行からのポリシーの定義
このパスワードポリシーでは、一時従業員のパスワードの有効期限を 100 日 (8,640,000 秒) とします。また、パスワードの有効期限が切れる 3 日 (259,200 秒) 前から、バインド時にユーザーへ有効期限切れの警告を開始します。構文検査を有効にして、パスワードセキュリティのための最小限必要な文字数の検査を行い ます。ロックアウトによって、辞書攻撃を使用してパスワードを解読しようとする侵入者を阻止します。その他のポリシー項目については、デフォルト値を適用 します。
dc=example,dc=com の下に次のサブエントリを追加して、Example.com のサブツリーにこのパスワードポリシーを定義します。
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn: cn=TempPolicy,dc=example,dc=com
objectClass: top
objectClass: passwordPolicy
objectClass: LDAPsubentry
cn: TempPolicy
passwordStorageScheme: SSHA
passwordChange: on
passwordMustChange: on
passwordCheckSyntax: on
passwordExp: on
passwordExp: on
passwordMinLength: 6
passwordMaxAge: 8640000
passwordMinAge: 0
passwordWarning: 259200
passwordInHistory: 6
passwordLockout: on
passwordMaxFailure: 3
passwordUnlock: on
passwordLockoutDuration: 3600
passwordResetFailureCount: 600パスワードポリシーに関連するすべての属性の説明については、『Sun ONE Directory Server Reference Manual』の第 4 章にある「cn=Password Policy」を参照してください。
パスワードポリシーの割り当て
個別パスワードポリシーの割り当ては、適切なポリシーサブエントリを指定することによって行います。passwordPolicySubentry の値として単一エントリにポリシーを追加するか、CoS とロールを使用してポリシーを管理します。また、アクセス制御を設定して、ユーザーが自分に設定されているパスワードポリシーを変更することを禁止する必要があります。
コンソールから
Directory Server コンソールには、ユーザーまたはグループに割り当てられているパスワードポリシーを管理するためのインタフェースが用意されています。
- Directory Server コンソールの最上位にある「ディレクトリ」タブで、個別パスワードポリシーを割り当てるか、変更するユーザーまたはグループのエントリを表示します。
- このエントリをマウスの右ボタンでクリックし、ポップアップメニューから「パスワードポリシーを設定」を選択します。あるいは、エントリをクリックして選択し、「オブジェクト」メニューから「パスワードポリシーを設定」を順に選択します。
- 「パスワードポリシー」ダイアログが表示され、このエントリに適用されているパスワードポリシーを示します。
- グローバルポリシーが適用されているときは、「割り当て」をクリックして、ディレクトリツリー内の任意の場所にあるパスワードポリシーのサブエントリを選択します。
- すでに個別ポリシーが定義されている場合は、それを置換、削除、編集することができます。「ポリシーを編集」をクリックすると、そのポリシーサブエントリのカスタムエディタが起動されます。
パスワードポリシーの割り当てまたは置換を行うときは、ディレクトリブラウザダイアログが表示されます。このダイアログには、パスワードポリシーのサブエントリが小さなアイコンで表示されます。
- ポリシーの変更が完了したら、「パスワードポリシー」ダイアログの「了解」ボタンをクリックします。新しいポリシーは直ちに適用されます。
コマンド行から
ユーザーまたはグループのエントリにパスワードポリシーを割り当てるには、パスワードポリシーの DN を passwordPolicySubentry 属性の値として追加します。たとえば、次のコマンドは cn=TempPolicy,dc=example,dc=com を Barbara Jensen に割り当てます。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: passwordPolicySubentry
passwordPolicySubentry: cn=TempPolicy,dc=example,dc=comロールと CoS の使い方
ロールを使用してユーザーをグループ化するときには、CoS を使用して適切なポリシーサブエントリに指定できます。ロールと CoS の使用方法については、第 5 章「高度なエントリの管理」を参照してください。
たとえば次のコマンドは、Example.com の一時従業員のフィルタリングされたロールを作成し、このロールを持つ従業員に cn=TempPolicy,dc=example,dc=com を割り当てます。
ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn: cn=TempFilter,ou=people,dc=example,dc=com
objectclass: top
objectclass: LDAPsubentry
objectclass: nsRoleDefinition
objectclass: nsComplexRoleDefinition
objectclass: nsFilteredRoleDefinition
cn: TempFilter
nsRoleFilter: (&(objectclass=person)(status=contractor))
description: filtered role for temporary employees
dn: cn=PolTempl,dc=example,dc=com
objectclass: top
objectclass: nsContainer
dn: cn="cn=TempFilter,ou=people,dc=example,dc=com",
cn=PolTempl,dc=example,dc=com
objectclass: top
objectclass: extensibleObject
objectclass: LDAPsubentry
objectclass: costemplate
cosPriority: 1
passwordPolicySubentry: cn=TempPolicy,dc=example,dc=com
dn: cn=PolCoS,dc=example,dc=com
objectclass: top
objectclass: LDAPsubentry
objectclass: cosSuperDefinition
objectclass: cosClassicDefinition
cosTemplateDN: cn=PolTempl,dc=example,dc=com
cosSpecifier: nsRole
cosAttribute: passwordPolicySubentry operationalこれにより、契約社員ステータスを持つユーザーは、cn=TempPolicy,dc=example,dc=com パスワードポリシーの対象となります。
個別パスワードポリシーの保護
ユーザーが自分に割り当てられるパスワードポリシーを変更できないようにするには、ルートエントリに次のような ACI を追加する必要があります。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr != "passwordPolicySubentry")(version 3.0; acl
"Allow self entry modification except for passwordPolicySubentry";
allow (write) (userdn ="ldap:///self");)ユーザーパスワードのリセット
ディレクトリは、ユーザーエントリの userPassword 属性にパスワード値を格納しています。サーバーのアクセス制御設定によっては、指定したパスワードポリシーに基づいて、ldapmodify などの標準ツールを使用して、userPassword 値を設定することもできます。
永久的なアカウントロックアウトが発生した場合 (ユーザーのオペレーショナル属性 accountUnlockTime が 0 で、パスワードポリシーの passwordUnlock が off の場合) は、Directory Manager としてパスワードをリセットして、ユーザーアカウントのロックを解除できます。たとえば、Example.com のディレクトリユーザーである Barbara Jensen がパスワードを思い出せないために、永続的なロックアウトが適用されたと仮定します。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
replace: userPassword
userPassword: ChAnGeMeパスワードポリシーで passwordMustChange がオンの場合、このユーザーは次回のバインド後にパスワードを変更する必要があります。このユーザーのパスワードが ChAnGeMe に変更されたことを、できるだけ安全な方法でこのユーザーに知らせる必要があります。
ユーザーとロールの無効化と有効化
1 つのユーザーアカウントまたはアカウントのセットを、一時的に無効にすることができます。アカウントが無効になると、ユーザーはディレクトリにバインドできません。そのため、このユーザーの認証操作は失敗します。
ここで説明する手順は、ユーザーとロールの両方の無効化に利用できます。ただし、ロールを無効化すると、ロールのメンバーは無効になりますが、ロールのエントリ自体は無効になりません。ロールの概要、およびロールとアクセス制御が相互に及ぼす影響については、第 5 章「高度なエントリの管理」を参照してください。
コンソールからのユーザーとロールの有効化設定
- Directory Server コンソールの最上位レベルにある「ディレクトリ」タブでディレクトリツリーを表示し、有効化または無効化するユーザーまたはロールのエントリを探します。
- このエントリをダブルクリックしてカスタムエディタを表示し、左側の列の「アカウント」タブをクリックします。
右側のパネルには、このエントリの有効化状態が表示されます。
- ボタンをクリックして、このエントリに対応するユーザーまたはロールを無効化または有効化します。ユーザーまたはロールのアイコンに表示される赤いボックスとバーは、そのエントリが無効化されることを示しています。
- 「了解」をクリックしてダイアログボックスを閉じ、このエントリの新しい有効化状態を保存します。
有効、無効を簡単に設定するには、エントリを選択して「オブジェクト」メニューから「無効」または「有効」を選びます。
「表示」メニューから「表示」をクリックし、「アクティブでない状態」を選択すると、任意のディレクトリオブジェクトの有効化状態を確認できます。無効化 されているエントリのすべてのアイコンには、赤いバーが表示されます。ユーザーエントリの有効化状態は、そのエントリが直接無効化されたか、ロールメン バーシップとして無効化されたかに関係なく、正しく表示されます。
コマンド行からのユーザーとロールの有効化設定
コマンド行からユーザーアカウントを無効にするには、ns-inactivate.pl スクリプト (Solaris パッケージでは directoryserver account-inactivate) を使用します。ユーザーまたはロールを有効化、または再有効化するには、ns-activate.pl スクリプト (Solaris パッケージでは directoryserver account-activate) を使用します。このスクリプトのコマンドは、プラットフォームごとに異なります。
次のコマンドは、perl スクリプトを使って Barbara Jensen のユーザーアカウントを無効化および再有効化する方法を示しています。
ns-inactivate.pl -h host -p port -D "cn=Directory Manager" -w password \
-I "uid=bjensen,ou=People,dc=example,dc=com"ns-activate.pl -h host -p port -D "cn=Directory Manager" -w password \
-I "uid=bjensen,ou=People,dc=example,dc=com"どちらのコマンドでも、-I オプションは、有効化状態を設定するユーザーまたはロールの DN を指定します。
詳細については、『Sun ONE Directory Server Reference Manual』の第 2 章にある「ns-inactivate.pl」および「ns-activate.pl」を参照してください。
個別のリソース制限の設定
ディレクトリにバインドするクライアントアプリケーションでは、特別なオペレーショナル属性値を使用して、検索操作に関するサーバーの制限を制御できます。検索操作に関しては、次の制限を設定できます。
- 検索制限は、検索処理で参照されるエントリの最大数を指定する
- サイズ制限は、検索処理に応答してクライアントアプリケーションに返されるエントリの最大数を指定する
- 時間制限は、サーバーが検索処理のために使用できる最大時間を指定する
- アイドルタイムアウトは、サーバーが接続を切断するまでに、サーバーへのクライアント接続がアイドル状態でいられる時間を指定する
注 デフォルトでは、Directory Manager は無制限にリソースを利用できます。
特定のユーザーに対して設定したリソース制限は、グローバルサーバー設定で設定したデフォルトのリソース制限より優先されます。個別リソース制限を格納す る属性がユーザー自身によって変更されないように、ユーザーエントリを含むサフィックスに次の ACI を追加する必要があります。
(targetattr != "nsroledn || aci || nsLookThroughLimit || nsSizeLimit || nsTimeLimit || nsIdleTimeout || passwordPolicySubentry || passwordExpirationTime || passwordExpWarned || passwordRetryCount || retryCountResetTime || accountUnlockTime || passwordHistory || passwordAllowChangeTime")(version 3.0; acl "Allow self entry modification except for nsroledn, aci, resource limit attributes, passwordPolicySubentry and password policy state attributes"; allow (write)userdn ="ldap:///self";)
コンソールを使用したリソース制限の設定
- Directory Server コンソールの最上位レベルにある「ディレクトリ」タブでディレクトリツリーを表示し、リソース制限を設定するエントリを探します。
- このエントリをダブルクリックしてカスタムエディタを表示し、左側の列の「アカウント」タブをクリックします。右側のパネルには、このエントリの現在の制限セットが表示されます。
- 上で説明したリソース制限について、4 つのテキストフィールドに値を指定します。-1 を指定すると、そのリソースの制限はなくなります。
- 設定が完了したら「了解」をクリックし、新しい制限を保存します。
コマンド行からのリソース制限の設定
ldapmodify コマンドを使って次の属性をユーザーエントリに設定することで、ユーザーによるリソース使用を制限できます。
たとえば、次のように ldapmodify を実行することによって、エントリのサイズの制限を設定できます。
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn: uid=bjensen,ou=People,dc=example,dc=com
changetype: modify
add: nsSizeLimit
nsSizeLimit: 500この ldapmodify 文は、Barbara Jensen のエントリに nsSizeLimit 属性を追加し、検索結果のサイズの制限を 500 エントリに設定します。