技術情報コラムColumn
Active Directory オブジェクト 精査について
技術解説
認証基盤として、ActiveDirectoryを導入されている企業は多いと思います。
ドメイン統合、人事異動、パソコン入替などにより不要なユーザーアカウントなどのオブジェクトは残っていませんでしょうか?
私はインフラ業務を担当しているのですが、お客様よりこのような質問を受けたことがありました。
「Active Directory上に不要なユーザーが結構あるので、長期間利用していないユーザーやコンピュータを識別して削除を行いたい。」
確認したところ、「Active Directory ユーザーとコンピュータ」などのGUIツールでは最終アクセス日などの検索項目がなく、抽出することが出来ませんでした。
そこで、コマンドレベルでの抽出方法を確認すると、Active Directory管理用コマンド「dsquery」で抽出が出来そうでした。
下記画像1のように
「dsquery user -inactive xx 」
「dsquery computer -inactive xx 」
と入力し、パラメータ –inactive の“XX”に利用していない週数を指定することにより抽出ができました。
※画像:1
しかし、最終アクセス日が分からず、出力結果も識別名(DN)で表示され少々見づらい難点もありました。
そこで、他の方法がないか確認しましたところ、PowerShellで詳細な抽出が出来そうであり、またどんな感じで抽出されるのか興味もあり、PowerShellで試してみました。
「Get-ADUser」または「Get-ADComputer」コマンドレットを使って、Active Directoryのユーザー情報およびコンピュータの抽出が出来ました。
※以下の画像2では、ADユーザーのみ抽出。
Get-ADUser [-Identity] ・・・特定のユーザーを指定
・・・ 検索の条件を指定
例:Get-ADUser –Filter { mail –like “Administrator*” }
メールアドレスが“administrator”で始まるユーザーを抽出
※画像:3
今回の目的は、最終ログオン日を確認することなので、全ユーザー情報から最終ログオン日を抽出する方法を確認しました。
get-aduser –filter * -property * | select name、lastlogondate
get-aduserで抽出した情報を「| (パイプ)」を利用し、Select-Objecte(select)コマンドレットへ引き渡し、出力オブジェクトの選択を行います。
下記画像4の例では、「Name、LastLogonDate」を選択。
※画像:4
また、出力結果をCSV形式で保存することも可能です。(画像5)
get-aduser -filter * -property * | select name,lastlogondate | export-csv -path c:\temp\aduser.csv -encoding default
-pathで指定したファイルに出力されます。(画像6)
※画像:5
※画像:6
出力したファイルをExcel等で加工し、ログオンを数年行っていないユーザーの確認等ADオブジェクトの精査が可能となります。
その他、「New-ADUser」、「Set-ADUser」、「Remove-ADUser」等のコマンドレットもありますのでユーザー作成、削除、属性情報の修正も可能です。
今回は、情報抽出でしたが今後は属性情報の修正等もPowerShellで試してみようと思います。
興味がある方は色々と試されてはいかがでしょうか。
例:Get-ADUser –Identity S-1-5-21-3488863001-1657078567-2963466874-500
-identityでは下記属性値を指定可能
・識別名
・GUID
・セキュリティ識別子
・SAMアカウント名
※画像:2
Get-ADUser -Filter