
悩めるパスワードのオキテ - Fine-Grained Password Policies
パスワードポリシーという言葉を聞いたことがないという人はもはやこの情報社会でいらっしゃらないのではないかと思います

パスワードポリシーでは言わずもがなパスワードの文字列の最小長 (〇文字以上とかゆーやつ) やパスワードの変更禁止期間、同じパスワードを繰り返し使ってはいけない期間などを設定できます
Active Directory ドメインに適用するポリシーは GPO (グループポリシーオブジェクト) で設定します
GPO は OU に適用するため、OU を複数作成してそれぞれに GPO を適用してきめ細かいポリシー制御を行います
例えば管理職のユーザーには管理職向けのポリシー 人事部のユーザーには人事部の社員に必要なポリシーが適用できるわけです
パスワードポリシー そしてアカウントロックポリシーはドメインでいっこしか持てません
ドメイン内で唯我独尊です
つまり管理職のヒトも人事部のヒトも同じパスワードポリシーとなってしまう… というか用途ごとのパスワードポリシーの使い分けができないわけですよ はははははは
だけども それでは困ることがあるわけです
一般職員と会社役員で また 部署によってパスワードポリシー分けときたいとかあります

そこで登場したのが Fine-Grained Password Policies -- PSO です
PSO はセキュリティグループまたはユーザーにパスワードポリシーとアカウントロックポリシーを適用することで複数のポリシーの運用ができます
では PSO を AWS Managed Microsoft AD で見て行きたいと思います

AWS Managed Microsoft AD ではそもそも GPO のパスワードポリシーはいじれません
AWS Managed Microsoft AD を作成して湧いてくる管理者 admin では Default Domain Policy の設定ができないのです

こげんにグレーアウトされる Default Domain Policy
ちなみに AWS Managed Microsoft AD で設定されているパスワードポリシーとアカウントロックポリシーはこんなです

PSO では複数のパスワードポリシーを作成できます
PSO には優先順位が設定されます
同じユーザーがグループ A とグループ B に所属した場合 優先順位が小さい PSO が適用されるわけです
とゆーわけで セキュリティグループを 2 つ作成し それぞれ異なる PSO を適用し どちらにも所属するユーザーがどのパスワードポリシーを適用されるか見てみましょう
以下を作成します
グループ: MANAGERS / HR
ユーザー: Hannibal じゃなかった John Smith
ではまずグループを作成します
PSO はグローバルのセキュリティグループにのみ適用可能です
グローバルのセキュリティグループを指定して HR グループを作成します
> New-ADGroup -Name HR -GroupScope Global -GroupCategory Security -Path "OU=Users,OU=ad,DC=ad,DC=net"
できた♪
> Get-ADGroup -Identity HR
DistinguishedName : CN=HR,OU=Users,OU=ad,DC=ad,DC=net
GroupCategory : Security
GroupScope : Global
Name : HR
ObjectClass : group
ObjectGUID : *****************
SamAccountName : HR
SID : S-*****************
続いて MANAGERS グループを作成します
> New-ADGroup -Name MANAGERS -GroupScope Global -GroupCategory Security -Path "OU=Users,OU=ad,DC=ad,DC=net"
できた♪
> Get-ADGroup -Identity MANAGERS
DistinguishedName : CN=MANAGERS,OU=Users,OU=ad,DC=ad,DC=net
GroupCategory : Security
GroupScope : Global
Name : MANAGERS
ObjectClass : group
ObjectGUID : *****************
SamAccountName : MANAGERS
SID : S-*****
では ユーザー Hannibal じゃなかった John Smith を作ります
(わかる方いらっしゃいますでしょうか)
> New-ADUser -Name jsmith `
-UserPrincipalName jsmith@ad.net `
-DisplayName jsmith `
-Path "OU=Users,OU=ad,DC=ad,DC=net" `
-AccountPassword (ConvertTo-SecureString '***************' `
-AsPlainText -Force) -Enabled $true
作成したユーザーを MANAGERS / HR のグループに参加させてみます
> Add-ADGroupMember -Identity HR -Members jsmith
> Add-ADGroupMember -Identity MANAGERS -Members jsmith
グループに追加 OK ですね
> Get-ADUser -Identity jsmith -Properties MemberOf
DistinguishedName : CN=jsmith,OU=Users,OU=ad,DC=ad,DC=net
Enabled : True
GivenName :
MemberOf : {CN=MANAGERS,OU=Users,OU=ad,DC=ad,DC=net, CN=HR,OU=Users,OU=ad,DC=ad,DC=net}
Name : jsmith
ObjectClass : user
ObjectGUID : *****************
SamAccountName : jsmith
SID : S-****
Surname :
UserPrincipalName : jsmith@ad.net
では作成したグループに PSO を適用します
ところで AWS Managed Microsoft AD では PSO の新規作成ができません

5 つばっかり事前にできているので この人たちを編集して使うわけです

そして AWS Managed Microsoft AD でこのヒトたちをいじるには AWS Delegated Fine Grained Password Policy Administrators というグループの権限が必要です

PSO を設定するユーザーをこのグループに追加してあげましょう
このグループは AWS Delegated Groups という OU にあります
では PSO を設定します
設定は Active Directory Administrative Center から行います
[Server Manager] - [Tools] から起動します

[Tree View] (ツリービュー) に切り替え、ツリーから System\Password Settings Container に移動します

事前定義された PSO がいます

では CustomerPSO-04 の Enforce minimum password length を 12 にしちゃいます
CustomerPSO-04 を右クリックして [Properties] を選択します

[Enforce minimum password length] に 12 と入力します

セキュリティグループ HR にこのポリシーを適用しましょう
[Directly Applies To] で [Add] をクリックし 表示されるダイアログで適用対象を設定します

つづいて CustomerPSO-05 をセキュリティグループ MANAGERS に適用します


Hannibal はどちらのグループにも所属します ← もう訂正しない
どちらのパスワードポリシーが適用されるでしょうか
パスワードポリシーが適用されていることを確認するにはコマンドレット Get-ADUserResultantPasswordPolicy を実行します。

> Get-ADUserResultantPasswordPolicy -Identity jsmith
AppliesTo : {CN=HR,OU=Users,OU=ad,DC=ad,DC=net}
ComplexityEnabled : True
DistinguishedName : CN=CustomerPSO-04,CN=Password Settings Container,CN=System,DC=ad,DC=net
LockoutDuration : 00:00:00
LockoutObservationWindow : 00:00:00
LockoutThreshold : 0
MaxPasswordAge : 42.00:00:00
MinPasswordAge : 1.00:00:00
MinPasswordLength : 12
Name : CustomerPSO-04
ObjectClass : msDS-PasswordSettings
ObjectGUID : *****************
PasswordHistoryCount : 24
Precedence : 40
ReversibleEncryptionEnabled : False
CustomerPSO-04 の方が適用されていますね!
(MinPasswordLength も 12 です)
このようにパスワードポリシーやアカウントロックポリシーをドメインで複数運用したい また AWS Managed Microsoft AD では違うポリシーを使いたい! というときは PSO をいじってください
