【AWS】AWS Managed Microsoft ADのパスワードポリシーに要注意


はじめに

結論から申し上げますと、AWS Managed Microsoft ADのデフォルトのドメインポリシーパスワード有効期間が42日間となっております(※2021/03/22時点)。
つまり、デフォルトのドメインポリシーで42日間以内に一回もパスワードを変更しない場合は、AWS Managed Microsoft ADのパスワードが失効になってしまいます。
もしAWS Managed Microsoft ADをほかのAWSサービス(例えばFSx)と繋いて構成を組んでいる場合は、デフォルトのドメインポリシーで42日間に一回もAWS Managed Microsoft ADのパスワードを変更しない場合は、そのサービスが42日後に接続できなくなりますので、要注意です。

AWS Managed Microsoft ADパスワードポリシー

下記AWS公式サイト上で記載されているパスワードポリシーを引用します。

AWS Managed Microsoft AD では、AWS Managed Microsoft AD ドメインで管理するユーザーのグループ別に異なるきめ細かいパスワードおよびアカウントロックアウトのポリシー (「きめ細かいパスワードポリシー」とも呼ばれる) を定義して割り当てることができます。AWS Microsoft AD ディレクトリを作成すると、デフォルトのドメインポリシーが作成され、ディレクトリに適用されます。このポリシーには、以下の設定が含まれます。

ポリシー 設定
パスワードの履歴を記録する 24 個のパスワードを記憶
最大のパスワード有効期間 42 日間 *
最小のパスワード有効期間 1 日
パスワードの最小長 7 文字
パスワードは複雑さの要件を満たす必要がある 有効
元に戻せる暗号化を使用してパスワードを保存 Disabled
  • 注意: 42 日間の最大パスワード有効期間は管理者パスワードにも適用されます。

出典URL:https://docs.aws.amazon.com/ja_jp/directoryservice/latest/admin-guide/ms_ad_password_policies.html

実際に遭ったこと

Amazon FSx for Windowsを使用するために、AWS Managed Microsoft ADが構成要件となっています。私はAWS Managed Microsoft ADとAmazon FSx for Windowsを合わせて利用しています。

当初はAWS Managed Microsoft ADのパスワード有効期間があることを知らずに、構築後にそのままFSxとの接続をしていましたが、42日間経った後に、EC2からFSxへの接続が出来なくなっている事象が発生しました。

上記は当初EC2からFSxへ接続する際に、AD認証側で「パスワード有効期間が切れています」というエラーメッセージが表示されています。

対応策

MicrosoftのActive Directoryページを見てみると、GPOでは0日指定で無効化も可能です。

You can set passwords to expire after a number of days between 1 and 999, or you can specify that passwords never expire by setting the number of days to 0

ただしベストプラクティスには30~90日の変更がお勧められています。

Set Maximum password age to a value between 30 and 90 days, depending on your environment. This way, an attacker has a limited amount of time in which to compromise a user's password and have access to your network resources.

出典URL:
https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/maximum-password-age

運用面とセキュリティリスク対応の観点から、基本的にはAWS Managed Microsoft AD有効期間を設け日数に設定するのが一番良いです。
ただし、運用面の効率化の観点のアイデアとしては、パスワード更新のPowerShellもしくはAWS CLIによるスクリプトの自動化が挙げられます。
個人はスクリプトによるパスワード自動更新を選択しました。

パスワード自動更新スクリプト

当時書いたスクリプトは下記となります。

@echo off
cls& color 0a & title パスワード設定 Made By HYJ 2020/08/28
rem ------AD password change script-------
powershell -NoProfile -ExecutionPolicy Unrestricted -Command "& { Reset-DSUserPassword -UserName <AWS Managed Microsoft ADで設定されたユーザー> -DirectoryId <AWS Managed Microsoft ADのディレクトリ ID> -NewPassword <ここにパスワードを入力> }"

書いたスクリプトをEC2(Windows)に格納し、CloudWatch Events + AWS Systems Managerで一ヶ月に一回定期実行するように設定しました。(後日当方法を公開します)
またWindowsのタスクスケジューラに登録しても実行ができますので、どちらかを選択していただければと思います。

ちなみに公式サイト上に載せている参考URLをシェアします:https://docs.aws.amazon.com/ja_jp/directoryservice/latest/admin-guide/ms_ad_manage_users_groups_reset_password.html

感想

Microsoft ADまわりと関わってくると、必要とされる考慮事項をしっかりと事前に調査しておく必要があります。今回はいい勉強になりました。