ユーザー管理再入門[Part1]基礎から分かるActive Directory再入門(7)

Active Directoryの管理といえば、避けて通れないのがユーザーの管理だ。今回は、ユーザー管理に関する疑問から、効率よくユーザーを管理するためのTipsを紹介する。

» 2014年08月22日 18時00分 公開
[国井傑(MVP for Directory Services),株式会社ソフィアネットワーク]
「基礎から分かるActive Directory再入門」のインデックス

連載目次

Active Directoryにユーザーアカウントが必要なワケ

 Active Directoryにユーザーアカウントを作成する理由はさまざまだが、一番の理由は「認証」と「承認」を実現するためである。分かりやすくいえば、適切な人だけがActive Directoryドメインにあるファイルサーバーやデータベースサーバーなどのリソースにアクセスできるようにするため、ということになる。具体的には次の2つの作業を通じて、認証と承認を実現する。

  • 認証:Windowsを起動したときに「ユーザー名」と「パスワード」を入力して、サインイン(ログオン)を行うユーザーが誰であるかを確認する作業
  • 承認:サインインを行ったユーザーがサーバーにアクセスする際、アクセスしてもよいかどうかを確認する作業

 Active Directoryでは認証と承認の作業に、「Kerberos」(ケルベロス)と呼ばれる仕組みを採用している。Kerberosによる認証/承認では、認証に成功するとドメインコントローラーが「TGT」(Ticket Granting Ticket)と呼ばれるチケット発行し、それをクライアントが受け取る。そして、承認を行う際にクライアントはTGTを提示し、アクセスしてもよいユーザーであることが確認されると「ST」(Service Ticket)と呼ばれるチケットをドメインコントローラーから受け取り、Active Directoryドメインの各種リソースにアクセスできるようになる(図1)。

図1 図1 Active Directoryによる認証と承認の仕組み

 このようにドメインコントローラーは、TGTとSTという二つのチケットをクライアントコンピューターに提供して、認証と承認を制御している。

 なお、二つのチケットには有効期限が設定されているので、ドメインコントローラーとクライアントコンピューターは同じ時刻に設定されていることが前提となる。ドメインコントローラーとクライアントコンピューターの時刻が5分以上ずれると、チケットは利用できなくなる。

 通常、クライアントコンピューターはドメインコントローラーと定期的に時刻同期を行っているが、時刻のずれが大きくなると、サインインができなくなるケースもあるので気を付けてほしい。

  • 【関連情報】Kerberos(@IT > Windows Server Insider > Windows 2000キーワード)

基本的なユーザー管理方法

 Active Directoryにおけるユーザーアカウントの必要性を確認できたところで、次はユーザー管理の具体的な方法を見ていこう。

 ここまで、Active Directoryのユーザーアカウントは認証と承認の役割を果たすためのものであると説明した。そのため、ユーザーアカウントを作成する単位は、すなわち「認証と承認を行いたい単位」ということになる。これも分かりやすくいえば、会社の従業員ごとにユーザーアカウントを作成するということになる。

 そのため、Active Directoryのユーザーアカウントは従業員が新しく入社したタイミングで作成され、退職したタイミングでその役割を終える(はずだ)。ところが現実には、管理者によってユーザーの作成方法が異なったり、従業員が退職したにもかかわらずユーザーアカウントが無効化/削除されていないといった状況のところも多々ある。ユーザーアカウント自体は「Active Directoryユーザーとコンピューター」管理ツールで作成できるが、ユーザー管理は本来、人事情報と連動して行われるべき作業である。

 そこで、企業の中で人事部を巻き込んだワークフローを作成し、それに合わせてユーザー管理を行うことをお勧めしたい。例えば、「Active Directoryのユーザーは、人事部からの依頼に基づいて作成する」「従業員の退職時には人事部から管理者にその旨を通告し、管理者はユーザーを無効化/削除する」といったルールを決めて運用するのだ(図2)。そうすれば、人事情報と連動したユーザー管理が行えるようになり、作成しても実際には使われていない“幽霊ユーザーアカウント”をなくすことができる。

図2 図2 ユーザー管理は管理者だけの独立した作業ではなく、会社全体の作業として捉える

 一方、技術的な視点から覚えておきたいのは、ユーザーの管理をまとめて行う方法である。作成するユーザー数が多くなれば、「Active Directoryユーザーとコンピューター」管理ツールでは手間がかかりすぎるからだ。

 ユーザーをまとめて作成する方法は非常に重要なテーマなので、次回じっくりと解説することとして、ここではすでに作成したユーザーやグループの情報をまとめて参照する方法を紹介しておこう。

 通常、ユーザーやグループの情報をまとめて参照する場合も「Active Directoryユーザーとコンピューター」管理ツールを使うのだが、複数のユーザー情報を並べて表示したり、比較したりするなどの操作はなかなか難しい。

 Windows Server 2008 R2以降では「Windows PowerShell」のコマンドレットでActive Directoryの情報をまとめて参照したり、表示したりすることができるようになった。

 「コマンドレットでユーザー管理」などと聞くと、難しそうなイメージを持たれるかもしれないが、いくつかのルールさえ覚えてしまえば、後は自分の環境に合わせて作り替えるだけなので思ったよりは簡単だ。苦手意識を持たずに、ぜひチャレンジしてほしい。それでは、PowerShellによるユーザー情報の参照方法を紹介していこう。

ユーザーを一覧表示する:Get-ADUserコマンドレット

 どこのOU(Organizational Unit:組織単位)に作成したかは問わず、Active Directoryに作成されたユーザーの一覧を表示する場合は、「Get-ADUser」コマンドレットを実行する(画面1)。「user」の部分を「group」に書き換えれば、グループの一覧を表示できる。

Get-ADUser -Filter {objectClass -like "user"}


画面1 画面1 「Get-ADUser」コマンドレットでユーザーの一覧を表示した様子

 Get-ADUserコマンドレットの実行結果は、画面1のように縦長表示になる。この表示が見づらい場合には、「ft」コマンドレットと組み合わせて実行することで、表示形式を変更できる。

 例えば、Get-ADUserコマンドレットで表示される内容のうち、「名前(Name)」と「保存されている場所(DistinguishedName)」だけを表示したい場合には、次のようにコマンドレットを実行すればよい(画面2)。

Get-ADUser -Filter {objectClass -like "user"} | ft Name, DistinguishedName -Autosize


画面2 画面2 ユーザー一覧を表形式で表示すると一画面に収まって見やすくなる

グループのメンバーを一覧表示する:Get-ADGroupMember

 Active Directoryに作成されたグループのメンバーとなっているグループまたはユーザーの一覧を表示するときは次の「Get-ADGroupMember」コマンドレットを実行する。

Get-ADGroupMember "グループ名"


 この他のコマンドレットを実行したい場合には「Active Directory管理センター」管理ツールを利用して、GUI画面から一度コマンドレットで行いたい操作を実行する。すると、管理ツールでの実行結果がPowerShellのコマンドレットとして表示される(画面3)。「Active Directory管理センター」管理ツールで実行した結果を控えておけば、次からPowerShellで行いたい操作が実行できるようになり、GUIの管理ツールに頼らずにさまざまな作業をまとめて行えるようになる。

画面3 画面3 「Active Directory管理センター」管理ツールによるPowerShellコマンドレットの表示

ユーザーの属性を活用しよう

 Active Directoryで作成されるユーザーには、さまざまな属性情報を登録することができる。「ユーザー名」や「パスワード」といった必須項目の他、部署や事業所、役職などの情報を追加することで、本連載の第1回「Active Directoryはなぜ必要なのか」で紹介したような“簡易的な人事システム”として活用することも可能になる。

 さらに、Active Directoryユーザーには自動的に登録される属性として、「ログオンした回数」や「最後にログオンした日時」といったユーザー管理に役立つ情報もある。ここでは、ユーザーに自動的に登録される属性を紹介しよう。

  • PwdLastSet

 PwdLastSet属性は「最後にパスワードが設定された日時」を表す。パスワードを定期的に変更するように構成している場合、いつまでもパスワードを変更していないユーザーがいれば、それは問題だ。そうしたユーザーを見つけるのに役立つ属性になる。

  • lastLogon

 lastLogon属性は「最後にユーザーがサインイン(ログオン)した日時」を表す。この属性は、どのドメインコントローラーにサインインするかによって多少の日時のズレが生じるため、細かいアクセス監査には向かないが、少なくとも最近使われていないユーザーを見つけ出すのに活用できる。

  • logonCount

 logonCount属性は「ユーザーが過去にサインインした回数」を表す。ユーザーを作成したものの、実際には使われていないユーザーを見つける場合に活用できる。

  • WhenChanged

 WhenChanged属性は「ユーザー情報に対する最後の変更があった日時」を表す。ユーザーを無効化して以後、そのユーザー情報に変更を加えていなければ、WhenChanged属性の日時がユーザーを無効化した日時と同じになるので、ユーザーを無効化してからの日数を計算するときに役立つ。

 以上の属性は、「Active Directoryユーザーとコンピューター」管理ツールなどからも参照できるが、ユーザーごとの一覧を確認したい場合には、前述のPowerShellコマンドレットと組み合わせて参照するとよい。

 使い方はGet-ADUserコマンドレットに「-Properties」を追加して、属性の名前を指定するだけである。

ユーザーごとのサインイン回数(logonCount)を一覧表示する場合

Get-ADUser -Filter {objectClass -like "user"} -Properties logonCount | ft Name, logonCount -Autosize


 lastLogonやPwdLastSetなどの日時を表す属性は、Get-ADUserコマンドレットで実行すると日時として表示されないので注意してほしい。そのため、表示形式を成型する必要があり、少し特殊なコマンドレットを一緒に実行しなければならない(画面4)。

Get-ADUser -Filter {objectClass -like "user"} -Properties lastLogon | ft Name, @{name='lastLogon' ; expression={[datetime]::fromFileTime($_.lastLogon)}}


画面4 画面4 日時を表す情報はそのまま表示されない(画面上部)ので、成型するコマンドレットと組み合わせて実行する(画面下部)

 上記コマンドレットの「@」以降の部分については詳細な解説は避けるが、コマンドレットの中にある「lastLogon」部分を「PwdLastSet」などに書き換えれば、他の属性情報についても確認することができる。

パスワードの変更とリセット

 Active Directoryの管理者として日々のサポート業務を行っていれば、必ず登場するのがパスワードに関する問い合わせだろう。Active Directoryユーザーのパスワードを現在のものから変更する場合は、大きく分けて二つの方法がある。

 一つは、ユーザー自身がパスワードを変更する方法だ。クライアントコンピューター上で[Ctrl]+[Alt]+[Del]キーを押すと表示される画面で、パスワードを変更できる。

 もう一つは、Active Directory管理者が「Active Directoryユーザーとコンピューター」管理ツールを使って、パスワードを強制的に新しいものに変更する「パスワードのリセット」と呼ばれる方法である。

 どちらの方法もパスワードを変更するという意味では同じだが、管理者による「パスワードのリセット」の場合は、自分で暗号化したファイルや電子メールメッセージ、Webサイト、ネットワーク上のサーバーなどにアクセスするためのパスワードとして利用できなくなるケースがある。そのため、安易にパスワードのリセットは使わずに、会社内で利用しても問題がないかどうかを必ずテストしてほしい。

パスワードのポリシー

 これまでパスワードの運用に関しては、長く、複雑なパスワードを設定し、それを定期的に変更することが望まれてきた。ところが、長く、複雑なパスワードを定期的に変更することは難しく、最初のパスワードは「Password1」、次のパスワードは「Password2」などと、安易な設定になるケースも多々見受けられるようになってきている。

 そのため、定期的なパスワード変更ルールを見直そうと考えている会社もあるのではないだろうか。もし、一度設定したパスワードに関するルール(パスワードのポリシー)を変更するのであれば、ドメインコントローラー上で「グループポリシーの管理」管理ツールを開き、「Default Domain Policy」の編集画面を開いて、パスワードポリシー設定を変更すればよい(画面5)。

画面5 画面5 グループポリシーによるパスワードポリシーの設定変更画面

 ここまで、Active Directoryの中でユーザーが必要な理由と、ユーザーを管理する上で覚えておくと便利なトピックを紹介した。次回は、ユーザー管理では必ず登場することになる「まとめてユーザーを作成する方法」を解説する。

マイクロソフトが期間限定公開中 Active Directoryのスキルをブラッシュアップしよう!

 クラウドの登場により、Active Directoryに求められる役割も変化しつつあります。

 クラウドに対応させるためのActive Directoryの設計ポイントとはどにあるのか? iOSやAndroidは、Active Directoryにどう絡むのか? Azure Active Directoryとは何者か? 生産性を高めるためのセキュリティを実現するには、どのようなインフラが必要か?

 今こそ、Active Directoryの役割を再学習し、古い知識をリセットしましょう!


筆者紹介

国井 傑(くにい すぐる)

株式会社ソフィアネットワーク取締役。1997年よりマイクロソフト認定トレーナーとして、Active DirectoryやActive Directoryフェデレーションサービス(ADFS)など、ID管理を中心としたトレーニングを提供している。2007年よりMicrosoft MVP for Directory Servicesを連続して受賞。なお、テストで作成するユーザーアカウントには必ずサッカー選手の名前が登場するほどのサッカー好き。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。