連載
» 2009年12月10日 00時00分 公開

Windows Server 2008 R2の真価:第6回 進化したActive Directory (3/3)

[安納順一(エバンジェリスト),マイクロソフト株式会社 ]
前のページへ 1|2|3       

Active Directory PowerShellモジュール

 Active Directoryをコマンドラインから管理する手法は、世界中の多くのシステム管理者によって模索され続けてきた。現時点ではADSI(Active Directory Service Interface)を使用したWindows Script(Windows Script Hostを略してWSHと呼ばれることも多い)による管理が定番の手法となり、書籍やWebからは大量のサンプル・コードおよびその解説が入手できる。Windows Scriptに対する人気は非常に高く(依存度が高いともいえるが)、マイクロソフトは「Hey, Scripting Guy!」と題した記事により、スクリプティング手法の啓蒙(けいもう)に努めている。現在、「Hey, Scripting Guy!」 の主な活動の場はブログとなっているが、そのアーカイブはMicrosoft TechNetサイトのTechNetスクリプト・センターからも参照できる。同時に、Twitterにもアカウントを持っており、読者からの質問にダイレクトに回答することもあるようだ。

■Hey, Scripting Guy! に関連するサイト

 Windows PowerShell 1.0登場以降もActive Directoryの管理ツールとしてのWindows Scriptの地位は揺るぎないものであったが、Windows PowerShell 2.0の登場に加え、Windows Server 2008 R2にActive Directory専用のPowerShellモジュールが実装されたいま、スクリプト・ガイたちは確実にPowerShellに目を向け始めている。なぜならば、それらがあまりにも使い勝手がよく、スクリプト作成の負荷から管理者を解放できることが明白だからだ。次の表にWindows PowerShell 2.0のActive Directory関連コマンドレットの一覧を示す。

コマンドレット名
Add-ADComputerServiceAccount Get-ADUserResultantPasswordPolicy
Add-ADDomainControllerPasswordReplicationPolicy Install-ADServiceAccount
Add-ADFineGrainedPasswordPolicySubject Move-ADDirectoryServer
Add-ADGroupMember Move-ADDirectoryServerOperationMasterRole
Add-ADPrincipalGroupMembership Move-ADObject
Clear-ADAccountExpiration Remove-ADObject
Disable-ADAccount Remove-ADOrganizationalUnit
Disable-ADOptionalFeature Remove-ADPrincipalGroupMembership
Enable-ADAccount Remove-ADServiceAccount
Enable-ADOptionalFeature Remove-ADUser
Get-ADAccountAuthorizationGroup Rename-ADObject
Get-ADAccountResultantPasswordReplicationPolicy Reset-ADServiceAccountPassword
Get-ADComputer Restore-ADObject
Get-ADComputerServiceAccount Search-ADAccount
Get-ADDefaultDomainPasswordPolicy Set-ADAccountControl
Get-ADDomain Set-ADAccountExpiration
Get-ADDomainController Set-ADAccountPassword
Get-ADDomainControllerPasswordReplicationPolicy Set-ADComputer
Get-ADDomainControllerPasswordReplicationPolicyUsage Set-ADDefaultDomainPasswordPolicy
Get-ADFineGrainedPasswordPolicy Set-ADDomain
Get-ADFineGrainedPasswordPolicySubject Set-ADDomainMode
Get-ADForest Set-ADFineGrainedPasswordPolicy
Get-ADGroup Set-ADForest
Get-ADGroupMember Set-ADForestMode
Get-ADObject Set-ADGroup
Get-ADOptionalFeature Set-ADObject
Get-ADOrganizationalUnit Set-ADOrganizationalUnit
Get-ADPrincipalGroupMembership Set-ADServiceAccount
Get-ADRootDSE Set-ADUser
Get-ADServiceAccount Uninstall-ADServiceAccount
Get-ADUser Unlock-ADAccount
Active Directoryコマンドレット一覧

 ここでは簡単に、PowerShell Active Directoryモジュールの使いやすさをご紹介する。

 まずは画面1をご覧いただきたい。これはWindows PowerShellのコンソールだ。画面では、初めに「Import-Module activedirectory」でActive Directory用のPowerShellモジュールを読み込んでいる((1))。面白いのは次からで、「cd AD:」((2))によって、Active Directoryプロバイダのドライブに移動している。さらに、「cd '.\DC=contoso,DC=com'」((4))によってドメインのルートに移動し、「dir」で配下のオブジェクト一覧を表示する((3)(5))。まるで、ファイル・システムをブラウズするかのごとく、Active Directoryの中を参照できる。

画面1 PowerShell Active Directoryモジュールの使用例
PowerShell Active Directoryモジュールを使用すると、Active Directoryツリーをファイル・システムのようにブラウズできる。
  (1)Active Directoryモジュールの使用。
  (2)Active Directoryプロバイダのドライブへの移動。
  (3)dirコマンドによる一覧の表示。
  (4)contoso.comドメインのルートへの移動。
  (5)一覧の表示。

 これは単に、ドメインのオブジェクトをファイル・システムのようにdirコマンドでブラウズできるところがすごい、という単純な話ではない。「dir(Get-ChildItem)」や「cd(Set-Location)」のような共通のコマンドレットが、現在のプロバイダ(ここではActive Directory)に合わせた動きをするという点に注目していただきたい。これはレジストリでも同様であり、例えば「cd hklm:」と入力すれば、レジストリのHKEY_LOCAL_MACHINEを起点としたツリー構造をブラウズできる。

 次の画面では、さらに階層を 「CN=Users」 に進め、「New-ADUser -Name junichia -DisplayName "Junichi Anno"」によって新しいユーザーID(junichia)を作成している((1))。作成したユーザーIDは「Get-ADUser -Identity junichia」によって参照できる((2))。もちろん、カレントの階層を別のOUにしておけば、そこにユーザーを作成することができるし、「-path」パラメータによって作成するパスを明示的に指定することも可能だ。「ユーザーを作成する」という作業をWindows Scriptで行おうとすれば、ドメインへの接続や所定のLDAP階層への移動などといった「お約束」を毎回書く必要があり、少なくとも5〜10行程度のスクリプトを作成しなければならない。さらに、スクリプトを修正するたびにファイルの保存が必要になるため、ここで示したPowerShellの手軽さと比べれば格段に手間が掛かることが分かる。

画面2 ユーザーの作成例
Active Directory内の任意の階層で直接ユーザーを作成できる。
  (1)ユーザーの作成。
  (2)作成したユーザーの確認。

 ご覧いただいたように、Active Directoryコマンドレット群は、利用者に対して余計な作業を行わせないように最大限配慮されており、事実、使い始めるとあまりの便利さに手放せなくなる。

 もう少しだけ確実に管理者の心をつかむと思われる例を挙げておく。

 Windows Scriptを使用してユーザーの設定を行う場合、最も面倒な作業の1つがUserAccountControlフラグの設定だ。Active Directoryモジュールには、UserAccountControlフラグを簡単に設定できる「Set-AccountControl」コマンドレットが用意されている。このコマンドレットを使用することで、これまでビット・フラグでしか扱えなかった値を簡単に設定できるようになった。例えば、「ユーザーにパスワードの変更を許可しない」ように設定する場合には、以下のように入力するだけでよい。

Set-ADAccountControl -Identity junichia -CannotChangePassword $True

 もう1つ重要なコマンドレットを紹介する。それは特定条件下のユーザーを検索できる「Search-ADAccount」コマンドレットだ。このコマンドレットの特徴も前出の「Set-AccountControl」と同様、Windows Scriptでのコーディングが面倒な作業を完全に削減してくれるところにある。

 例えば、アカウントが無効なユーザーの一覧を検索するには次のように入力すればよい。

Search-ADAccount -AccountDisabled -UserOnly

 「-AccountDisabled」が「無効なユーザー」を示す条件式となっている。なお、デフォルトではコンピュータ・アカウントも含めた結果が出力されるが、ユーザー・アカウントのみを検索するには「-UsersOnly」を付加すればよい。ほかにも、次のようなパラメータが用意されており、ユーザーの準備にかかわる作業が大幅に削減できる。それぞれの使い方は筆者のブログ・サイトなどを参考にしていただきたい。

パラメータ 検索条件
-AccountDisabled すでに無効化されたアカウント
-AccountExpired すでに有効期限の切れたアカウント
-LockedOut ロックされたアカウント
-PasswordExpired パスワードの有効期限が切れているアカウント
-PasswordNeverExpires パスワードが無期限に設定されているアカウント
-AccountExpiring 指定した日付または日数以内に有効期限が切れるアカウント
-AccountInactive 指定した日数以上または日付以降ログオンしていないアカウント
Search-ADAccountコマンドレットの検索条件パラメータ

管理されたサービス・アカウント

 Windowsにおけるアカウント管理で、煩雑な作業の1つとして挙げられるのが、サービス・アカウントの管理だ。独自の業務アプリケーションや、サードパーティ製品が使用するサービス・アカウントの管理は、ITシステムが拡大するにつれて増えていき、パスワードの管理どころか、アカウント)の存在さえも忘れられたものになってしまいがちだ。そのため、多くの現場でadministratorをサービス・アカウントとして使用してしまうという危険な状況や、サービスで使用しているアカウントを間違えて削除してしまうなどといったことが頻発しているのではないだろうか。また、パスワード管理が自動化されたデフォルトのアカウントである「Local Service」「Network Service」「Local System」は、システム共通のアカウントであるため(関連記事参照)、アプリケーションに応じた独自の権限を与えることができない場合が多く、使い勝手が悪い。

 こうした状況を改善するための対策として実装されたのが「管理されたサービス・アカウント」と呼ばれる機能だ。

 本機能を使用することで、サービス・アカウントに設定するパスワードの管理を、完全にOS側に任せることができるだけでなく、サービス・プリンシパル名の登録も自動的に行われるようになる。

Active Directory管理センター

 Active Directory管理センターは、従来の管理ツールを置き換えるものとして提供されているものではない。「Active Directory ユーザーとコンピュータ」をはじめとする従来の管理コンソールはMMC(Microsoft Management Console)をベースに実装されており、Windows Server 2008 R2でも使用可能である。Active Directory管理センターは、Windows Server 2008 R2におけるアーキテクチャの変更に対応したMUX(Management User Experience)と呼ばれるプラットフォームをベースに実装されている。前ページの図2「Webサービス・ベースのアーキテクチャ」を見ると分かるとおり、MUXがWPF(Windows Presentation Foundation)上に位置していることから、マイクロソフトが管理面においてもUX(User Experience)を強く意識していることが分かる。

画面3 Active Directory管理センター
新しい管理ツールの[Active Directory管理センター]。これはWCF上で動作するツールであり、UXを強く意識した作りになっている。Active DirectoryのPowerShellモジュールを呼び出すためのGUIツールと考えればよい。Windows Server 2008 R2では、従来の[Active Directory ユーザーとコンピュータ]などのツールもそのまま利用できるが、新しい管理センター・ツールを使えば、より快適にActive Directoryを管理できる。

 もちろん管理センターの特徴はそれだけではない。

 今後の管理コンソールの方向性を示す大きな特徴として、PowerShellコマンドレットをベースとしたGUIである点が挙げられる。Active Directory のPowerShellモジュールの項でも解説したとおり、今後のActive Directoryの管理はPowerShellが中心となっていく。現在でも十分過ぎるほどのコマンドレットが用意されていることを考えれば、管理コンソールはPowerShellを呼び出すためのGUIであっても問題がないはずだ。事実、Active Directory管理センターはそのように実装されている。そのため、随所に、コマンドレットのパラメータを意識した設定項目が見られる。

画面4 Search-ADAccountコマンドレットのパラメータを思わせる検索条件
先ほどのSearch-ADAccountコマンドレットのパラメータと同様の検索条件指定が可能になっている。

 Active Directory管理センターでは従来から指摘されていた問題点も解消されている。1つが大量データのロード時間だ。例えばActive Directoryに1万人のユーザーが存在し、それらがUsersコンテナにすべて格納されている場合、「Active Directory ユーザーとコンピュータ」ツールでは、すべてのユーザーが読み込まれるまで画面が操作できなくなる。しかしActive Directory管理センターではデータベースからの読み込みが非同期に行われるため、画面の反応が途中で止まってしまうということがない。

 また、複数ドメイン、複数フォレストにも対応しているため、大規模なActive Directory環境においてフォレストが変わるたびに別の管理コンソールに移動するといった手間も省くことができる。

 このほか、頻繁にアクセスするノードを管理コンソール上に保存するなど、使いやすいようにカスタマイズ可能な機能や、クエリーをLDAPフィルタ形式に変換して表示するなど、きめの細かな対応がなされている。


 今回はWindows Server 2008 R2のActive Directoryにおける新機能の概要について解説した。次回はグループ・ポリシーの新機能について解説する。


「  Windows Server 2008 R2の真価 ―― 実質新世代サーバOSの真の実力を知る ―― 」のインデックス

  Windows Server 2008 R2の真価 ―― 実質新世代サーバOSの真の実力を知る ―― 

前のページへ 1|2|3       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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