Datadog で Active Directory をモニタリングしてみた
こんにちは。テクニカルサポートチームのShiinaです。
はじめに
今回、AWS EC2 上で運用している Active Directory 環境に、Datadog を導入してみました。
ユーザー認証の快適さやシステムの安定運用には、認証遅延や主要な Windows サービス稼働状況のモニタリングが重要となってきます。
これらをモニタリングすることで、オブザーバビリティ(可観測性)も向上し、トラブル発生時の迅速な原因特定や復旧にも大きく役立ちます。
Active Directory 環境への Datadog エージェントのインストールは、一般的なサーバーとは異なる注意点が多く、セットアップの過程でいくつかつまずきやすいポイントもありました。
そうした注意点も含めて、導入手順とモニタリング設定を紹介します。
Active Directory 環境における注意点
Datadog エージェントのサービスアカウント
Windows 環境に Datadog エージェントをインストールをする際、通常はローカルユーザーアカウント(ddagentuser)を作成して利用します。
Active Directory ドメインコントローラでは、ローカルユーザーアカウントの代わりにグループ管理サービスアカウント(gMSA)の使用が推奨されます。
Active Directory Domain Services (NTDS) サービスに対する権限
Active Directory Domain Services (NTDS) サービスに対しては特殊な権限設定がなされており、標準的なサービスアカウント権限ではサービスチェックを行うことができません。
サービスチェックを行うには追加で権限設定が必要です。
権限設定は Windows Update 後も権限が維持されるよう、グループポリシーによる設定が推奨されます。
グループ管理サービスアカウントとは
グループ管理サービスアカウント(gMSA:Group Managed Service Account)は複数のサーバーでサービスを実行するための特別なアカウントです。
Kerberos 認証によって安全な認証が行われ、パスワード管理も自動化されているため、管理者がパスワードを管理する必要がないといったメリットがあります。
ドメインコントローラに昇格すると、ローカルユーザーアカウントは利用できなくなるため、ドメインコントローラ上で動作するサービスに対する利用に推奨されるアカウントです。
検証環境
Windows Server 2025 の EC2 インスタンスで、ドメインコントローラに昇格した環境を利用します。
グループ管理サービスアカウント設定
1. DS ルートキーの作成
グループ管理サービスアカウントのパスワード生成に必要となるルートキーを作成します。
作成直後のキーは AD レプリケーションが収束する10時間は待機状態となります。
すぐに利用することはできませんのでご注意ください。
Add-KdsRootKey -EffectiveImmediately
待機時間を回避したい場合は開始時刻を過去の時刻に設定した下記コマンドを実行する方法があります。
Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10))
2. グループの作成
Datadog エージェントを実行するサーバーをまとめるための Active Directory グループを作成します。
このグループに属するコンピュータアカウントのみ、グループ管理サービスアカウントのパスワードを取得できます。
これにより、Datadogエージェントがグループ管理サービスアカウントを使って安全にサービスとして動作できるようになります。
- Active Directory ユーザーとコンピューター (ADUC)を開きます。
- グループを作成する組織単位 (OU)を選択します。
- 右クリックして、[新規] > [グループ]を選択します。
- 以下を入力してグループを作成します。
グループ名:任意(例: DatadogAgentsGroup)
グループスコープ:ドメインローカル
グループの種類:セキュリティ
3. グループ管理サービスアカウントの作成
下記コマンドを実行します。
New-ADServiceAccount -Name DatadogGMSA -DNSHostName <YOUR_DOMAIN_NAME> -PrincipalsAllowedToRetrieveManagedPassword DatadogAgentsGroup
グループ管理サービスアカウントが登録されていることを確認します。
- Active Directory ユーザーとコンピューター (ADUC)を開きます。
- ManagedServiceAccountsを選択します。
- 一覧に DatadogGMSA が表示されていることを確認してください。
4. コンピュータアカウントをグループに追加
- Active Directory ユーザーとコンピューター (ADUC)を開きます。
- グループ(例: DatadogAgentsGroup)を作成した組織単位 (OU)を選択します。
- グループ(例: DatadogAgentsGroup)を右クリックし、プロパティを選択します。
- 「メンバー」タブで、「追加」を選択します。
- 「コンピュータ」オブジェクトを選択し、自身のコンピュータアカウントを追加します。
5. グループメンバーシップの反映
OS の再起動、もしくは Kerberos チケットのキャッシュを消去を行い、グループメンバーシップの反映を行います。
klist purge
6. サービスアカウントのインストール
下記コマンドを実行します。
Install-ADServiceAccount -Identity DatadogGMSA
インストール後に下記コマンドを実行し、True
と返れば準備完了です。
Test-ADServiceAccount -Identity DatadogGMSA
Datadog エージェントのインストール
- インストーラーファイルをダウンロードします。
https://windows-agent.datadoghq.com/datadog-agent-7-latest.amd64.msi datadog-agent-7-latest.amd64.msi
ファイルを実行します。- 指示に従い進みます。
- Datadog Agent User Account の入力を求められたら、以下を入力します。
- Username:<YOUR_DOMAIN_NAME>\DatadogGMSA$
- Password:なし
- 次へ進み、インストールを完了させます。
- アカウントの設定に問題なければ Datadog エージェントが起動します。
Active Directory Domain Services(NTDS) に対する権限設定
1. グループポリシーの設定
-
グループポリシーの管理(gpmc.msc)を開きます。
-
ドメインツリーより該当のドメインを選択します。
-
Domain Controllers を選択します。
-
Domain Controllers にリンクされているグループポリシーを選択します。
リンクされたグループポリシーのデフォルトは Default Domain Controllers Policy です。 -
グループポリシー名を右クリックして、[編集] を選択します。
-
コンピュータの構成 > ポリシー > Windows の設定 > セキュリティの設定 > システム サービス を展開します。
-
Active Directory Domain Services を選択します。
-
以下のように設定を行います。
- このポリシーの設定を定義する:チェックする
- スタートアップモード:自動
-
セキュリティの編集を選択します。
-
ユーザー名にグループ管理サービスアカウントを追加し、読み取りのアクセス許可にチェックを入れます。
11. 設定を適用し、設定パネルを閉じます。
2. グループポリシーの反映
下記コマンドでグループポリシーの反映を行います。
gpupdate /force
3. Datadog エージェントの再起動を行います。
& "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" restart-service
Datadog エージェントのコンフィグレーション設定
Active Directory メトリクス収集の有効化と、Active Directory 関連の主要なサービスに対して Windows サービスチェックを行います。
今回は下記のサービスをモニタリング対象としてみます。
サービス名 | 主な役割 |
---|---|
NTDS | ドメインコントローラーの中核 |
DNS | ドメイン名解決 |
KDC | Kerberos認証 |
Netlogon | ドメイン認証・レプリケーション・ログオン処理 |
DFSR | 分散ファイルシステムのレプリケーション |
W32Time | ドメイン内の時刻同期 |
1. メトリクス収集設定
- サンプル用のコンフィグレーション設定ファイル
conf.yaml.example
をそのまま利用するため、ディレクトリ内にconf.yaml
へリネームコピーします。
Copy-Item -Path "C:\ProgramData\Datadog\conf.d\active_directory.d\conf.yaml.example" -Destination "C:\ProgramData\Datadog\conf.d\active_directory.d\conf.yaml"
- Datadog エージェントの再起動を行います。
& "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" restart-service
2. サービスチェック設定
- サービスチェック用のコンフィグレーション設定ファイル(C:\ProgramData\Datadog\conf.d\windows_service.d\conf.yaml)を修正します。
init_config:
instances:
- services:
- NTDS
- DNS
- KDC
- Netlogon
- DFSR
- W32Time
- Datadog エージェントの再起動を行います。
& "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" restart-service
モニタリング設定
Active Directory インテグレーションのインストール
- Datadog コンソールメニューより「Integrations」を選択します。
- 一覧より Active Directory を選択します。
- 「Install Integraions」を選択し、インストールします。
メトリクス監視モニター作成
Active Direcotory に対するモニタリングとして、以下の指標が推奨されています。
Number of sessions for LDAP clients is anomalous
LDAP クライアント(ユーザーやアプリケーション)からの接続セッション数が、通常と比べて異常に多い・少ない場合にアラートを出します。
Number of LDAP bindings is anomalous
一定期間内に発生するLDAP バインド(認証)処理の回数が、通常と比べて異常な値になった場合に検知します。
LDAP binding duration is high
LDAP バインド(認証)処理にかかる時間が通常より長くなっている場合にアラートを出します。
-
下記 URL より、テンプレートにアクセスし、指標を選択します。
https://app.datadoghq.com/monitors/templates?q=Active Directory&only_installed=true&p=1 -
必要に応じて閾値条件や通知先などを指定の上、モニターを作成します。
サービス監視モニター作成
-
Datadog コンソールメニューより「Monitors」「New Monitor」を選択します。
-
「Service Check」を選択します。
-
以下のように設定を行い、マルチアラートモニターを作成します。
- Pick A Service Check:Windows_service.state
- Pick monitors scope:ホスト名
- Set alaert conditions
- Trigger a separete alert:windows_service
- Unknows status:Notify
- data is missing:Notify
- Configure notifactions & automations
- Title:モニター名称
- Notify:通知内容
- Aggegations:Multi Alert -Send a notification for each windows_service
ダッシュボード
専用のダッシュボードが用意されているため、主要なメトリクスを確認することができます。
- Datadog コンソールメニューより「Dashboards」を選択します。
- 一覧より「Active Directory」を選択します。
つまずきポイント
グループ管理サービスアカウントの作成が「キーがありません」で失敗する
New-ADServiceAccount : キーがありません。
発生場所 行:1 文字:1
+ New-ADServiceAccount -Name DatadogGMSA -DNSHostName test.neko -Princi ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (CN=DatadogGMSA,...DC=test,DC=neko:String) [New-ADServiceAccount], ADExcep
tion
+ FullyQualifiedErrorId : ActiveDirectoryServer:-2146893811,Microsoft.ActiveDirectory.Management.Commands.NewADSer
viceAccount
-EffectiveImmediately
パラメータを指定していたので、すぐに利用できるかと思いましたが、実際にはレプリケーションが完了するまでキーは使用できません。
キー生成の待機時間を回避したい場合は開始時刻を過去の時刻に設定した Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10))
コマンドを利用する必要がありました。
サービスアカウント登録が「アクセス拒否」で失敗する
Install-ADServiceAccount : サービス アカウントをインストールできません。エラー メッセージ: '{アクセス拒否}
プロセスはオブジェクトのアクセスを要求しましたが、アクセス権が与えられていません。'。
発生場所 行:1 文字:1
Install-ADServiceAccount -Identity DatadogGMSA
Preview
Download
Copy code
+ CategoryInfo : WriteError: (DatadogGMSA:String) [Install-ADServiceAccount], ADException
+ FullyQualifiedErrorId : InstallADServiceAccount:PerformOperation:InstallServiceAcccountFailure,Microsoft.ActiveD
irectory.Management.Commands.InstallADServiceAccount
グループにコンピュータアカウントを追加した場合、メンバーシップの反映が必要です。
反映がされていないとアクセスに失敗します。
インストール後 Datadog エージェントが起動しない
インストール時の Datadog Agent User Account には正しいグループ管理サービスアカウントを指定する必要があります。
グループ管理サービスアカウントを指定する時は、必ず末尾に$を付けてください。付け忘れるとエージェントの起動に失敗します。
サービスアカウントが原因となっている場合、アプリケーションのイベントログには次のようなログが記録されます。
Product: Datadog Agent -- Error 1923. Service 'Datadog Agent' (datadogagent) could not be installed. Verify that you have sufficient privileges to install system services.
NTDS サービスのモニターステータスが「NODATA」になる
Active Directory Domain Services (NTDS) サービスへの参照権限が不足していることが原因です。
NTDS サービスはドメインコントローラで稼働しているため、権限設定は「ドメインコントローラーポリシー」(例:Default Domain Controllers Policy)で行う必要があります。
※「ドメインポリシー」(例:Default Domain Policy)ではありませんので注意してください。
権限を付与する対象は、グループ管理サービスアカウント名「DatadogGMSA(ドメイン名\DatadogGMSA$)」です。
※「ユーザーアカウント名(ドメイン名\DatadogGMSA)」ではありません。
設定後は、グループポリシーの反映(gpupdate /force など)を行ってください。
まとめ
Datadog を活用した Active Directory のモニタリングは、ユーザー認証の快適さやシステムの安定運用、障害発生時の迅速な原因特定といった観点で非常に有効です。
少し手間はかかりますが、しっかり準備すれば、安心して Active Directory 環境を運用できるようになります。
今回のつまずきからグループ管理サービスアカウント(gMSA)についても理解が深まりました!
本記事が、参考になれば幸いです。
参考