非アクティブな Active Directory(AD)のユーザーアカウントは、たとえば、退職した元従業員が HR から IT へ連絡がなかったために、退職後も数か月間アクティブなままアカウントを保持している場合や、特定の目的のために作成されたアカウントが、その後に削除されないまま残ってしまう場合など、組織に対してセキュリティ上のリスクになり得ます。このようなアカウントが存在する理由が何であれ、Active Directory はすぐに管理不能になり、その結果としてシステムの監査が難しくなり、セキュリティも低下します。
PowerShell 用 Active Directory モジュール
Active Directory 用の PowerShell モジュールにより、システム管理者は Active Directory をクエリし、得られたデータを使ってレポートを生成できます。PowerShell 用の AD モジュールは Windows Server 2012 のドメイン コントローラーにデフォルトでインストールされています。もしくは Remote Server Administration Tools (RSAT) for Windows 8.1 をダウンロードし、以下のコマンドでモジュールをインストールしてください。
ローカル管理者としてログインし、PowerShell のプロンプトを開き、以下のコードを入力して ENTER キーを押すと、PowerShell 用の AD モジュールをインストールできます。:
Install-WindowsFeature RSAT-AD-PowerShell
非アクティブ アカウントを Active Directory で検索する
Search-ADAccount コマンドレットは、不活性なユーザー アカウントを Active Directory で検索するための簡単な方法を提供します。:
Search-ADAccount –UsersOnly –AccountInactive
上記のコマンドは、すべての非アクティブ アカウントを返します。結果を特定の期間に絞り込むには、–TimeSpan パラメーターを Search-ADAccount に追加できます。次の例では、変数が –TimeSpan パラメーターの値を定義し、New-Timespan コマンドレットを使用して入力を簡略化します。:
$timespan = New-Timespan –Days 90 Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan
別の方法として、–DateTime パラメーターを指定すると、指定した日付以降に非アクティブになっているアカウントを返せます。以下のコマンドでは、「2014 年 5 月 5 日以降にアクティブでなかった」アカウントが返されます:
Search-ADAccount –UsersOnly –AccountInactive -DateTime ‘5/20/2014’
アカウントに関する、よりユーザーフレンドリーな情報を取得するには、結果を Get-ADUser コマンドレットにパイプし、そのうえで Select を使って、出力に表示する列を選択します:
Search-ADAccount –UsersOnly –AccountInactive | Get-ADuser -Properties Department,Title | Select Name,Department,Title,DistinguishedName
結果は、指定したフィールドで並べ替えることもできます。この例では LastLogOnDate 属性(LastLogonTimestamp から派生し、読みやすい形式に変換されたもの)で並べ替えます:
Search-ADAccount –UsersOnly –AccountInactive | Get-ADuser -Properties Department,Title | Sort LastLogOnDate | Select Name,Department,Title,DistinguishedName
注意すべき点として、LastLogOn 属性とは異なり、LastLogonTimestamp はドメイン コントローラー間で同期されますが、9〜14 日ほど古い可能性があります。そのため、結果を処理する際にはこの点を考慮してください。
出力をさらにわかりやすくし、非アクティブなユーザー数を数える別の方法は、結果を Measure コマンドレットにパイプすることです:
Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan | Measure
他の PowerShell の cmdlet と同様に、結果は Out-GridView にパイプすることも、結果を Excel に取り込めるようカンマ区切りのファイルに出力することもできます。
Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan | Out-GridView
非アクティブなアカウントを無効化
目的の結果セットが揃ったら、あとはそれらを次の Disable-ADAccount コマンドレットにパイプして、アカウントを無効化するだけです(以下の例のようにします):
Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan | Disable-ADAccount
Netwrix Auditor には、サポートされているすべての Windows バージョンで非アクティブなユーザー アカウントを検出し無効化する機能が含まれており、結果は製品のデータベース、レポート、および通知機能に統合されます。そのため、追加のスクリプトを個別に実行・保守する必要がありません。 Netwrix Auditor は、非アクティブなアカウントの無効化、ランダム パスワードの設定、指定した組織単位(OU)へのアカウントの移動、またはアカウントの削除を行えます。
それでは下の投票に意見を投稿してください。正解は1つだけであることに注意してください!
共有する
もっと詳しく
著者について
Russell Smith
ITコンサルタント
管理およびセキュリティ技術を専門とする IT コンサルタント兼著者です。Russell は IT 分野で 15 年以上の経験があり、Windows セキュリティに関する書籍を執筆し、Microsoft の Official Academic Course(MOAC)シリーズ向けの教材も共著しています。