きめ細かいパスワードポリシー(PSO)の実装~その4~


シャドーグループを使用する方法

はい、そろそろこのテーマもこれで終わりです。

そこで今回はシャドーグループを使用したPSOの使用方法のご紹介をします。

そもそも、シャドーグループとはなんなのか?から説明が必要ですね。

PSOを使って、あるOU内の全ユーザーに対して特に厳しいパスワードポリシーを適用したい・・・

というようなニーズがあった場合にどのように対応するのか?

PSOはユーザーとグローバルグループには割り当てられるがOUには割り当てられません。

そこで、どうするか?シャドーグループの登場です。

シャドーグループというのは、そういう特別なオブジェクトがあるわけではなく、PSOを適用するためにOU に論理的にマップされるただのグローバルグループのことです

シャドーグループ

シャドーグループの使用例

SalesOUに複数のユーザーがいるとき、

  • UsersコンテナなどにSalesというような名前のグローバルグループを作り、
  • Sales用のPSOを、Salesグローバルグループに割り当てておく。
  • 下記のコマンドをタスクスケジューラで、たとえば20分間隔とかで実行する。

dsquery user ou=Sales,dc=contoso,dc=com | dsmod group “CN=Sales,CN=Users,DC=contoso,DC=com” –chmbr

そうすると、SalesOUに新規にユーザーをほうりこむだけで、自動的にSalesというグローバルグループのメンバーになってくれます。

(上記コマンドのポイントは、-addmbrではなく-chmbrを使っているところ。このオプションはリプレースなので、追加だけではなく、OUから抜けたユーザーをメンバーから削除するのにも対応できます)

これによって、あたかもSales用のPSOをSalesOUに割り当てたかのような感じで運用することができます。

・・・こんな使い方をするグローバルグループをシャドーグループと呼ぶようです。

きめ細かいパスワードポリシー(PSO)の実装~その3~


きめ細かいパスワードポリシー(PSO)の実装をすることによってドメイン配下の「Default Domain Policy」によって制御されていたパスワードポリシーがPSOの制御にシフトされます。

ではPSOによって制御されないユーザーおよびグループはどうなるのでしょうか?

そこでパスワードポリシーの優先順位をまとめます。

  1. PSOのユーザー
  2. PSOのグループ
  3. ドメイン配下のGPO(Default Domain Policy)

ユーザーに対するPSOが最も優先されることになります。ここで重要なことはユーザーに対して設定されるパスワードポリシーとして適用できるPSOは1つだけです。

適用するPSOが複数ある場合は優先順位の設定(msDS-PasswordSettingsPrecedence)の値が最も小さいものが優先されます。もし優先順位が同じ場合はGUIDが最も小さいPSOが適用されます。

このことから考えると、優先順位の計画はしっかりと行う必要性があります。そしてPSOの優先順位の値は10単位で設定するのが、わかりやすくていいかな?

ここであるシナリオを考えます。

ABC社のセキュリティポリシーではすべてのユーザーは8文字以上で複雑性の要件を満たすパスワードにしなくてはいけません。さらに管理者であるITadminsグループのメンバーは10文字以上のパスワードを要求することになっています。また組織全体の管理を行っているEnterprise Adminsグループのメンバーは一週間ごとにパスワード変更を行わなくてはいけません。

Don HallはITadminsのメンバーでもありEnterprise Adminsのメンバーでもあります。

この場合の実装方法としては

  • 一般ユーザーにはドメイン配下のGPOで対応する
  • ITadminsグループ用にPSOを作成する
  • Enterprise Adminsグループ用にPSOを作成して、ITadminsグループ用のPSOの優先順位の設定値よりも小さい値にするアプローチと、Don Hallユーザー用のPSOを作成する方法があります

では実際に各ユーザーにどのPSOが適用されているかの確認方法としては次の通り

  • 「Actice Directory ユーザーとコンピューター」より、「表示」の「拡張機能」が有効になっていることを確認してから、ユーザーの「プロパティ」>「属性エディタ」タブの[msDS-ResultantPSO]属性を確認する方法。[msDS-ResultantPSO]属性が見つからない場合は、「フィルタ」の「読み取り専用属性の表示」の「構成済み」オプションを有効にする必要があります。
    PSO4
  • コマンドによる確認
    dsget user <ユーザーの識別名> –effectivepso
    PSO5

これにより確認ができます。

[msDS-ResultantPSO]属性が「未構成」の場合はPSOが適用されていないことになりますので、この場合は通常「Default Domain Policy」に設定されているパスワードポリシーが適用されるということになります。

きめ細かいパスワードポリシー(PSO)の実装~その2~


ADSI Edit を使用して PSO を作成するには

  1. [スタート] ボタン、[ファイル名を指定して実行] の順にクリックし、「adsiedit.msc」と入力して、[OK] をクリックします。
  2. ADSI Edit スナップインで [ADSI Edit] を右クリックし、[接続先] をクリックします。
  3. [名前] で、PSO を作成するドメインの完全修飾ドメイン名 (FQDN) を入力し、[OK] をクリックします。
  4. ドメインをダブルクリックします。
  5. [DC=<ドメイン名>] をダブルクリックします。
  6. [CN=System] をダブルクリックします。
  7. [CN=Password Settings Container] をクリックします。
  8. 選択したドメインで作成された、すべての PSO オブジェクトが表示されます。
  9. [CN=Password Settings Container] を右クリックし、[新規] をクリックして [オブジェクト] をクリックします。
  10. [オブジェクトの作成] ダイアログ ボックスの [クラスを選択] で、[msDS-PasswordSettings] をクリックし、[次へ] をクリックします。
    PSO1 
  11. [] に、新しい PSO の名前を入力し、[次へ] をクリックします。
    PSO2
  12. ウィザードの手順を続行し、すべての mustHave 属性に適切な値を設定します。

ウィザードによる入力が完了すると右ペインにPSOオブジェクトが作成されるので、作成されたオブジェクトを選択して、右クリック>プロパティを選択します。そして「msDS-PSOAppliesTo」属性に対してPSO を適用するユーザーまたはグローバル セキュリティ グループの識別名を追加します。

PSO3

以上でPSOの設定が完了しました。

きめ細かいパスワードポリシー(PSO)の実装~その1~


PSO実装時の考慮点

  • PSO設定に専用ツールはないので、ADSIエディタまたはLDIFDEを使用する
  • PSOはユーザーまたはグローバルグループにのみ適用できる
  • ドメイン機能レベルがWindows Server 2008でなくてはいけない

(参考)細かい設定が可能なパスワードおよびアカウント ロックアウトのポリシー設定

あらかじめこれから作成するPSOの内容を決めておくことをお勧めします。決めておかなくてはならない項目は次の通り

PSOには既定のドメイン ポリシーで定義可能なすべての設定の属性が備わっています (Kerberos 設定は除く)。

この設定には、次のパスワード設定の属性があります。

  • パスワードの履歴を記録する (msDS-PasswordHistoryLength)
    0~1024
  • パスワードの有効期間 (msDS-MaximumPasswordAge)
    msDS-MinimumPasswordAge値~
    なし
  • パスワードの変更禁止期間 (msDS-MinimumPasswordAge)
    00:00:00:00(日:時:分:秒)
    なし
  • パスワードの長さ (msDS-MinimumPasswordLength)
    0~255
  • パスワードは、複雑さの要件を満たす必要がある (msDS-Password-ComplexityEnabled)
    FALSE/TRUE(推奨値:TRUE)
  • 暗号化を元に戻せる状態でパスワードを保存する (msDS-PasswordReversibleEncryptionEnabled)
    FALSE/TRUE(推奨値:FALSE)

これらの設定には、次のアカウント ロックアウト設定の属性も含まれます。

  • ロックアウト期間 (msDS-LockoutDuration)
    msDS-LockoutObservationWindow値~
    なし
  • アカウントのロックアウトのしきい値 (msDS-LockoutThreshold)
    アカウント ロックアウトのポリシーを無効にするには、msDS-LockoutThreshold 属性に値 0 を指定します
    0~65535
  • ロックアウト カウンタのリセット (msDS-LockoutObservationWindow)
    00:00:00:01~msDS-LockoutDuration値
    なし

2010/03/09 追記

*なし の項目は(なし)と入力する必要があります<半角のかっこ”(”と、日本語の”なし”と半角のかっこ”)”>ただし、インターフェイスは日本語入力ができないのでメモ帳で入力し、コピー&ペーストで張り付ける必要があります。

さらに、PSO には次の 2 つの新しい属性があります。

  • PSO リンク (msDS-PSOAppliesTo)
    ユーザー オブジェクトまたはグループ オブジェクトにリンクされる複数値属性です。
  • 優先順位 (msDS-PasswordSettingsPrecedence)
    ユーザーオブジェクト またはグループ オブジェクトに複数の PSO が適用されている場合に、競合を解決するために使用される整数値です。

msDS-PSOAppliesTo を除くすべての属性は、mustHave 属性です。つまり、各属性に値を指定する必要があります。異なる PSO の設定を結合することはできません。