PowerShellを使用したActive Directoryのパスワードポリシー管理

3月 12, 2019 セキュリティとコンプライアンス, MOVEit

Windows Server 2008 より前のバージョンでは、Active Directory パスワードポリシーはデフォルトのドメイングループ・ポリシーで行われており、Active Directoryドメイン全体に対して1つのポリシーしかありませんでした。このような制限があると、異なるユーザーには異なるポリシーを適用したいといった、ごく一般的な要求に応えることができません。

Windows Server 2008 には、この問題を解消しようと、ポリシーを詳細に設定できる機能が追加されました。これらのポリシーは、グループポリシーの外に作成され、DN、GUID(Globally Unique Identifier)、または名前に対して設定できます。これらは Active Directory 管理センターで、または PowerShell で ActiveDirectory モジュールを使用して管理されます。

PowerShell で詳細ポリシーを作成

Active Directory の詳細ポリシーを理解するためには、まずポリシーとサブジェクトという2つの概念を理解する必要があります。ポリシーは設定しようとしているものであり、自明ですが、サブジェクトは少し奇妙な感じがする用法かもしれません。サブジェクトとは、ポリシーを適用したいユーザーまたはグループを意味します。つまり、ポリシーを作成するステップと、ポリシーをサブジェクト(ユーザーまたはグループ)に適用するステップの2段階があります。

詳細ポリシーを作成するには、New-ADFineGrainedPasswordPolicy を使用します。ここでは、’12 char’ というポリシーを作成します。これは、パスワードの長さは最低でも12文字必要というポリシーで、優先度を500に設定します。

C:\> New-ADFineGrainedPasswordPolicy -MinPasswordLength 12 -Description '12 char' -DisplayName '12 char length' -Name '12 char' -Precedence 500

次に、Add-ADFineGrainedPasswordPolicySubject を使用してこのポリシーをサブジェクトに適用します。アカウントの識別名 ‘testdan’ を使用し、Get-ADUser コマンドレットでそれを取得します。

 C:\> Add-ADFineGrainedPasswordPolicySubject -Identity '12 char' -Subjects (Get-ADUser testdan | select distinguishedname)

PowerShell で詳細ポリシーを表示

作成された Active Directory の詳細ポリシーを表示するには、Get-ADFineGrainedPasswordPolicy コマンドレットを使用します。ポリシー検索のためのパラメータは、-Identity パラメータで、ポリシーの名前を渡せば内容を表示できます。

C:\> Get-ADFineGrainedPasswordPolicy -Identity '12 char'

 

AppliesTo                   : {CN=testdan,OU=Clients,DC=domain,DC=com}

ComplexityEnabled           : True

DistinguishedName           : CN=12 char,CN=Password Settings Container,CN=System,DC=domain,DC=com

LockoutDuration             : 00:30:00

LockoutObservationWindow    : 00:30:00

LockoutThreshold            : 0

MaxPasswordAge              : 42.00:00:00

MinPasswordAge              : 1.00:00:00

MinPasswordLength           : 12

Name                        : 12 char

ObjectClass                 : msDS-PasswordSettings

ObjectGUID                  : ae32d5e5-ad80-4dbf-bffb-dd92305159b1

PasswordHistoryCount        : 24

Precedence                  : 500

ReversibleEncryptionEnabled : True

PowerShell で詳細ポリシーを変更、または削除

既存のポリシーを変更するには、Set-ADFineGrainedPasswordPolicy コマンドレットを使用します。ポリシー内の任意の設定を変更できます。ここでは、優先度を1に変更し、ポリシーを誤って削除しないよう保護するフラグを $True に設定します。

C:\> Set-ADFineGrainedPasswordPolicy -Identity '12 char' -Precedence 1 -ProtectedFromAccidentalDeletion:$True

最後に、作成したポリシーを削除するには、Remove-ADFineGrainedPasswordPolicy コマンドレットを使用します。

C:\> Remove-ADFineGrainedPasswordPolicy -Identity '12 char'

まとめ

Active Directory の詳細ポリシー機能は、きめ細かい、ニーズに即したパスワードポリシーの設定を可能にします。たとえば、機密データを使用するグループのアカウントのポリシーをより厳格にし、通常のエンドユーザーにはもう少し緩やかなポリシーを適用するといったことができます。PowerShell を使用すると、ここで説明したような一連の ActiveDirectory モジュールのコマンドレットを利用して、簡単にポリシーを管理できます。

Dan Franciscus

Dan Franciscus is a systems engineer and VMware Certified Professional (VCP) specializing in VMware, PowerShell, and other Microsoft-based technologies. You can reach Dan at his blog (http://www.winsysblog.com/) or Twitter at @dan_franciscus.