認証に LDAP サーバーの使用においては、LDAP サーバーがパスワードの有効期限、失敗したログイン試行、 およびパスワード規則に関したポリシーをサポートすることが重要です。 Directory Server では、この種のポリシー 3 つすべてを構成できます。
パスワード・ポリシーとは、IBM Directory におけるパスワードの使用および管理の方法を制御する規則のセットです。 これらの規則は、ユーザーがパスワードを定期的に変更し、そのパスワードが組織のパスワードの構文上の要件を確実に満たすように設定されています。 また、これらの規則で、古いパスワードの再使用を制限することもでき、バインド試行の失敗回数が予め定義した回数を超えるとユーザーが必ずロックアウトされるようにすることもできます。
Directory Server には、個人、グループ、およびグローバル・パスワード・ポリシーの 3 タイプのパスワード・ポリシーがあります。
サーバーによってグローバル・パスワード・ポリシー項目 (cn=pwdpolicy,cn=ibmpolicies) が作成されると、属性 ibm-pwdPolicy は FALSE (デフォルト値) に設定されます。 これは、サーバーではすべてのパスワード・ポリシー項目が無視されるという意味です。 ibm-pwdPolicy 属性が TRUE に設定されたときにのみ、サーバーはパスワード規則を施行します。グローバル・パスワード・ポリシーが施行されて、cn=pwdpolicy,cn=ibmpolicies における ibm-pwdGroupAndIndividualEnabled 属性が TRUE に設定されると、パスワード・ポリシーの評価時にグループおよび個人のパスワード・ポリシーも考慮されます。
グループ・パスワード・ポリシーを使用すると、グループのメンバーを特別なパスワード規則のセットによって制御することができます。 グループ・パスワード・ポリシーの場合、パスワード・ポリシー項目を指す ibm-pwdGroupPolicyDN 属性を、ユーザー・グループ・オブジェクト (例えば、accessGroup、accessRole、および groupOfNames など) 内で使用できます。
1 ユーザー項目が複数のグループに属している可能性があるため、複数のグループ・パスワード・ポリシー項目が評価されて、そのユーザーのグループ・ポリシーが決定されます。 複合グループ・ポリシーを評価するために、複数のグループ・パスワード・ポリシー項目が結合されて、最も制限の強い属性値が優先する指定で、属性の 1 つの結合体が形成されます。
ユーザーの有効パスワード・ポリシーを評価する場合、ユーザーに関連付けられているすべてのパスワード・ポリシーが考慮されます。最初は、個人のパスワード・ポリシーから検討されます。 次に、グループ・パスワード・ポリシーが考慮されて、最後に、グローバル・パスワード・ポリシーが考慮されます。 属性が個人のパスワード・ポリシー項目に定義されていない場合は、複合グループ・パスワード・ポリシー項目で検索されます。 複合グループ・パスワード・ポリシー項目でも見つからない場合は、グローバル・パスワード・ポリシー項目にある属性が使用されます。 その属性がグローバル・パスワード・ポリシー項目にも定義されていない場合は、デフォルト値が想定されます。
選択の順序は、pwdMinLength、passwordMinOtherChars、および passwordAlphaChars です。 すなわち、pwdMinLength に最大の値を選別することが選択のベースになります。 2 つのグループ・ポリシーの pwdMinLength 属性の値が等しい場合には、passwordMinOtherChars の値が最も大きいものが選択されます。 1 つの属性の選択が決まると、自動的に他の 2 つの属性も選択されます。
passwordMaxRepeatedChars 属性の値は、passwordMaxConsecutiveRepeatedChars 属性の値より大きいか等しくなければなりません。
複数のパスワード・ポリシーを使用可能にすると、passwordMaxConsecutiveRepeatedChars は、passwordMaxRepeatedChars の選出に使用されたものと同じポリシーから選出されます。すべてのポリシーで passwordMaxRepeatedChars を使用不可にした場合は、passwordMaxConsecutiveRepeatedChars の最も制限の強い値が選出されます。
passwordMaxConsecutiveRepeatedChars 属性を 0 に設定すると、連続する繰り返し文字の数は検査されません。passwordMaxConsecutiveRepeatedChars を 1 に設定すると、特定の文字の直後に同じ文字をもう 1 つ続けることはできません。例えば、passwordMaxConsecutiveRepeatedChars 属性を 1 に設定すると、「aba」はパスワードとして有効な値ですが、「aab」は無効値になります。
同様に、passwordMaxConsecutiveRepeatedChars 属性を 2 に設定した場合、パスワード内で同じ文字を連続して使用できる最大回数は 2 回です。
| パスワード・ポリシー属性 | より制限の強い値 | 有効な値 | デフォルト値 |
|---|---|---|---|
| pwdAttribute | N/A | userPassword | userPassword |
| pwdMinAge | 大きい値ほど制限が強い | 0 以上 | 0 - 年齢制限なし |
| pwdMaxAge | 小さい値ほど制限が弱い | 0 以上 | 0 - パスワードの有効期限は切れない |
| pwdInHistory | 大きい値ほど制限が強い | 0 から 10 | 0 - パスワードの履歴なし |
| pwdCheckSyntax | 大きい値ほど制限が強い | 0、1、 2 1 - サーバーが構文を検査できない場合、パスワードを受け入れます。2 - サーバーが構文を検査できない場合、パスワードを拒否します。 | 0 |
| pwdMinLength | 大きい値ほど制限が強い | 0 以上 | 0 - 最小長なし |
| pwdExpireWarning | 大きい値ほど制限が強い | 0 以上 | 0 - 警告は送信されません |
| pwdGraceLoginLimit | 小さい値ほど制限が弱い | 0 以上 | 0 - 猶予ログインなし |
| pwdLockout | True | True/False | False |
| pwdLockoutDuration | 大きい値ほど制限が強い | 0 以上 | 0 - リセットされるまでロックアウト |
| pwdMaxFailure | 小さい値ほど制限が弱い | 0 以上 | 0 - 失敗カウントなし、ロックアウトなし |
| pwdFailureCountInterval | 大きい値ほど制限が強い | 0 以上 | 0 - カウントなし、認証成功によりリセットされる |
| pwdMustChange | True | True/False | True/False (cn=noPwdPolicy の場合) |
| pwdAllowUserChange | True | True/False | True |
| pwdSafeMode | True | True/False | False |
| Ibm-pwdPolicy | True | True/False | False |
| passwordMinAlphaChars | 大きい値ほど制限が強い | 0 以上 | 0 - 最小英字数は施行されません |
| passwordMinOtherChars | 大きい値ほど制限が強い | 0 以上 | 0 - 他の文字の最小数なし |
| passwordMaxRepeatedChars | 小さい値ほど制限が弱い | 0 以上 | 0 - 反復文字の最大数なし |
| passwordMaxConsecutive RepeatedChars | 小さい値ほど制限が弱い | 0 以上 | 0 - 最大連続繰り返し文字なし |
| passwordMinDiffChars | 大きい値ほど制限が強い | 0 以上 | 0 - パスワード間の異なっている文字の最小数なし |
| グループ X パスワード・ポリシー | グループ Y パスワード・ポリシー | グループ Z パスワード・ポリシー | 複合グループ・パスワード・ポリシー |
|---|---|---|---|
| pwdMaxAge = 86400 pwdSafeMode = True | pwdMaxAge = 43200 pwdSafeMode = False | pwdCheckSytax = 1 ibm-pwdPolicy = True | pwdMaxAge = 43200 pwdSafeMod = True |
| pwdMaxFailure = 5 ibm-pwdPolicy = True ibm-pwdPolicyStarttime = 20060406200000 | ibm-pwdPolicy = True ibm-pwdPolicyStarttime = 20060306200000 | ibm-pwdPolicyStarttime = 20060506200000 | pwdCheckSytax = 1 pwdMaxFailure = 5 ibm-pwdPolicy = True ibm-pwdPolicyStarttime = 20060306200000 |
| pwdMaxAge = 86400 ibm-pwdPolicy = True | pwdMaxAge = 43200 pwdSafeMode = True | pwdMaxAge = 0 ibm-pwdPolicy = True | pwdMaxAge = 86400 pwdSafeMode = False ibm-pwdPolicy = True 注: グループ Y のパスワード・ポリシーは、複合グループ・ポリシーの算定には使用されません。この ibm-pwdPolicy が定義されていないので、デフォルトで FALSE になるためです。 |
| pwdMinLength = 10 passwordMinOtherChars = 4 passwordMinAlphaChars= 6 ibm-pwdPolicy = True | pwdMinLength = 12 ibm-pwdPolicy = True | pwdMinLength = 12 ibm-pwdPolicy = True | |
| pwdMinLength = 10 passwordMinOtherChars = 4 passowrdMinAlphaChars = 6 ibm-pwdPolicy = True | pwdMinLength =10 passwordMinOtherChars = 5 passwordMinAlphaChars = 3 ibm-pwdPolicy = True | pwdMinLength =10 passwordMinOtherChars = 5 passwordMinAlphaChars = 3 ibm-pwdPolicy = True | |
| passwordMaxConsecutive RepeatedChars=0 passwordMax RepeatedChars=5 ibm-pwdPolicy = True |
passwordMaxConsecutive RepeatedChars=2 ibm-pwdPolicy = True |
passwordMaxRepeatedChars=3 ibm-pwdPolicy = True |
passwordMaxRepeatedChars=3 passwordMaxConsecutive RepeatedChars=0 ibm-pwdPolicy = True |
| passwordMaxConsecutive RepeatedChars=4 passwordMaxRepeatedChars=0 ibm-pwdPolicy = True |
passwordMaxConsecutive RepeatedChars=1 passwordMaxRepeatedChars=0 ibm-pwdPolicy = True |
passwordMaxConsecutive RepeatedChars=1 passwordMaxRepeatedChars=0 ibm-pwdPolicy = True |
|
| passwordMaxConsecutive RepeatedChars=4 passwordMaxRepeatedChars=2 ibm-pwdPolicy = True |
passwordMaxConsecutive RepeatedChars=2 passwordMaxRepeatedChars=3 ibm-pwdPolicy = True |
passwordMaxConsecutive RepeatedChars=4 passwordMaxRepeatedChars=2 ibm-pwdPolicy = True |
ユーザーの有効パスワード・ポリシーは、グローバル・パスワード・ポリシー項目で ibm-pwdPolicy 属性が TRUE に設定されている場合にのみ評価されます。 他のパスワード・ポリシー (個人のポリシーおよびグループ・ポリシーなど) は、グローバル・ポリシーが使用不可に設定されている場合にはそのまま使用可能にできますが、これらのポリシーの規則は、ユーザーに対しては効果はありません。
属性 ibm-pwdPolicyStartTime は、ibm-pwdPolicy が TRUE に設定されている場合、現行のシステム時刻に設定されます。 これは、たとえ、グローバル・パスワード・ポリシーが FALSE に設定されている場合でも行われます。 ただし、グローバル・ポリシーが使用可能にされない限り、有効なポリシーの評価に ibm-pwdPolicyStartTime 値は使用されません。 一度、グローバル・ポリシーを使用可能にすると、この属性の値が、まずユーザーの個人ポリシー、次にグループ・ポリシー、その次にグローバル・ポリシーから選択されます。 ibm-pwdPolicyStartTime は、すべてのアクティブ・パスワード・ポリシーにあるため、個人のポリシーの開始時刻があれば、それが、他のポリシーの開始時刻をオーバーライドして、ユーザーの有効パスワード・ポリシーの開始時刻になります。
以下の例で、ユーザーの有効なパスワード・ポリシーの決定方法を説明します。
| 個人のパスワード・ポリシー | グループ・パスワード・ポリシー | グローバル・パスワード・ポリシー | 有効パスワード・ポリシー |
|---|---|---|---|
| pwdMaxAge = 86400 ibm-pwdPolicy = True pwdMinAge = 21600 pwdLockout = True ibm-pwdPolicyStarttime = 20060406200000 | pwdMaxAge =43200 ibm-pwdPolicy = True pwdInHistory = 5 ibm-pwdPolicyStarttime = 20060306200000 | ibm-pwdPolicy = True pwdMinAge = 43200 pwdInHistory = 3 pwdCheckSyntax = 0 pwdMinLength = 0 pwdExpireWarning = 0 pwdGraceLoginLimit = 0 pwdLockoutDuration = 0 pwdMaxFailure =0 pwdFailureCountInterval=0 passwordMinAlphaChars=0 passwordMinOtherChars=0 passwordMaxRepeatedChars =0 passwordMinDiffChars=0 pwdLockout=False pwdAllowUserChange=True pwdMustChange=True pwdSafeModify=False ibm-pwdPolicyStarttime = 20060506200000 | pwdMaxAge = 86400 ibm-pwdPolicy = True pwdMinAge = 21600 pwdInHistory = 5 pwdCheckSyntax = 0 pwdMinLength = 0 pwdExpireWarning = 0 pwdGraceLoginLimit = 0 pwdLockoutDuration = 0 pwdMaxFailure =0 pwdFailureCountInterval =0 passwordMinAlphaChars =0 passwordMinOtherChars =0 passwordMaxRepeatedChars =0 passwordMinDiffChars =0 pwdLockout=True pwdAllowUserChange =True pwdMustChange=True pwdSafeModify=False ibm-pwdPolicyStarttime = 20060406200000 |
| pwdMaxAge = 86400 ibm-pwdPolicy = True pwdMinAge = 21600 pwdMinLength = 8 pwdLockout = True ibm-pwdPolicyStarttime = 20060406200000 | pwdMaxAge =43200 ibm-pwdPolicy = True pwdInHistory = 5 ibm-pwdPolicyStarttime = 20060306200000 | ibm-pwdPolicy = True pwdMinAge = 0 pwdInHistory = 3 | pwdMaxAge = 86400 ibm-pwdPolicy = True pwdMinAge = 21600 pwdInHistory = 5 pwdCheckSyntax = 0 pwdMinLength = 8 pwdExpireWarning = 0 pwdGraceLoginLimit = 0 pwdLockoutDuration = 0 pwdMaxFailure =0 pwdFailureCountInterval=0 passwordMinAlphaChars=0 passwordMinOtherChars=0 passwordMaxRepeatedChars =0 passwordMinDiffChars=0 pwdLockout=True pwdAllowUserChange =True pwdMustChange=True pwdSafeModify=False ibm-pwdPolicyStarttime = 20060406200000 |
| passwordMaxConsecutive RepeatedChars=1 passwordMaxRepeatedChars=0 ibm-pwdPolicy = True |
passwordMaxConsecutive RepeatedChars=1 passwordMaxRepeatedChars=10 ibm-pwdPolicy = True |
passwordMaxRepeatedChars=4 ibm-pwdPolicy = True |
passwordMaxConsecutive RepeatedChars=1 passwordMaxRepeatedChars=0 ibm-pwdPolicy = True |
パスワード・ポリシーの機能は、指定されたディレクトリー項目に対するパスワード・ポリシーの状態情報を含むいくつかの運用属性を提供します。 これらの属性を使用して、特定の状態 (例えば、パスワードの有効期限切れ) の項目を照会することや、管理者が、特定のポリシー条件をオーバーライドする (例えば、ロックされているアカウントをアンロックする) ことができます。 付録 H 『パスワード・ポリシー運用属性』を参照してください。
| Web 管理ツールのパラメーター | デフォルト設定値 |
|---|---|
| パスワード・ポリシーの使用可能化: ibm-pwdPolicy | false |
| パスワードの暗号化: ibm-slapdPwEncryption: | sha |
| ユーザーは、パスワードの変更時に旧パスワードを指定する必要がある: pwdSafeModify | false |
| ユーザーは、リセット後にパスワードを変更する必要がある: pwdMustChange | true |
| パスワードの有効期限: pwdMaxAge | 0 |
| 有効期限が切れた後の猶予ログイン数: pwdGraceLoginLimit | 0 |
| バインド施行失敗が連続して指定回数を超えたらアカウントをロックアウトする: pwdLockout | false |
| この数を超えたらアカウントのロックアウトになるバインド施行の連続失敗回数: pwdMaxFailure | 0 |
| 前回のパスワード変更との間の最小時間: pwdMinAge | 0 |
| アカウントのロックアウトの有効期限切れになるまでの時間、またはロックアウトの有効期限切れはないという指定: pwdLockoutDuration | 0 |
| 不正なログインの有効期限が切れるまでの時間、または、不正ログインは正しいパスワードの指定でのみ消去されるという指定: pwdFailureCountInterval | 0 |
| 同じパスワードを再使用できるまでのパスワード最小数: pwdInHistory | 0 |
| パスワードの構文を検査する: pwdCheckSyntax | 0 |
| 最小長: pwdMinLength | 0 |
| 英字の最小数: passwordMinAlphaChars | 0 |
| 数字および特殊文字の最小数: passwordMinOtherChars | 0 |
| 反復文字の最大数: passwordMaxRepeatedChars | 0 |
| 旧パスワードと異なっていなければならない文字の最小数 | 0 |
| 反復文字の最大数: passwordMaxConsecutiveRepeatedChars | 0 |
ディレクトリー管理者を除くすべてのユーザー、管理グループのメンバー、およびマスター・サーバー DN は、構成済みのユーザー・パスワード・ポリシーに従う必要があります。 管理者、管理グループのメンバー、および、マスター・サーバー DN のパスワードは、決して期限切れにはなりません。 ディレクトリー管理者、管理グループのメンバー、およびマスター・サーバー DN には、ユーザーのパスワードおよびユーザーのパスワード・ポリシーを変更するための十分なアクセス制御権限があります。 グローバル管理グループ・メンバーは、ユーザー・パスワード・ポリシーに従います。また、ユーザー・パスワード・ポリシーの設定を変更する権限があります。
以下の領域のパスワードに関して、サーバーの動作を構成することができます。
いずれの場合においても、サーバーはすべての構文規則を適用できないかもしれません。 最小の長さ、最低の英字数、最低の数字数または特殊文字数、反復文字数、 直前のパスワードとは異なっていなければならないパスワードの文字数に関する構文規則がサポートされています。
ディレクトリー・サーバーのパスワード・ポリシー設定値は、オブジェクト「cn=pwdpolicy, cn=ibmpolicies」に保管されます。この例を以下に示します。
cn=pwdpolicy, cn=ibmpolicies
objectclass=container objectclass=pwdPolicy
objectclass=ibm-pwdPolicyExt
objectclass=ibm-pwdGroupAndIndividualPolicies
objectclass=top
cn=pwdPolicy
pwdExpireWarning=0
pwdGraceLoginLimit=0
passwordMaxRepeatedChars=0
pwdSafeModify=false
pwdattribute=userpassword
pwdinhistory=0
pwdchecksyntax=0
passwordminotherchars=0
passwordminalphachars=0
pwdminlength=0
passwordmindiffchars=0
pwdminage=0
pwdmaxage=0
pwdallowuserchange=true
pwdlockoutduration=0
ibm-pwdpolicy=true
pwdlockout=true
pwdmaxfailure=2
pwdfailurecountinterval=0
pwdmustchange=false ibm-pwdGroupAndIndividualEnabled=false
ibm-pwdPolicyStartTime=20071021141828ZpasswordMaxConsecutiveRepeatedChars=0
Directory Server のパスワード・ポリシー・サポートには、 パスワード・ポリシー対応アプリケーションがパスワード・ポリシー関連の追加条件の通知を受け取るための LDAP コントロールのセットが組み入れられています。
アプリケーションは、以下の警告条件の通知を受け取ることができます。
アプリケーションは、以下のエラー条件の通知も受け取ることができます。
2 つの制御が使用されます。 パスワード・ポリシー要求制御を使用して、 アプリケーションはパスワード・ポリシー関連条件の通知を受け取りたいことをサーバーに知らせます。 この制御は、行いたいすべての操作 (通常は、初期バインド要求およびパスワード変更要求) に対してアプリケーションによって指定する必要があります。 パスワード・ポリシー要求制御がある場合、 上記のいずれかのエラー状態が存在する場合にパスワード・ポリシー応答制御がサーバーから戻されます。
Directory Server クライアント API には、C アプリケーションがこれらの制御を処理するために使用される API のセットが含まれます。 これらの API を以下に示します。
これらの API を使用しないアプリケーションについては、制御は以下に定義されています。 制御を処理するために、使用される LDAP クライアント API により提供される機能を使用する必要があります。 たとえば、Java™ Naming and Directory Interface (JNDI) には、 幾つかの既知の制御に対する組み込みサポートがあり、JNDI が認識しない制御をサポートするためのフレームワークも提供しています。
Control name: 1.3.6.1.4.1.42.2.27.8.5.1
Control criticality: FALSE
Control value: None
Control name: 1.3.6.1.4.1.42.2.27.8.5.1 (same as the request control)
Control criticality: FALSE
Control value: A BER encoded value defined in ASN.1 as follows:
PasswordPolicyResponseValue ::= SEQUENCE {
warning [0] CHOICE OPTIONAL {
timeBeforeExpiration [0] INTEGER (0 .. MaxInt),
graceLoginsRemaining [1] INTEGER (0 .. maxInt) }
error [1] ENUMERATED OPTIONAL {
passwordExpired (0),
accountLocked (1),
changeAfterReset (2),
passwordModNotAllowed (3),
mustSupplyOldPassword (4),
invalidPasswordSyntax (5),
passwordTooShort (6),
passwordTooYoung (7),
passwordInHistory (8) } }
他の LDAP プロトコル・エレメント同様、BER エンコード方式では、暗黙的なタグ付けが使用されます。
Directory Server は、userPassword 属性を持つ項目ごとに運用属性のセットを保守します。 これらの属性は、許可ユーザーにより検索され、検索フィルター内で使用されるか、検索要求により戻されます。 これらの属性を以下に示します。
パスワード・ポリシー情報は、サプライヤー・サーバーによりコンシューマーに複製されます。 項目 cn=pwdpolicy への変更内容は、スキーマへの変更同様一括変更として複製されます。 個々の項目のパスワード・ポリシー状態情報も複製されるため、たとえば、 ある項目がサプライヤー・サーバーでロックされる場合、そのアクションはあらゆるコンシューマーに複製されます。 読み取り専用レプリカへのパスワード・ポリシー状態変更では、他のサーバーには複製されません。