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

投稿者: Dan Franciscus 投稿日: 2019年3月13

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.
著者が作成したブログ

関連タグ

Prefooter Dots
Subscribe Icon

Latest Stories in Your Inbox

Subscribe to get all the news, info and tutorials you need to build better business apps and sites

The specified form no longer exists or is currently unpublished.