セキュリティ ウォッチWindows ドメインのパスワード ポリシー

Derek Melber

Windows ドメインの管理者であれば、ドメイン ユーザー アカウントのパスワード ポリシーの制限について十二分に知っていると思います。しかし、Windows Server 2008 の到来によって、そういった制限のうちのいくつかはなくなるでしょう。この記事では、複数のパスワード ポリシーを実装できないという問題が、この新しい OS によってどのように解決されるかについて説明します。

現在の Windows® ドメインのバージョン (Windows NT®、Windows 2000 Active Directory®、および Windows Server® 2003 Active Directory) では、1 つのドメインに適用できるパスワード ポリシーは 1 つに制限されます。実際には、パスワード ポリシーだけでなく、アカウント ポリシーに該当する、より広範囲の設定が制限されます。図 1 は、これらのポリシーと設定を示しています。

Figure 1 アカウント ポリシー

パスワード ポリシー
パスワード履歴を記録する
パスワードの有効期間
パスワードの変更禁止期間
パスワードの長さ
パスワードは、複雑さの要件を満たす必要がある
暗号化を元に戻せる状態でパスワードを保存する
アカウント ロックアウトのポリシー
ロックアウト期間
アカウントのロックアウトのしきい値
ロックアウト カウンタのリセット
Kerberos ポリシー
ユーザー ログオンの制限を強制する
サービス チケットの最長有効期間
チケットの最長有効期間
ユーザー チケットを更新できる最長有効期間
コンピュータの時計の同期の最長トレランス
 

既定では、これらのポリシー設定は、ドメインに関連付けられたすべてのドメイン ユーザー アカウントに適用されます。これは、グループ ポリシーが Active Directory 構造の下の階層へと継承されていくためです。これらのポリシーがドメイン ユーザー アカウントとローカル ユーザー アカウントに与える影響を理解するには、これらのポリシーが設定される場所と、グループ ポリシーの継承がさまざまな種類のユーザー アカウントに与える影響を理解することが重要です (Kerberos のポリシー設定はドメイン ユーザー アカウントのみに適用されることに注意してください。これは、ドメイン ユーザー アカウントのみが認証に Kerberos を使用するためです。ローカル ユーザー アカウントは、認証に NTLMv2、NTLM、または LM を使用します)。

アカウント ポリシーを設定する

Active Directory 内では、グループ ポリシーによってドメイン全体のアカウント ポリシーが設定および制御されます。ポリシーは、Active Directory ドメインを最初にインストールしたときに、Active Directory のドメイン ノードにリンクされた既定のグループ ポリシー オブジェクト (GPO) によって適用されます。既定のドメイン ポリシーという名前のこの GPO には、アカウント ポリシーの 3 つのセクションに含まれているすべての構成の既定値が格納されています。図 2 は、Windows Server 2003 ドメインで適用されるパスワード ポリシーのすべての項目の初期設定を示しています。

図 2 Windows Server 2003 ドメインの既定のパスワード ポリシー

図 2** Windows Server 2003 ドメインの既定のパスワード ポリシー **(画像を拡大するには、ここをクリックします)

この GPO の設定により、すべてのドメイン ユーザー アカウントと、すべてのドメイン コンピュータのアカウント ポリシーが制御されます。すべてのドメイン コンピュータ (デスクトップとサーバー) には、ローカル セキュリティ アカウント マネージャ (SAM) があります。既定の GPO の設定によって制御されるのは、この SAM です。もちろん、ローカル SAM には各コンピュータのローカル ユーザー アカウントが格納されています。

GPO が Active Directory 構造の下の階層に正しく継承されていくことで、既定のドメイン ポリシーの設定がすべてのドメイン コンピュータに適用されます。この GPO はドメイン ノードにリンクされているため、ドメイン内のすべてのコンピュータ アカウントにこの GPO の設定が適用されます。

現在のパスワード ポリシーでは不可能な操作

現在の Active Directory (Windows Server 2003) の実装でのパスワードの制御に関しては、さまざまな誤解があります。しかし、この実装は何年もかけて綿密にテストされたものであり、そのような誤解が正しいことを示す証拠もありません。ポリシーが設計以上の動作をしないことは明らかであり、またそうでなければなりません。

とはいえ、多くの管理者は同じドメインでユーザーに複数のパスワード ポリシーを適用することができると思っています。GPO を作成して、組織単位 (OU) にリンクさせることができると考えているのです。つまり、ユーザー アカウントをその OU に移動すれば、GPO の設定がそれらのオブジェクトに適用されるという考え方です。彼らは GPO 内のアカウント ポリシーを変更 (たとえば、最大文字数を 14 文字に設定) し、より高度なセキュリティで保護されたパスワード ポリシーを作成します。しかし、いくつかの理由により、この構成では目的の結果を得ることはできません。まず、パスワード ポリシーの設定はユーザー ベースのポリシーではなくコンピュータ ベースのポリシーです。このことを踏まえれば、これらの設定がユーザー アカウントに適用されないことは明らかです。2 つ目に、ドメインにリンクされた GPO 内の設定を変更しなければ、ドメイン ユーザー アカウントに適用するアカウント ポリシーの設定を変更することはできません。アカウント ポリシーの設定を変更するように構成された GPO が OU にリンクされた場合、その OU またはサブ OU 内のコンピュータのローカル SAM が変更されます。

2 つ目の誤解は、ルート ドメイン (Active Directory フォレストの最初のドメイン) に適用されたアカウント ポリシーの設定が、フォレストの子ドメインまで伝達または継承されるというものです。これも事実ではなく、アカウント ポリシーの設定をこのように動作させることはできません。GPO がリンクされているドメインがルート ドメインだとしても、ドメインとドメイン内の OU にリンクされている GPO の設定は、別のドメインのオブジェクトには適用されません。GPO の設定を異なるドメインのオブジェクトに適用する唯一の方法は、GPO を Active Directory サイトにリンクすることです。

パスワードに関する新機能

先ほど説明したように、Windows の現在のバージョンでは、ユーザー アカウントのパスワードが非常に単純な方法で処理されています。たとえば、すべてのドメイン アカウントにパスワードに関するルールを 1 種類だけ適用することや、Active Directory のドメイン ノードにリンクされたグループ ポリシー オブジェクトを使用してアカウント ポリシーを管理することなどが当てはまります。Windows Server 2008 では、これらの方法はまったく使用されません。

Windows Server 2008 および付属の Active Directory インフラストラクチャでは、異なる方法が使用されます。アカウント ポリシーを GPO 内で管理する (つまり、すべてのドメイン ユーザー アカウントに設定できるポリシーが 1 つだけである) のではなく、Active Directory のより深い階層で管理します。さらに、アカウント ポリシーはコンピュータ アカウントに基づいて適用されなくなります。個々のユーザーまたはユーザー グループを対象にして、パスワードの制限を制御できるようになったのです。アカウント ポリシーは、長年の間コンピュータ アカウントに基づいて管理されてきたため、Windows 管理者にとってこれはまったく新しい考え方です。

Windows Server 2008 のアカウント ポリシー

Windows Server 2008 では、アカウント ポリシーの設定に既定のドメイン ポリシーを使用しません。もっと言えば、ドメイン ユーザー アカウントのアカウント ポリシーの作成に GPO を使用しません。Windows Server 2008 では、Active Directory データベースに直接変更を加えます。具体的には、ADSIEdit などのツールを使用して、Active Directory オブジェクトとそれに関連する属性を変更します。

このように変更された理由は、同じドメイン内で複数のパスワードを保持するという機能にグループ ポリシーの設計が対応していないためです。Windows Server 2008 では、1 つのドメイン内で複数のパスワードを実装できるという素晴らしい機能が提供されますが、まだまだ皆さんに気に入っていただけるほど使い勝手はよくありません。しかし、いずれ設定を構成するインターフェイスへのアクセスは容易になっていくでしょう。今のところは、ヘルメットをかぶって Active Directory データベースに侵入し、必要な変更をシステムに加える必要があります。

他の方法でアカウント ポリシーを変更したい場合は、ADSIEdit を使用する必要はありません。Active Directory データベースに変更を加えることができる他の LDAP 編集ツールを使用したり、スクリプトを使用したりすることもできます。Windows Server 2008 では、パスワード ポリシーを実装する際に、今までとはまったく異なる方法を使用する必要があります。また、この新機能の導入により、どのユーザーとグループにどのパスワードの設定を適用するかを考慮することが必要になりました。

パスワードの長さだけでなく、変更禁止期間と有効期間、履歴など、パスワード ポリシーの設定に付随するその他の制限についても考慮する必要があります。他の考慮事項には、ユーザーのロックアウト ポリシーや Kerberos に関する設定の制御方法などがあります。現在のアカウント ポリシーの設定と Windows Server 2008 の Active Directory データベースに格納されるアカウント ポリシーの設定は一対一で対応していますが、ポリシーの各設定は Active Directory オブジェクトと Active Directory 属性になるため、名前が変わります。

新しいパスワードの設定を実装するには、msDS-PasswordSettings という名前のパスワード設定オブジェクト (PSO) を [Password Settings] (パスワード設定) コンテナ (LDAP パスは "cn=Password Settings,cn=System,dc=domainname,dc=com") の下に作成する必要があります。作業しているドメインのドメイン機能レベルを Windows Server 2008 に設定する必要があることに注意してください。この新しいオブジェクトのいくつかの属性 (図 3 参照) に情報を指定します。

Figure 3 Active Directory のパスワード属性

Active Directory 属性の名前 属性の説明
msDS-PasswordSettingsPrecedence 異なるパスワード ポリシーが適用された複数のグループにユーザーが属している場合に優先される設定を指定します。
msDS-PasswordReversibleEncryptionEnabled 暗号化の復元が有効か無効かを切り替えます。
msDS-PasswordHistoryLength 他の一意のパスワードに何回変更されたらそのパスワードを再利用できるかを指定します。
msDS-PasswordComplexityEnabled 指定された文字数と文字の種類をパスワードに使用することを要求します。
msDS-MinimumPasswordLength パスワードの最短の長さを指定します。
msDS-MinimumPasswordAge パスワードを変更する前に、ユーザーがそのパスワードを使用しなくてはならない期間を指定します。
msDS-MaximumPasswordAge パスワードの変更を要求される前に、ユーザーがそのパスワードを使用できる期間を指定します。
msDS-LockoutThreshold ユーザー アカウントがロックアウトされるまでに誤ったパスワードを入力できる回数を指定します。
msDS-LockoutObservationWindow 無効なパスワード カウンタがリセットされるまでの時間を指定します。
msDS-LockoutDuration 誤ったパスワードの入力回数がしきい値を超えた場合にアカウントがロックアウトされる期間を指定します。
   

ご覧のとおり、アカウント ポリシーの設定に関連するすべてのグループ ポリシー設定に対応する属性が用意されています。優先順位の設定があることにも注意してください。この設定は、同じドメインに複数のパスワードを実装するためには不可欠です。理由は、複数のパスワードを実装すると、必ず競合が発生し、これを処理するためのメカニズムが必要になるためです。

アカウント ポリシーの設定の適用先を決定する

作成したオブジェクトごとに属性の値をすべて指定して、各ユーザーに適用するアカウント ポリシーを作成する必要があります。新しい属性の 1 つである msDS-PSOAppliesTo には、一連のポリシー設定を適用するオブジェクトを指定します。これは、特定の設定を特定のユーザーに適用できるすばらしい属性です。この属性の値には、ユーザーまたはグループのどちらを指定することもできますが、アクセス制御リストを作成する場合と同様に、ユーザーではなくグループを指定することをお勧めします。これは、グループの方が安定性が高く、確認しやすく、一般的にずっと扱いやすいためです。

立ち上がって喝采を送りましょう

長年にわたって、同じ Active Directory ドメイン内で複数のパスワードを使用できるようになることが望まれてきましたが、それが今実現されました。パスワードに関しては、ドメイン全体のすべてのユーザーに同じレベルのセキュリティを適用する必要はなくなります。たとえば、通常のユーザーには 8 文字のパスワードを割り当て、(管理者特権を持つ) IT プロフェッショナルには、より複雑な 14 文字のパスワードを割り当てることができます。

Active Directory データベースを編集することによってアカウント ポリシーの設定を構成または変更する作業に慣れるには、しばらく時間がかかるでしょう。しかし幸運にも、新しい設定は、皆さんが既に使い慣れている設定に似ています。Windows Server 2008 を手に入れたらすぐにこの新しい設定を探してみてください。これらの設定は、最初の構成を行う際に見つけることができるはずです。

Derek Melber は、MCSE、CISM、および MVP の資格を持つ独立コンサルタントであり、トレーナーでもあります。Active Directory、グループ ポリシー、セキュリティ、デスクトップ管理などに重点を置いた、マイクロソフト テクノロジの教育および普及活動を行っています。Derek は、『Microsoft Windows Group Policy Guide (Microsoft Press、2005)』など、IT に関連するいくつかの書籍の執筆にも携わっています。彼の連絡先は derekm@braincore.net (英語のみ) です。

© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; 許可なしに一部または全体を複製することは禁止されています.