技術情報コラムColumn

Active Directory オブジェクト 精査について

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