Azure AD DS と Azure AD のアカウントロック ポリシーどちらが適用されるのか調べてみた。

#はじめに
Azure Active Directory Domain Services (以降 Azure AD DS と記載します) はオンプレミスの Active Directory サーバーを用意しなくても LDAP やグループ ポリシーなどを利用できる Azure の PaaS サービスです。

-参考情報
Azure Active Directory Domain Services
URL:https://azure.microsoft.com/ja-jp/services/active-directory-ds/#features

PaaS サービス自体は Microsoft が提供してくれるのでサーバーを管理する必要がなくなり、利用自体も Azure サブスクリプションを利用した従量課金制なので、サーバー運用の運用コストと費用面でのコストも抑えることができます。

ただし、すべてが Active Directory (AD DS) と同等の機能を利用できる訳ではなく、例えば Domain Admins や Enterprise Admins などのドメイン管理者権限が存在などの制約があります。

AD DS と Azure AD DS の比較は下記 Microsoft の公開情報にまとめられていますので参考にしてみてください。

-参考情報
Azure AD DS と自己管理型 AD DS
URL:https://docs.microsoft.com/ja-jp/azure/active-directory-domain-services/compare-identity-solutions#azure-ad-ds-and-self-managed-ad-ds

利用シーンとしては、オンプレミス AD で利用している環境を Azure クラウドに移行したい (もちろん Azure AD にもカスタム ドメインはあります) 場合や、アプリケーションの縛りがあり、 LDAP や Kerberos 認証を使う必要がある等の場合に Azure AD DS は有効な選択となります。

今回は Azure AD と Azure AD DS それぞれがもっている ***アカウント ロック ポリシー***が Azure AD DS を利用している環境においてどちらのポリシーが適用されるのかを動作確認してみました。

#やってみる
Microsoft の公開情報には下記のように書いてあります。

-参考情報
規定のパスワード ポリシー設定
URL:https://docs.microsoft.com/ja-jp/azure/active-directory-domain-services/password-policy#default-password-policy-settings

該当箇所抜粋


>ポリシーは、Azure AD DS マネージド ドメイン内のグループの関連付けを通じて配布されます。すべての変更が、次回のユーザーのサインイン時に適用されます。 ポリシーを変更しても、既にロックアウトされているユーザー アカウントのロックが解除されることはありません。

>パスワード ポリシーの動作は、適用されるユーザー アカウントの作成方法によって若干異なります。 Azure AD DS でユーザー アカウントを作成するには、次の 2 つの方法があります。

> 	• ユーザー アカウントは Azure AD から同期できます。 これには、Azure で直接作成されたクラウド専用のユーザー アカウントと、Azure AD Connect を使用してオンプレミスの AD DS 環境から同期されたハイブリッド ユーザー アカウントが含まれます。
	• ほぼすべての Azure AD DS のユーザー アカウントは、Azure AD からの同期プロセスを通じて作成されています。
	• ユーザー アカウントは Azure AD DS マネージド ドメインに手動で作成することができ、Azure AD には存在しません。
	
>すべてのユーザー アカウントは、その作成方法に関わらず、Azure AD DS の既定のパスワード ポリシーによって次のアカウント ロックアウト ポリシーが適用されています。

>	• アカウントのロックアウト期間: 30
	• 許可される失敗したログオン試行回数: 5
	• 失敗したログオン試行回数のカウントがリセットされるまでの時間: 30 分
	• パスワードの有効期間: 90 日間
	
>このような既定の設定の場合、2 分以内に、5 回の無効なパスワード使用が行われた場合、ユーザー アカウントは 30 分間ロック アウトされます。 アカウントは、自動的に、30 分後にロック解除されます。

上記でいうユーザー アカウントを作成する 2 つの方法とはどういうことがもう少し詳しく見てみましょう。
下記は Microsoft 以下 URL 内にある公開情報の絵を加工したものです。

(参照元 URL:https://docs.microsoft.com/ja-jp/azure/active-directory-domain-services/overview#azure-ad-ds-for-hybrid-organizations)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/f0526d6c-268e-f418-9df0-61bf0b88a666.png)

上記絵のとおり、青枠で囲ったアカウントと緑枠で囲ったアカウントの 2 つの種類が Azure AD DS 内には存在します。
検証した結果、アカウント自体は 2 種類のアカウントに対して適用されますが、認証の方法によって適用されるポリシーが異なりました。

Azure AD 、 Azure AD DS のアカウント ロック ポリシーのデフォルト値は以下のとおりです。

| 項目     |      Azure AD  |   Azure AD DS |
|:-----------------|:------------------|:------------------|
| ロックアウトの閾値       |              10 |        5        |
| ロックアウト期間 |            60 (秒)|       30 (分) |

Azure AD のロックアウトは ***スマート ロックアウト*** という機能が Azure AD 標準の機能で用意されています。
具体的には「Azure ポータル」→「Azure Active Directory」→「パスワード保護」の順にクリックすると、スマート ロックアウトの値を確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/baf4df4b-3243-9763-88f7-8c79503d5c7d.png)

では、実際にどのタイミングでアカウントがロックされるか確認します。
前提として Azure AD DS のマネージド ドメインに参加したサーバー上で Active Directory 管理ツールをインストールしていることとします。

-参考情報
Active Directory 管理ツールをインストールする
URL:https://docs.microsoft.com/ja-jp/azure/active-directory-domain-services/tutorial-create-management-vm#install-active-directory-administrative-tools

また、パスワードは Azure AD DS のマネージド ドメインを有した UPN を使い、意図的にパスワードを 2 分以内に「5」回間違え、「6」回目でロックアウトされることを確認します。

コンピューターに RDP 接続するために「test010@adds001.work」という UPN で 6 回目のログオンに失敗した際に、下記画面ショットのように想定通りロックアウトされました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/2725922e-d027-98ef-5b1c-de1de92a2af0.png)

一方 Office 365 などの Azure AD の認証エンド ポイントに対するサインイン は 「11」回目にロックアウトされました。

これは推測ですが、Azure AD が認証し、トークンを発行する場合については Azure AD の「スマート ロックアウト」のポリシーが適用される。
NTLM 及び Kerberos 認証の時は Azure AD DS のアカウントロック ポリシーが適用されると考えます。

※以下画面ショットは NTLM 認証 (RDP 接続) に失敗した際のイベント ビュアーのセキュリティ ログです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/6ba39a82-cd60-c1b2-ec67-c4773e5f69c3.png)

そして、よくよく Microsoft の公開情報みたら書いてありました。

>アカウント ロックアウトの設定はすべてのユーザーに適用されますが、マネージド ドメイン内でのみ有効になり、Azure AD 自体では有効になりません。

-参考情報
カスタムのパスワード ポリシーを作成する
URL:https://docs.microsoft.com/ja-jp/azure/active-directory-domain-services/password-policy#create-a-custom-password-policy

やはりアカウント ロックアウトの設定は、Azure AD で認証する場合には適用されず、Azure AD DS ドメイン内に限定されるみたいです。

また、パスワードの世代管理、つまり同じパスワードを何世代まで許容できるのかも検証してみました。
対象の UPN として「test011@adds011.work」で検証してみました。

まず、https://myprofile.microsoft.com/ で検証してみます。
「パスワードの変更」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/23277453-f3a3-de18-d6de-533dc67b8d53.png)

「パスワード A」→「パスワード B」→「パスワード A」と変更しても何も怒られずに変更できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/564e1e15-62a7-6f5a-a3bd-a624beb0e472.png)

つぎに、同じ UPN で Azure AD DS 上でパスワードを変更してみます。
世代としては、下記画面ショットのように「2」世代に設定しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/31d00a78-b954-1d11-ecc9-59decd35e001.png)

パスワードを変更してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/561bcf44-1370-77aa-5068-2e35e7082192.png)

変更できませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/061bbb98-a4b1-23c6-4864-378a3f817300.png)

これは、Azure AD DS に同期されたアカウント (Azure AD → Azure AD DS) は、Azure AD DS 側からは変更できないみたいです。
そして、これも公開情報に書いてありました。

>パスワードの複雑さ、年齢、有効期限などの設定は、Azure AD DS マネージド ドメインで手動で作成したユーザーに対してのみ適用されます。

-参考情報
カスタムのパスワード ポリシーを作成する
URL:https://docs.microsoft.com/ja-jp/azure/active-directory-domain-services/password-policy#create-a-custom-password-policy

試しに、下記画面ショットのように Azure AD DS 内にのみ存在する「adds_only_001」ユーザーを同じカスタム パスワード ポリシーに追加して検証してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/081dd995-c019-be70-a1c0-dc07366da5a0.png)

「パスワード A」→「パスワード B」→「パスワード A」と変更したところ、下記画面ショットのようにパスワード要件に引っかかって変更ができない動作を確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/373423/e63f70ae-6660-02e2-821f-c8e2bc767311.png)

#おわりに
今回は Azure AD DS で利用できるアカウント ロック ポリシーが Azure AD のスマート ロックアウトと比較してどちらの機能が有効になるのかを実際に動作確認してみました。

最終的には公開情報に書いてあったとおりでしたが、Azure AD DS のマネージド ドメイン内で NTLM や Kerberos 認証をした際には、Azure AD DS のアカウント ロック ポリシーが適用され、それ以外の Azure AD で認証する際にはスマート ロックアウトが適用される動作になりました。

また、パスワードの履歴に関しても Azure AD から同期されたユーザーではなく、 Azure AD DS のマネージド ドメイン内に手動で作成されたユーザーに対してのみ、Azure AD DS のカスタム パスワード ポリシーが適用される動作となりました。

今回の記事が少しでも参考になれば幸いです。