Active Directory (AD) の管理者として、未使用のアカウントを特定し、リソースの無駄遣いやセキュリティリスクを低減するのは重要なタスクです。この記事では、PowerShellを使って未使用のADアカウントを効率的に特定する手法を解説します。
はじめに
多くの企業や組織でActive Directory(AD)は中心的な役割を果たしていますが、その運用は容易ではありません。特に未使用のアカウントはセキュリティ上のリスクになる可能性があります。そこでPowerShellを使い、未使用のアカウントを自動で特定する方法を探ります。
必要な環境
- Windows Server(Active Directoryが動作しているサーバー)
- PowerShell(バージョン5以上推奨)
PowerShellモジュールのインストール
最初に、Active Directory用のPowerShellモジュールをインストールする必要があります。コマンドプロンプトを開き、以下のコマンドを実行します。
# Active Directory モジュールをインストール
Install-WindowsFeature -Name RSAT-AD-PowerShell
未使用のADアカウントを特定するスクリプト
以下は、未使用のADアカウントを特定するPowerShellスクリプトの一例です。
# Active Directory モジュールをインポート
Import-Module ActiveDirectory
# 最後にログインした日から90日以上経過したユーザーを取得
$InactiveUsers = Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00 -UsersOnly
# 結果を出力
$InactiveUsers | Select-Object Name, LastLogonDate | Format-Table -AutoSize
このスクリプトでは、Search-ADAccount
コマンドを使って最後にログインした日から90日以上経過したユーザーを取得します。-AccountInactive
フラグで未使用のアカウントをフィルタリングし、-TimeSpan
で期間を設定しています。
各コードの説明
Import-Module ActiveDirectory
: Active Directory用のPowerShellモジュールをインポートします。Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00 -UsersOnly
: 未使用のユーザーアカウントを特定します。ここでは、最後にログインしてから90日以上経過したものとしています。Select-Object Name, LastLogonDate
: 取得したユーザーの名前と最後のログイン日を選択します。Format-Table -AutoSize
: 結果を表形式で出力します。
補足:セキュリティとコンプライアンス
未使用のADアカウントを放置すると、そのアカウントが悪意ある者に悪用される可能性があります。そのため、定期的に未使用のアカウントを監査し、無効化または削除することが推奨されます。
応用例:未使用アカウントの自動削除
未使用のアカウントを特定した後、それらのアカウントを自動で削除するスクリプトも作成可能です。ただし、自動削除は慎重に行うべきです。
# 未使用アカウントを自動削除する例
$InactiveUsers = Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00 -UsersOnly
$InactiveUsers | ForEach-Object { Remove-ADUser -Identity $_.DistinguishedName -Confirm:$false }
このスクリプトでは、Remove-ADUser
コマンドを用いてアカウントを削除しています。-Confirm:$false
は削除確認をスキップしますが、実運用で使用する場合は、十分なテストと確認が必要です。
まとめ
PowerShellを使用して未使用のADアカウントを効率的に特定する方法を説明しました。定期的な監査により、セキュリティリスクを低減できます。また、応用として未使用アカウントの自動削除も可能ですが、これには十分な注意が必要です。
コメント