2. Directory Serverのインスタンスと接尾辞
7. Directory Serverのパスワード・ポリシー
パスワード・ポリシー属性とdsconfサーバー・プロパティとの相関関係
pwdSafeModifyがTRUEである場合のコマンドラインからのパスワード変更
パスワード変更の拡張操作により、パスワードをリセットするには:
新しいDirectory Server 11gリリース1(11.1.1.5.0)のデプロイメント
Directory Server 11gリリース1(11.1.1.5.0)へのデプロイメントの移行
8. Directory Serverのバックアップとリストア
9. Directory Serverのグループ、ロールおよびCoS
16. Directory Proxy Serverのツール
17. Directory Proxy Serverのインスタンス
19. Directory Proxy Serverの証明書
20. Directory Proxy Serverのロード・バランシングとクライアント・アフィニティ
22. Directory Proxy Serverによる仮想化
24. Directory Proxy ServerとバックエンドLDAPサーバーの接続
25. クライアントとDirectory Proxy Serverの接続
26. Directory Proxy Serverのクライアント認証
27. Directory Proxy Serverのロギング
28. Directory Proxy Serverの監視とアラート
第3部 Directory Service Control Centerの管理
特殊パスワード・ポリシーは、pwdPolicy(5dsoc)エントリ内で定義します。ポリシーはディレクトリ・ツリーの任意の場所で定義できますが、通常はそのポリシーで制御するアカウントでレプリケートされたサブツリーで行います。ポリシーは、cn=policy name,subtreeという形式のDNを持ちます。
パスワード・ポリシーを定義したら、目的のユーザー・エントリにpwdPolicySubentry(5dsat)属性を設定して、パスワード・ポリシーを割り当てます。
この項の項目は次のとおりです。
Directory Serverでは、複数のパスワード・ポリシーを構成できます。この項では、デフォルト・パスワード・ポリシーおよび特殊パスワード・ポリシーについて説明します。さらに、この項では、特定のアカウントに複数のパスワードポリシーを適用できる場合に、どのポリシーを強制するかについても説明します。
最初にDirectory Serverのインスタンスを作成すると、そのインスタンスはデフォルト・パスワード・ポリシーを持ちます。このデフォルト・パスワード・ポリシーは、構成エントリcn=PasswordPolicy,cn=configに表されます。デフォルトのパスワード・ポリシーはディレクトリ・マネージャを除くディレクトリ内のすべてのアカウントに適用されます。
すべてのDirectory Serverのパスワード・ポリシーと同様に、cn=PasswordPolicy,cn=configはオブジェクト・クラスpwdPolicy(5dsoc)およびオブジェクト・クラスsunPwdPolicy(5dsoc)を持ちます。
注意: Directory Serverのインスタンスを作成すると、パスワード・ポリシーの属性はDirectory Server 5互換モードのままとなり、以前のバージョンからのアップグレードが容易になります。Directory Server 5互換モードでは、Directory Serverはオブジェクト・クラスpasswordPolicy(5dsoc)を持つパスワード・ポリシー・エントリも処理します。
アップグレードが完了すると、全機能モードで新しいパスワード・ポリシーを使用します。これについては、Oracle Directory Server Enterprise Editionアップグレードおよび移行ガイドで説明しています。管理の移行は、ディレクトリ・アプリケーションに対して透過的に行われます。
この章では、新しいパスワード・ポリシー機能を使用したパスワード・ポリシーの構成について扱います。
デフォルト・パスワード・ポリシーを変更することで、デフォルト設定をオーバーライドできます。dsconf(1M)コマンドを使用して、デフォルト・パスワード・ポリシーのサーバー・プロパティを設定できます。このようなサーバー・プロパティ名は通常、pwd-の接頭辞で始まります。このようなプロパティの設定を変更する場合、インスタンスのデフォルト・パスワード・ポリシーをオーバーライドします。ただし、レプリケーションでは、レプリカに対する変更はコピーされません。デフォルト・パスワード・ポリシーに対する変更はインスタンスの構成の一部であり、ディレクトリ・データの一部ではありません。
デフォルト・パスワード・ポリシーの構成の他に、特殊パスワード・ポリシーも構成できます。特殊パスワード・ポリシーはディレクトリ・ツリーのエントリにより定義されます。特殊パスワード・ポリシーのエントリはデフォルト・パスワード・ポリシーと同じオブジェクト・クラスpwdPolicy(5dsoc)を持つため、同じポリシー属性を取ります。特殊パスワード・ポリシーは正規のディレクトリ・エントリなので、ポリシー・エントリは通常のディレクトリ・エントリと同じ方法でレプリケートされます。
ユーザー・エントリは、操作属性pwdPolicySubentry(5dsat)の値により特殊パスワード・ポリシーを参照します。ユーザー・エントリにより参照されると、特殊パスワード・ポリシーはインスタンスのデフォルト・パスワード・ポリシーをオーバーライドします。多くのデプロイメントでは、ユーザー・ロールを割り当てます。pwdPolicySubentryの値を設定することにより、サービス・クラス(CoS)と連携してユーザー・アカウントに適用するパスワード・ポリシーを決定するよう、ロールを構成できます。ロールによって設定されたパスワード・ポリシーをオーバーライドするには、そのユーザーのエントリ・ディレクトリのpwdPolicySubentry値を変更します。
この項を要約すると、最初にデフォルト・パスワード・ポリシーを適用します。デフォルト・パスワード・ポリシーを変更することで、デフォルトをオーバーライドできます。次に特殊パスワード・ポリシー・エントリを作成することで、デフォルト・パスワード・ポリシーをオーバーライドできます。パスワード・ポリシーにロールおよびCoSを割り当てる場合、個別エントリのパスワード・ポリシーを指定することで、CoSが割り当てられたポリシーをオーバーライドできます。
特殊パスワード・ポリシーの作成および変更は、他のディレクトリ・エントリの作成および変更と同様の方法で行います。次の手順では、テキスト・エディタを使用して、LDIFでパスワード・ポリシー・エントリを記述する方法について説明します。さらには、-aオプション付きのldapmodifyコマンドを使用して、パスワード・ポリシー・エントリをディレクトリに追加します。
このタスクの実行には、DSCCが使用できます。詳細は、「Directory Service Control Centerのインタフェース」およびDSCCのオンライン・ヘルプを参照してください。
始める前に
特に記述がないかぎり、ここで示す例のデータはExample.ldifからのものとなります。
サンプルは、「パスワード・ポリシー定義用ワークシート」を参照してください。
たとえば、次のポリシー・エントリは、Example.comでの臨時従業員用のパスワード・ポリシーを指定します。この従業員のサブツリーのルートはdc=example,dc=comです。
dn: cn=TempPolicy,dc=example,dc=com objectClass: top objectClass: pwdPolicy objectClass: sunPwdPolicy objectClass: LDAPsubentry cn: TempPolicy pwdAttribute: userPassword pwdCheckQuality: 2 pwdLockout: TRUE pwdLockoutDuration: 300 pwdMaxFailure: 3 pwdMustChange: TRUE
デフォルト・パスワード・ポリシーの設定の他にも、ここで示すポリシーは追加動作を指定しています。パスワードの品質チェックが実行されます。3回連続してバインドが失敗すると、5分(300秒)間アカウントがロックされます。パスワードは、リセットの後に変更する必要があります。ポリシーがユーザー・アカウントに割り当てられると、ここで明示的に指定された設定で、デフォルト・パスワード・ポリシーがオーバーライドされます。
たとえば、次のコマンドにより、dc=example,dc=comの下にExample.comの臨時従業員用パスワード・ポリシーが追加されます。パスワード・ポリシーはpwp.ldifというファイルに保存されています。
$ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f pwp.ldif Enter bind password: adding new entry cn=TempPolicy,dc=example,dc=com $ ldapsearch -D uid=kvaughan,ou=people,dc=example,dc=com -w --b dc=example,dc=com \ "(&(objectclass=ldapsubentry)(cn=temppolicy))" Enter bind password: version: 1 dn: cn=TempPolicy,dc=example,dc=com objectClass: top objectClass: pwdPolicy objectClass: LDAPsubentry cn: TempPolicy pwdCheckQuality: 2 pwdLockout: TRUE pwdLockoutDuration: 300 pwdMaxFailure: 3 pwdMustChange: TRUE $
Example.ldifに示すように、kvaughanは人事マネージャであり、dc=example,dc=comエントリを変更するためのアクセス権を持っています。Example.ldifに示すように、Vaughanのバインド・パスワードは、briberyです。
関連項目
定義したポリシーにより、どのユーザー・アカウントを管理するかを定義するには、「パスワード・ポリシーを個別アカウントに割り当てるには:」または「ロールおよびCoSを使用して、パスワード・ポリシーを割り当てるには:」を参照してください。
次の手順では、既存のパスワード・ポリシーを1つのユーザー・アカウントに割り当てます。
このタスクの実行には、DSCCが使用できます。詳細は、「Directory Service Control Centerのインタフェース」およびDSCCのオンライン・ヘルプを参照してください。
特に記述がないかぎり、ここで示す例のデータはExample.ldifからのものとなります。
たとえば、次のコマンドでは、「パスワード・ポリシーを作成するには:」で定義したパスワード・ポリシーをDavid Millerのエントリに割り当てます。David MillerのDNはuid=dmiller,ou=people,dc=example,dc=comです。
$ cat pwp.ldif dn: uid=dmiller,ou=people,dc=example,dc=com changetype: modify add: pwdPolicySubentry pwdPolicySubentry: cn=TempPolicy,dc=example,dc=com $ ldapmodify -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f pwp.ldif Enter bind password: modifying entry uid=dmiller,ou=people,dc=example,dc=com $ ldapsearch -D uid=kvaughan,ou=people,dc=example,dc=com -w - -b dc=example,dc=com \ "(uid=dmiller)" pwdPolicySubentry Enter bind password: version: 1 dn: uid=dmiller, ou=People, dc=example,dc=com pwdPolicySubentry: cn=TempPolicy,dc=example,dc=com $
Example.ldifに示すように、kvaughanは人事マネージャであり、dc=example,dc=comエントリを変更するためのアクセス権を持っています。Example.ldifに示すように、Vaughanのバインド・パスワードは、briberyです。
次の手順では、ロールおよびサービス・クラス(CoS)を適用して、既存の特殊パスワード・ポリシーをユーザー・セットに割り当てます。ロールおよびCoSの詳細は、第9章「Directory Serverのグループ、ロールおよびCoS」を参照してください。
このタスクの実行には、DSCCが使用できます。詳細は、「Directory Service Control Centerのインタフェース」およびDSCCのオンライン・ヘルプを参照してください。
特に記述がないかぎり、ここで示す例のデータはExample.ldifからのものとなります。
たとえば、次のコマンドにより、Example.comの臨時従業員用のフィルタ処理されたロールが作成されます。
$ cat tmp.ldif 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 $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f tmp.ldif Enter bind password: modifying entry cn=TempFilter,ou=people,dc=example,dc=com $
Example.ldifに示すように、kvaughanは人事マネージャであり、dc=example,dc=comエントリを変更するためのアクセス権を持っています。Example.ldifに示すように、Vaughanのバインド・パスワードは、briberyです。
このDNは、作成したロールを持つユーザーのpwdPolicySubentry属性の値となります。
たとえば、次のコマンドにより、Example.comの臨時従業員用のフィルタ処理されたロールが作成されます。このコマンドにより、cn=TempPolicy,dc=example,dc=comがロールを持つユーザーに割り当てられます。
$ cat cos.ldif 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 pwdPolicySubentry: 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: pwdPolicySubentry operational $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f cos.ldif Enter bind password: modifying entry cn=TempFilter,ou=people,dc=example,dc=com $
これで、ステータスがcontractorであるユーザーが、パスワード・ポリシーcn=TempPolicy,dc=example,dc=comの対象となります。
多くのデプロイメントにおいて、新しいアカウントに適用するパスワード・ポリシーは既成アカウントに適用するパスワード・ポリシーとは異なります。この項では、初回ログインのパスワード・ポリシーについて説明します。このポリシーでは、新しく作成したアカウントに対して、ユーザーに3日の使用期間が与えられ、このアカウントがロックされるまでに新しいパスワードを設定するようにします。このポリシーはパスワードがリセットされたユーザーに対しても、同様に機能するよう設計されています。
このタスクの実行には、DSCCを使用できません。次の手順の説明に従って、コマンドラインを使用してください。
たとえば、有効期間を3日間(259,200秒)に設定するパスワード・ポリシー・エントリを追加します。
注意: グローバル・パスワード・ポリシーでは、pwdMustChange(5dsat)をTRUEに設定する必要があります。つまり、ユーザーは最初のバインド時にパスワードを変更する必要があります。
$ dsconf set-server-prop -p port-no pwd-must-change-enabled:true
$ cat firstLogin.ldif dn: cn=First Login,dc=example,dc=com objectClass: top objectClass: LDAPsubentry objectClass: pwdPolicy objectClass: sunPwdPolicy cn: First Login passwordStorageScheme: SSHA pwdAttribute: userPassword pwdInHistory: 0 pwdExpireWarning: 86400 pwdLockout: TRUE pwdMinLength: 6 pwdMaxFailure: 3 pwdMaxAge: 259200 pwdFailureCountInterval: 600 pwdAllowUserChange: TRUE pwdLockoutDuration: 3600 pwdMinAge: 0 pwdCheckQuality: 2 pwdMustChange: TRUE $ ldapmodify -a -D cn=admin,cn=Administrators,cn=config -w - -f firstLogin.ldif Enter bind password: adding new entry cn=First Login,dc=example,dc=com
このロールの作成では、新しく作成されたアカウントを既存のアカウントと区別するなんらかの方法を設定します。
ユーザーのパスワードがパスワード管理者などの他のユーザーによって変更されると、pwdResetはTRUEに設定されます。
たとえば、次のコマンドにより、パスワードがリセットされたアカウントのロールが作成されます。
$ cat newRole.ldif dn: cn=First Login Role,ou=people,dc=example,dc=com objectclass: top objectclass: LDAPsubentry objectclass: nsRoleDefinition objectclass: nsComplexRoleDefinition objectclass: nsFilteredRoleDefinition cn: First Login Role nsRoleFilter: (pwdReset=TRUE) description: Role to assign password policy for new and reset accounts $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f newRole.ldif Enter bind password: adding new entry cn=First Login Role,ou=people,dc=example,dc=com
$ cat newCoS.ldif dn: cn=First Login Template,dc=example,dc=com objectClass: top objectClass: nsContainer dn: cn="cn=First Login Role,ou=people,dc=example,dc=com", cn=First Login Template,dc=example,dc=com objectClass: top objectClass: extensibleObject objectClass: LDAPSubEntry objectClass: CoSTemplate cosPriority: 1 pwdPolicySubentry: cn=First Login,dc=example,dc=com dn: cn=First Login CoS,dc=example,dc=com objectClass: top objectClass: LDAPSubEntry objectClass: CoSSuperDefinition objectClass: CoSClassicDefinition cosTemplateDN: cn=First Login Template,dc=example,dc=com cosSpecifier: nsRole cosAttribute: pwdPolicySubentry operational $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -f newCoS.ldif Enter bind password: adding new entry cn=First Login Template,dc=example,dc=com adding new entry cn="cn=First Login Role,ou=people,dc=example,dc=com", cn=First Login Template,dc=example,dc=com adding new entry cn=First Login CoS,dc=example,dc=com
例7-1 パスワード・ポリシー割当てのチェック
追加したロールに適合する新しいユーザーを追加します。そのユーザーの追加により、新しいユーザーが新しいパスワード・ポリシーの対象となり、既存ユーザーは対象とならないことを確認します。
$ cat quentin.ldif dn: uid=qcubbins,ou=People,dc=example,dc=com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson uid: qcubbins givenName: Quentin sn: Cubbins cn: Quentin Cubbins mail: quentin.cubbins@example.com userPassword: ch4ngeM3! description: New account $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f quentin.ldif Enter bind password: adding new entry uid=qcubbins,ou=People,dc=example,dc=com $ ldapsearch -D uid=kvaughan,ou=people,dc=example,dc=com -w - \ -b dc=example,dc=com uid=qcubbins nsrole pwdPolicySubentry Enter bind password: version: 1 dn: uid=qcubbins,ou=People,dc=example,dc=com nsrole: cn=first login role,ou=people,dc=example,dc=com pwdPolicySubentry: cn=First Login,dc=example,dc=com $ ldapsearch -b dc=example,dc=com uid=bjensen nsrole pwdPolicySubentry version: 1 dn: uid=bjensen, ou=People, dc=example,dc=com
Barbara Jensenの既存アカウントはデフォルト・パスワード・ポリシーにより制御されます。一方で、、Quentin Cubbinsの新しいアカウントは定義したパスワード・ポリシーにより制御されます。
次のコマンドを入力して、適用されたパスワード・ポリシーの設定をチェックします。
# ldapsearch -D "cn=directory manager" -w - -b "cn=Password Policy,cn=config" -s base \ '(&(objectClass=ldapsubentry)(cn=Password Policy))' version: 1 dn: cn=Password Policy,cn=config objectClass: top objectClass: ldapsubentry objectClass: pwdPolicy objectClass: sunPwdPolicy objectClass: passwordPolicy cn: Password Policy pwdAttribute: userPassword passwordStorageScheme: SSHA passwordChange: on pwdAllowUserChange: TRUE pwdSafeModify: FALSE passwordRootdnMayBypassModsChecks: off passwordNonRootMayResetUserpwd: on passwordInHistory: 0 pwdInHistory: 0 passwordMinAge: 0 pwdMinAge: 0 passwordCheckSyntax: off pwdCheckQuality: 0 passwordMinLength: 6 pwdMinLength: 6 passwordMustChange: on pwdMustChange: TRUE passwordExp: off passwordMaxAge: 0 pwdMaxAge: 0 passwordWarning: 86400 pwdExpireWarning: 86400 passwordExpireWithoutWarning: on pwdGraceAuthNLimit: 0 pwdKeepLastAuthTime: FALSE passwordLockout: off pwdLockout: FALSE passwordMaxFailure: 3 pwdMaxFailure: 3 passwordResetFailureCount: 600 pwdFailureCountInterval: 600 pwdIsLockoutPrioritized: TRUE passwordUnlock: on passwordLockoutDuration: 3600 pwdLockoutDuration: 3600