Active Directory でユーザーアカウントの作成者を識別する方法

Active Directoryのユーザー情報の管理は、最初は少し大変に思えるかもしれません。特に、アカウントを実際に作成したのは誰なのか、いつ作成されたのかを特定しようとするとなおさらです。ユーザー作成を監査したり、最近作成したアカウントを見つけたり、誰かがアカウント設定をいじっていないか確認したりする必要が生じることは珍しくありません。幸いなことに、PowerShellとADコンソールには、これらの作業を大幅に簡素化するいくつかのトリックがあります。ただし、必要な場所を把握しておく必要があります。そのため、謎の新規ユーザーを追跡する場合でも、ADの豆知識を把握しようとする場合でも、この記事が役立つはずです。

ユーザーアカウントがいつ作成され、誰が作成したかを確認する方法

ADUC で作成日を調べる(グラフィカルな方法)

まず、PowerShellを使いこなせない方にとって最も簡単な方法は、Active Directory ユーザーとコンピューター( ) を使うことです。ただし、 「表​​示」メニューで「高度な機能」dsa.mscが有効になっていることを確認してください。有効になっていないと、一部の情報が隠れてしまいます。リストからユーザーを探し、プロパティを開いて「オブジェクト」タブに移動します。「作成日」には、アカウントが作成された正確な日付が表示されます。簡単ですね。でも、これはほんの表面的な部分です。

属性エディターを使って属性を直接確認することもできますwhenCreated。同じプロパティウィンドウ内にありますが、表示オプションから「属性エディター」タブをオンにする必要があります。少し隠れた場所にありますが、一度見つけてしまえば簡単です。設定によっては、この情報が少し不正確になる場合があります。特に、誰かがルールを曲げたり、スクリプトを使ってタイムスタンプを改ざんしたりした場合などです。その点にご注意ください。

PowerShell を使用して作成日などを確認する

技術に詳しい方やスクリプトを好む方にとって、PowerShellのGet-ADUserコマンドレットはまさに救世主です。作成日を取得したいですか?簡単なワンライナーはこちらです。

Get-ADUser a.brion -Properties whenCreated | Select-Object Name, whenCreated

これにより、ユーザー名とアカウントが最初に作成された日時がわかります。なぜこれが役立つのか?それは、多数のユーザーを調べたり、定期的に確認したりする場合、非常に高速になるからです。どのような場合に使うのでしょうか?通常は、知らないうちに新しいアカウントが作成された疑いがある場合に使用します。アカウントが作成された正確な日時を示すタイムスタンプが表示されるはずです。設定によっては、タイムスタンプが操作されている場合、日付が間違っている可能性がありますが、ほとんどの場合、かなり信頼できる情報です。

もう 1 つの便利なトリック: 過去 1 日間に作成されたすべてのアカウントを検索する場合は、次のようなスクリプトを実行できます。

$lastday = ((Get-Date).AddDays(-1)) $filename = Get-Date -Format yyyy. MM.dd $exportcsv = "C:\ps\new_ad_users_" + $filename + ".csv" Get-ADUser -Filter {(whenCreated -ge $lastday)} -Properties whenCreated | Select-Object Name, UserPrincipalName, SamAccountName, whenCreated | Export-Csv -Path $exportcsv -NoTypeInformation 

このスクリプトは最近のアカウントを収集します。毎日新しいユーザーの設定を監視したい場合に便利です。Windowsのタスクスケジューラでスケジュールを設定するだけで、毎日レポートが作成されます。

アカウントを作成したユーザーの追跡: イベントログの秘密

ここからがちょっと厄介なところです。特定のユーザーを実際に作成したのが「誰」なのかを確認したい場合は、セキュリティログを調べる必要があります。ADでユーザーが作成されると、ドメインコントローラーのログにID 4720のイベントが表示されます。ただし、ここで注意すべき点があります。これは、グループポリシーで「ユーザーアカウント管理」の監査が有効になっている場合のみです。

ほとんどのドメインコントローラーでは、デフォルトのドメインコントローラーポリシーで「ユーザーアカウント管理の監査」を有効にする必要があります。有効になっていない場合、これらのイベントは表示されません。有効にすると、ユーザーが作成されるたびにイベントがトリガーされ、「ユーザーアカウントが作成されました」という説明が表示されます。

誰が作成したかを確認するには、「件名」フィールドを確認します。そこには作成を実行したアカウントが表示され、「新しいアカウント」フィールドには新しいアカウントのユーザー名が表示されます。複数のドメインコントローラーからこの情報を迅速に取得するには、過去24時間のすべての関連イベントを検索するスクリプトを使用できます。

$Report = @() $time = (Get-Date) - (New-TimeSpan -Hours 24) $AllDCs = Get-ADDomainController -Filter * foreach($DC in $AllDCs) { Get-WinEvent -ComputerName $DC. Name -FilterHashtable @{LogName="Security"; Id=4720; StartTime=$time} | Foreach { $xml = [xml]$_. ToXml() if($xml) { $timestamp = Get-Date $_. TimeCreated -UFormat "%Y-%m-%d %H:%M:%S" $creator = $xml. Event. EventData. Data | Where-Object { $_. Name -eq "SubjectUserName" } | Select-Object -ExpandProperty '#text' $newUser = $xml. Event. EventData. Data | Where-Object { $_. Name -eq "TargetUserName" } | Select-Object -ExpandProperty '#text' $Report += [pscustomobject]@{ User = $newUser Creator = $creator DC = $DC. Name CreationDate = $timestamp } } } } $Report | Export-Csv "C:\ps\ad_user_creation_report_$(Get-Date -Format yyyy. MM.dd).csv" -NoTypeInformation 

ええ、少し複雑に見えますが、実際には機能します。特に複数のDCを監査する場合は便利です。ただし、ログ記録ポリシーによってはスクリプトに多少の調整が必要になる場合があることをご承知おきください。

それでも解決しない場合は、次のことを試してください。監査が有効になっていること、ログがクリーンであること、そしてログにアクセスする権限があることを確認してください。そうでない場合、この情報はロックされたままになります。

どれもうまくいかない場合は面倒ですが、システム管理者やセキュリティチームに確認することで、かなりの手間を省くことができます。ログが長期間保存されるような環境の場合は、イベントビューアーを手動で確認することもできますが、自動化の方がはるかに効果的です。

まとめ

ユーザーを誰がいつ作成したかという詳細情報を取得することは、少しの知識があれば可能です。PowerShellとADコンソールツールが役立ちます。ただし、AD監査ポリシーが最初から正しく設定されていることを確認しないと、後から追跡する羽目になります。上記のスクリプトを使えば、面倒な作業のほとんどを自動化し、比較的簡単に新規ユーザーアカウントを監視できます。監査ワークフローの効率化に役立つことを願っています。

まとめ

  • 高度な機能を備えたADUCを使用すると、ユーザーがいつ作成されたかをすぐに確認できます。
  • Get-ADUser詳細情報と自動化のために PowerShell から実行します。
  • ドメイン コントローラーのセキュリティ ログ (イベント ID 4720) をチェックして、ユーザー アカウントを作成したユーザーを確認します。
  • ユーザー アカウント管理イベントを追跡するには、監査ポリシーが有効になっていることを確認します。
  • スクリプトとタスク スケジューラを使用して、毎日または毎週の監査を自動化します。

最後に

正直なところ、これらのコツを知っておくと、誰かがいじくり回したり、とにかくすべてをきちんと整理しようとしたりしているときに、膨大な時間を節約できます。最初から監査を設定するのが最善策ですが、遡及的なチェックも不可能ではありません。これで誰かの時間を少しでも節約できれば幸いです。