Red Hat Training

A Red Hat training course is available for Red Hat Directory Server

9.6. パスワードポリシーの設計

パスワードポリシーとは、特定のシステムでパスワードがどのように使用されるかを管理する一連のルールのことです。Directory Server のパスワードポリシーは、期間、長さ、ユーザーがパスワードを再利用できるかどうかなど、パスワードが有効であると見なされるために満たす必要のある基準を指定します。
以下のセクションでは、健全なパスワードポリシーを設計するための詳細情報を提供します。

9.6.1. パスワードポリシーの仕組み

Directory Server は、きめ細かいパスワードポリシーをサポートします。つまり、パスワードポリシーをサブツリーおよびユーザーレベルで定義することができます。これにより、ディレクトリーツリー内の任意の時点でパスワードポリシーを定義する柔軟性が可能になります。
  • ディレクトリー全体。
    このようなポリシーは グローバル パスワードポリシーと呼ばれます。ポリシーは設定および有効化されると、ディレクトリー内のすべてのユーザーに適用されます。ただし、Directory Manager エントリーと、ローカルのパスワードポリシーが有効になっているユーザーエントリーは適用から除外されます。
    これにより、すべてのディレクトリユーザーに共通の単一のパスワードポリシーを定義することができます。
  • ディレクトリーの特定のサブツリー。
    このようなポリシーは サブツリーレベル または ローカル パスワードポリシーと呼ばれます。設定および有効化されると、ポリシーは指定されたサブツリー配下のすべてのユーザーに適用されます。
    これは、すべてのホストされた会社に単一のポリシーを適用するのではなく、ホストされた会社ごとに異なるパスワードポリシーをサポートするホスティング環境に適しています。
  • ディレクトリーの特定のユーザー。
    このようなポリシーは ユーザーレベル または ローカル パスワードポリシーと呼ばれます。設定および有効化されると、ポリシーは指定されたユーザーのみに適用されます。
    これにより、ディレクトリーユーザーごとに異なるパスワードポリシーを定義できます。たとえば、一部のユーザーがパスワードを毎日変更し、一部のユーザーが毎月パスワードを変更し、他のすべてのユーザーが 6 か月ごとにパスワードを変更するように指定します。
デフォルトでは、Directory Server にはグローバルパスワードポリシーに関連するエントリーおよび属性が含まれます。つまり、同じポリシーがすべてのユーザーに適用されます。サブツリーまたはユーザーにパスワードポリシーを設定するには、サブツリーまたはユーザーレベルでエントリーを追加し、cn=config エントリーの nsslapd-pwpolicy-local 属性を有効にします。この属性はスイッチとして機能し、粒度の細かいパスワードポリシーをオンおよびオフに切り替えます。
パスワードポリシーの変更は、Directory Server Console または ns-newpwpolicy.pl スクリプトを使用して行うことができます。『『Configuration, Command, and File Reference』』には、スクリプトのコマンドライン構文、『『Administration Guide』』には、パスワードポリシーの設定手順が記載されています。
パスワードポリシーエントリーがディレクトリーに追加されると、Directory Server が強制するパスワードポリシーのタイプ (グローバルまたはローカル) が決定されます。
ユーザーがディレクトリーにバインドしようとすると、Directory Server は、ローカルポリシーが定義され、ユーザーのエントリーに対して有効になっているかどうかを判断します。
  • 詳細なパスワードポリシーが有効になっているかどうかを判断するため、サーバーは cn=config エントリーの nsslapd-pwpolicy-local 属性に割り当てられた値 (on または off) をチェックします。値が off の場合、サーバーはサブツリーおよびユーザーレベルで定義されるポリシーを無視し、グローバルパスワードポリシーを適用します。
  • ローカルポリシーがサブツリーまたはユーザーに定義されているかどうかを判断するため、サーバーは対応するユーザーエントリーの pwdPolicysubentry 属性をチェックします。属性が存在する場合は、サーバーは、ユーザーに設定されたローカルパスワードポリシーを適用します。属性が存在しない場合、サーバーはエラーメッセージをログに記録し、グローバルパスワードポリシーを強制します。
その後、サーバーはユーザーが指定したパスワードを、ユーザーのディレクトリーエントリーで指定された値と比較して、それらが一致することを確認します。サーバーは、パスワードポリシーで定義されたルールも使用して、ユーザーがディレクトリーにバインドできるようになる前にパスワードが有効であることを確認します。

図9.3 パスワードポリシーの確認プロセス

パスワードポリシーの確認プロセス
バインド要求の他に、userPassword 属性 (以下のセクションを参照) がリクエストに存在する場合、パスワードポリシーのチェックは追加および変更操作中にも行われます。
userPassword の値を変更すると、以下の 2 つのパスワードポリシー設定がチェックされます。
  • パスワードの最低期間ポリシーがアクティブになります。最低期間要件が満たされないと、サーバーは constraintViolation エラーを返します。パスワード更新操作は失敗します。
  • パスワード履歴ポリシーがアクティブになります。userPassword の新しい値がパスワード履歴にある場合、または現在のパスワードと同じ場合は、サーバーは constraintViolation エラーを返します。パスワード更新操作は失敗します。
userPassword の値を追加および変更すると、パスワードポリシーでパスワード構文がチェックされます。
  • パスワードの最小長ポリシーがアクティブになります。userPassword の新しい値が必要な最小長未満の場合、サーバーは constraintViolation エラーを返します。パスワード更新操作は失敗します。
  • パスワード構文の確認ポリシーがアクティブになります。userPassword の新しい値がエントリーの別の属性と同じ場合は、サーバーは constraintViolation エラーを返します。パスワード更新操作は失敗します。