第2回 グループ・ポリシーとは何か:グループ・ポリシーのしくみ(5/5 ページ)
Active Directoryによる集中管理を可能にするGP。NTのシステム・ポリシーとの違いを明らかにし、GPオブジェクトの内部を探ってみよう。
すでに述べたとおり、「クライアント側拡張(CSE:Client Side Extension)」は、サーバ側拡張によって作成されたGPOを各コンピュータ上で実際に適用するコンポーネントである。グループ・ポリシーの中でも大きなウエートを占めるので、詳しく見ていこう。
CSEの実体は、各コンピュータ上にDLLとして存在する。GPO内のどのポリシーの適用をどのCSEが担当しているかは、サーバ側拡張と同様、グループ・ポリシー・エディタのツリー分類にある程度表れている。
グループ・ポリシー・エディタ上のポリシー分類とCSE
どのCSEがどのポリシーを担当しているかは、サーバ側拡張と同様、グループ・ポリシー・エディタのツリーにある程度表れている。例えば、画面の(1) 〜(6) のツリーには、それぞれ適用を担当するCSEがある。
(1)GPTExt.dllに実体のあるCSEが担当。
(2)SCECli.dllに実体のあるCSEが担当。
(3)UserEnv.dllに実体のあるCSEが担当。
(4)GPTExt.dllに実体のあるCSEが担当。
(5)IEDKCS32.dllに実体のあるCSEが担当。
(6)UserEnv.dllに実体のあるCSEが担当。
グループ・ポリシーを適用するということは、これらのCSEが、GPOの内容に従って、各CSEなりのやり方でコンピュータを設定していくことだと考えてよい。グループ・ポリシーという大きな枠組みはあるが、ポリシー作成のためにサーバ側拡張が提供するユーザー・インターフェイスがサーバ側拡張ごとに異なっているように、CSEがポリシーを適用するやり方も、CSEごとに異なる。
CSEがどのように動作するのかを次に示しておく。
各コンピュータ上でのCSEの動作
各コンピュータ上でのグループ・ポリシーの適用処理は、Winlogon(≒ログオン画面)で行われる。Winlogon内でグループ・ポリシーのエンジンとして動作するのはUserEnv.dllである。UserEnv.dllは必要に応じてCSEを呼び出し、GPO内にあるポリシーを適用してもらう。UserEnv.dllに呼び出されたCSEは、自分が担当するポリシーの内容に応じて、コンピュータ上のサービス/アプリケーション/ファイル/レジストリなどに変更を加える。
各コンピュータ上でグループ・ポリシーを実際に適用するのは、Winlogon(Winlogon.exe)プロセスである。Winlogonとは、目に見える部分でいえば、ログオン画面のことだと思えばよい。ちなみに、グループ・ポリシーに対応したWindows 2000になって、コンピュータが起動してからログオン画面が入力を受け付けるようになるまでに時間がかかるようになったと感じた人は多いのではないだろうか。その要因の1つは、ここにある(つまり、コンピュータにグループ・ポリシーを適用するために時間がかかっている。Windows XPでは処理方法が工夫され、改善されている)。
WinlogonはUserEnv.dllをロードするが、このUserEnv.dllがグループ・ポリシーのエンジンである。従って、例えばグループ・ポリシー適用時のトラブルシューティングを行う場合は、そのコンピュータ上のUserEnvのログ・ファイルや、Userenvをイベント・ソースとするイベント・ログなどに注意を払う必要がある。ただし、UserEnvはグループ・ポリシー以外の処理も担っているため、例えばUserEnvのログの内容すべてが直接グループ・ポリシーに関するものであるというわけではない。
UserEnv.dllは必要に応じてCSEを呼び出し、GPO内のポリシーを適用してもらう。呼び出されたCSEは、自分の担当するポリシーがGPOでどのように設定されているかを読み取る。そして、そのポリシーを反映させるために、コンピュータ上のサービスやアプリケーション、ファイル、レジストリなどに変更を加える。どのような変更を加えるかは、それぞれのポリシーの内容とそれを担当するCSEによって異なる。
CSEは、各コンピュータのHKEY_LOCAL_MACHINEのSOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensionsキーに登録されている。この登録リストから、Winlogonプロセス(のUserEnv.dll)が必要に応じてCSEをロードし、実行することになる。UserEnv.dll自身がCSEを兼ねている場合もある。
コンピュータに登録されている主なCSEを以下に示しておく(どれが登録されているかは、OSによりやや異なる)。
CSEのGUID | CSEの実体であるDLL | CSEの担当 |
---|---|---|
{0ACDD40C-75AC-47ab-BAA0-BF6DE7E7FE63} | GPTExt.dll | ワイヤレス・ネットワーク |
{25537BA6-77A8-11D2-9B6C-0000F8080861} | FDeploy.dll | フォルダのリダイレクト |
{35378EAC-683F-11D2-A89A-00C04FBBCFA2} | UserEnv.dll | 管理用テンプレート |
{3610eda5-77ef-11d2-8dc5-00c04fa31a66} | DskQuota.dll | ディスクのクォータ |
{426031c0-0b47-4852-b0ca-ac3d37bfcb39} | GPTExt.dll | QoSパケット・スケジューラ |
{42B5FAAE-6536-11d2-AE5A-0000F87571E3} | GPTExt.dll | スクリプト |
{4CFB60C1-FAA6-47f1-89AA-0B18730C9FD3} | IEDKCS32.dll | Internet Explorerのゾーン・マッピング |
{827D319E-6EAC-11D2-A4EA-00C04F79F83A} | SceCli.dll | セキュリティ |
{A2E30F80-D7DE-11d2-BBDE-00C04F86AE3B} | IEDKCS32.dll | Internet Explorerのブランド化 |
{B1BE8D72-6EAC-11D2-A4EA-00C04F79F83A} | SceCli.dll | 暗号化ファイル・システム(EFS)の回復 |
{C631DF4C-088F-4156-B058-4375F0853CD8} | CscUI.dll | オフライン・フォルダ |
{c6dc5466-785a-11d2-84d0-00c04fb169f7} | AppMgmts.dll | ソフトウェアのインストール |
{e437bc1c-aa7d-11d2-a382-00c04f991e27} | GPTExt.dll | IPSec |
CSEのGUIDとその実体のDLL |
コンピュータに登録されている主なCSE
CSEは各コンピュータのレジストリに登録されている。登録先は、HKEY_LOCAL_MACHINEのSOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions\{CSEのGUID}キーである。各CSEのキーには、そのCSEの実体であるDLLファイル名などが登録されている。
グループ・ポリシーのログとGUID
グループ・ポリシーのログなどではCSEがGUIDだけで記載されていることもあるので、その場合は必要ならこれらの登録情報を参照するとよい。
CSEのGUIDが記録されているUserEnvのログの例
これはグループ・ポリシーのエンジンであるUserEnvのログ。グループ・ポリシーの処理も記録されている。中には、CSEがGUIDだけで記載されていることもある。このログのGUIDから、UserEnv.dllに実体のある「管理用テンプレート」のCSEに関するログであることが分かる。
参考情報
ポリシーの適用を実際に行うのはこれらのCSEであるため、特定のポリシーの適用をトラブルシュートするには、担当しているCSEのログなどを得られれば望ましい。例えばセキュリティの設定のポリシーの適用をトラブルシュートするには、イベント・ソースがSceCliとなっているイベント・ログなどを調査する必要がある。
ただし、これまで述べたとおり、CSEがどのように動作するかは各CSE次第であり、すべてのCSEが必ずしも詳細なログを提供しているとは限らない。
また、イベント・ログをフィルタする際などにも、以上のようなCSEのメカニズムを意識しておくと有利である。例えば、GPOの適用全体に関するイベントは、グループ・ポリシーのエンジンであるUserEnvがイベント・ソースとなる。
以下のアプリケーション・イベントのエラー・ログの例では、イベント・ソースはグループ・ポリシーのエンジンであるUserEnvであり、「ディスクのクォータCSE(DskQuota.dll)」の実行に失敗したことを示している。
ディスク・クォータ関連のイベントの例
グループ・ポリシーのエンジンであるUserenvで、「ディスクのクォータ」CSE(DskQuota.dll)の実行に失敗した場合のログの例。
(1)イベント・ソースはUserenv。
(2)実行に失敗したCSE。
レジストリ以外の複雑な設定も可能
このようにGPOに従って動作するCSEを各種用意したことで、レジストリを設定することしかできなかったシステム・ポリシーとは異なり、グループ・ポリシーではレジストリ以外の複雑な設定も行えるようになっている。
主なCSEで行える設定には、次のようなものがある。
「ワイヤレス・ネットワーク」CSE | |
・IEEE 802.1xの設定を行う。アクセスするネットワーク、SSID、認証、暗号化の指定などができる ・ただしLGPOでは動作しない |
|
「フォルダのリダイレクト」CSE | |
・ユーザーのApplication Data、デスクトップ、マイ・ドキュメント、スタート・メニューなどのフォルダを、デフォルトとは別のフォルダ(ファイル・サーバ上の共有フォルダ)にリダイレクト(変更)することができる ・ただしLGPOでは動作しない |
|
「管理用テンプレート」CSE | |
・ポリシー・テンプレート(.admファイル)による定義に基づいて、レジストリ一般に値を設定したり削除したりする。従来のシステム・ポリシーが行っていたことに相当する | |
「スクリプト」CSE | |
・指定したスクリプトを、コンピュータの起動/終了時や、ユーザーのログオン/ログオフ時に実行するよう設定することができる(ユーザー・アカウントに対して設定する旧来のログオン・スクリプトとは別のもの) | |
「セキュリティ」CSE | |
・パスワードやロックアウトのポリシー、監査の設定、ユーザーの権利の割り当て、セキュリティ・オプションの設定、サービス/レジストリ/ファイルのアクセス権、サービスのスタートアップの種類など、セキュリティに関する設定を行う。 ・ただしLGPOでは一部動作しない。 |
|
「Internet Explorerのブランド化」CSE | |
・プロキシの設定、「お気に入り」へのリンク追加など、Internet Explorerのカスタマイズを行うことができる | |
「オフライン・フォルダ」CSE | |
・オフライン・フォルダのキャッシュを、ポリシーに基づいて暗号化したり復号化したりする ・このCSEに対応したサーバ側拡張はない。GPOの作成は、管理用テンプレートで行う |
|
「ソフトウェアのインストール」CSE | |
・Windows Installerを利用したソフトウェアの自動インストールなどを行う ・ただしLGPOでは動作しない |
|
CSEで行われる設定の例 |
このように用途に応じて各種あるCSEの中で、「管理用テンプレート」CSEは、レジストリ一般に値を設定したり削除したりするためのものである。これは従来のシステム・ポリシーの機能に相当するものだが、グループ・ポリシーでは、いくつもある拡張の1つにすぎない。すでに見たとおり、グループ・ポリシーでは、レジストリ一般に値を設定する以外の機能も拡張という形で多数用意されている。
しかし「管理用テンプレート」はポリシーの中でも最も基本的ともいえるものであり、また使用機会も多い。システム・ポリシーの流れをくんでいるため、比較的「枯れた」ポリシーでもある。次回は、この「管理用テンプレート」を中心にGPOの実体を見ていく。
Copyright© Digital Advantage Corp. All Rights Reserved.