「同じOUに所属している一部のユーザーだけ、ドライブマップを別の設定にしたい」——Active Directoryを運用していると、必ずこの手の要望が飛んできます。
GPO(グループポリシーオブジェクト)はOUにリンクした時点で、そのOU配下の全ユーザー(全コンピューター)に適用されます。一部だけに絞りたいときに使うのがセキュリティフィルターですが、ここには「設定したはずなのに、誰にも適用されなくなる」という有名な落とし穴があります。
原因は2016年6月の更新プログラム、MS16-072です。
この記事では、セキュリティフィルターの仕組みと設定手順、そしてMS16-072を踏まえた正しい設定方法までをまとめます。
- セキュリティフィルターでOU内の特定ユーザーだけにGPOを適用する手順
- Authenticated Usersを外すとGPOが適用されなくなるMS16-072の理由と対処
- Denyによる除外設定、gpresultでの確認方法、WMIフィルターとの使い分け
結論|セキュリティフィルターで特定ユーザーに絞り、委任タブで読み取りを戻す
先に結論だけまとめます。
OU内の一部のユーザーにだけGPOを適用したいときは、GPMC(グループポリシーの管理コンソール)のスコープタブ「セキュリティ フィルター処理」で対象グループを指定します。
ただしAuthenticated Usersを外しただけでは、GPOが誰にも適用されなくなります。
委任タブでAuthenticated Users(またはDomain Computers)に「読み取り」権限だけを付け直すところまでがワンセットです。
この「読み取りを戻す」という一手間が必要な理由がMS16-072です。
ここが一番ハマるポイントなので、後半で詳しく解説します。
なぜOUのリンクだけでは絞りきれないのか
GPOのリンク先はサイト/ドメイン/OUの3つしかありません。つまりGPOの適用範囲を分けたいなら、本来はOU構造そのものを分ける必要があります。
しかし現場では、次のような「OU構造とは一致しない例外」が必ず出てきます。
- 同じ部署なのでOUは分けたくない
- 特定の担当者だけドライブマップを変えたい
- 一部の端末だけUSBメモリを許可したい
例外が出るたびにOUを切り刻んでいくと、OU構造はあっという間に崩壊します。そこで登場するのがセキュリティフィルターです。
セキュリティフィルターの仕組み
GPOもActive Directory上のオブジェクトなので、ACL(アクセス制御リスト)を持っています。GPOが適用される条件は、対象が次の2つの権限を両方持っていることです。
| 権限 | 意味 |
|---|---|
| 読み取り(Read) | GPOの中身を読める |
| グループポリシーの適用(Apply group policy) | 実際に適用対象になる |
既定ではAuthenticated Usersにこの両方が付いています。だからOUにリンクするだけで、配下の全員に適用されるというわけです。
設定手順
ここでは「営業部OUの中で、GPO_DriveMap_ApplyグループのメンバーにだけGPOを適用する」ケースを例に、GPMC(グループポリシーの管理)での手順を示します。
Active Directoryユーザーとコンピューターで、適用対象をまとめるセキュリティグループを作成し、対象ユーザーを所属させます。ここでは GPO_DriveMap_Apply という名前にします。
GPMCで対象のGPOを選択し、スコープタブを開きます。「セキュリティ フィルター処理」の Authenticated Users を選択して削除します。
同じスコープタブの「追加」から、STEP1で作成した GPO_DriveMap_Apply を指定します。これで「読み取り」と「グループポリシーの適用」の両方が付与されます。
委任タブを開き、「追加」から Authenticated Users を追加します。続いて表示されるアクセス許可のプルダウンで「読み取り」を選びます。
このダイアログのプルダウンには「読み取り」「設定の編集」「設定の編集、削除、セキュリティの変更」しかなく、「グループポリシーの適用」という選択肢はそもそも存在しません。つまりここから追加する限り、適用権限が付いてしまう心配はありません。
グループへの追加はログオン時に評価されるため、対象ユーザーを一度サインアウトさせてから再ログオンし、gpupdate /force と gpresult /r で適用状況を確認します。
個別ユーザーではなくグループで絞る
セキュリティフィルターにはユーザーオブジェクトを直接指定することもできますが、原則グループを使います。
ユーザー直指定にすると、人事異動のたびにGPOそのものを触ることになりますし、「なぜこの人だけ設定が違うのか」がGPOを開かないと分からなくなります。GPO_〇〇_Apply のような命名でグループを作っておけば、後任者が見ても意図を読み取れます。
ハマりどころ|MS16-072でGPOが適用されなくなる
ここが本題です。2016年6月の更新プログラム(MS16-072 / KB3163622)以降、ユーザー構成GPOの取得が、ユーザーのセキュリティコンテキストではなくコンピューターのセキュリティコンテキストで行われるように変更されました。
つまり、GPOを読みに行く主体はログオンユーザーではなくコンピューターアカウントです。ドメイン参加時に自動作成される、末尾に $ が付く PC01$ のようなアカウントを指します(Windowsのアカウント種別の全体像はAdministrator、DefaultAccount、Guestアカウントの違いと役割で整理しています)。
ここでAuthenticated Usersをセキュリティフィルターから完全に削除してしまうと、そこに含まれていたコンピューターアカウントがGPOへの読み取り権限を失います。結果としてGPOを読めない → 対象ユーザーにも適用されないという状態になります。
「フィルターは正しく設定したのに、gpresultに出てこない」というトラブルの大半はこれが原因です。AD側の設定ミスやレプリケーション遅延を疑う前に、まずGPOの読み取り権限を確認してください。
対処|委任タブで「読み取り」だけを付与する
GPOの委任タブで、以下のどちらかに「読み取り」権限のみを付与します。
- Authenticated Users(コンピューターアカウントも含まれる)
- Domain Computers(ドメイン参加コンピューターだけに限定したい場合)
「グループポリシーの適用」まで付けてしまうと、結局全員に適用されて絞り込みの意味がなくなります。読み取りだけ、が鉄則です。
PowerShellなら権限の確認と変更が一気にできる
GPMCで「削除して追加し直す」のは手間なので、GroupPolicyモジュールのコマンドレットを使うほうが確実です。
# 現在のGPO権限を一覧で確認する
Get-GPPermission -Name "DriveMap_Sales" -All
# Authenticated Users を「読み取りのみ」に変更する(MS16-072 対策)
Set-GPPermission -Name "DriveMap_Sales" -TargetName "Authenticated Users" -TargetType Group -PermissionLevel GpoRead -Replace
# 適用対象グループに「読み取り+グループポリシーの適用」を付与する
Set-GPPermission -Name "DriveMap_Sales" -TargetName "GPO_DriveMap_Apply" -TargetType Group -PermissionLevel GpoApplyGpoRead が「読み取り」、GpoApply が「読み取り+グループポリシーの適用」に相当します。既存の権限レベルを下げる(GpoApply → GpoRead)場合は -Replace が必要です。付け忘れると既存の権限が残り、意図した絞り込みになりません。
逆に「特定のユーザーだけ除外したい」場合
対象がほぼ全員で、一部だけ外したいケースでは、フィルターで絞るよりもDeny(拒否)を使うほうが素直です。
- GPOの委任タブから「詳細設定」を開く
- 除外したいグループを追加する
- 「グループポリシーの適用」の拒否にチェックを入れる
拒否は許可より優先されるため、そのグループだけが適用対象から外れます。この方法ならセキュリティフィルターはAuthenticated Usersのままでよいので、MS16-072の問題も起きません。
Denyはスコープタブのセキュリティフィルターには表示されません。委任タブの詳細設定を開かないと存在に気づけないため、引き継ぎ時の地雷になりやすい設定です。設定したら必ずドキュメントに残しておきましょう。
適用結果の確認方法
設定後は、対象端末にログオンして次のコマンドで確認します。
# ユーザー側の適用結果を確認
gpresult /r /scope:user
# HTMLレポートで詳細を出力
gpresult /h C:\temp\gpresult.html
# ポリシーの再適用
gpupdate /forcegpresult /r の「適用されなかったグループ ポリシー オブジェクト」に フィルター処理を行いました: 拒否 (セキュリティ) と出ていれば、フィルターが効いている状態です。
問題は、意図して適用したい相手にこの表示が出ている場合です。そのときは設定内容ではなく、MS16-072による読み取り権限の不足をまず疑ってください。
セキュリティフィルター以外の絞り込み手段
絞り込みの手段はセキュリティフィルターだけではありません。要件によって使い分けます。
| 手段 | 向いているケース |
|---|---|
| セキュリティフィルター | 特定のユーザー/グループに絞る(今回のケース) |
| WMIフィルター | OSバージョン、機種、メモリ容量など端末の属性で絞る |
| 項目レベルのターゲット設定 | グループポリシーの環境設定内で、設定単位に細かく条件分岐したい |
| ループバック処理 | 「この端末にログオンした人全員」にユーザー設定を当てたい(共用PC等) |
WMIフィルターはポリシー適用のたびに評価が走るため、多用するとログオンや起動が遅くなります。ユーザー単位で分けたいだけなら、セキュリティフィルターのほうが軽量です。
よくある質問
- フィルター用グループにユーザーを追加したのに、GPOが適用されません。
グループのメンバーシップはログオン時に取得するアクセストークンに反映されるため、追加した直後は反映されません。対象ユーザーを一度サインアウトさせ、再ログオンしてから
gpupdate /forceを実行してください。コンピューターアカウントをグループに追加した場合は、端末の再起動が必要です。- コンピューターの構成のGPOを、ユーザーグループで絞り込めますか?
絞り込めません。コンピューターの構成はコンピューターアカウントに対して適用されるため、セキュリティフィルターにもコンピューターアカウントを含むグループを指定する必要があります。「ユーザーグループを指定したのにコンピューター設定が効かない」というのは、意外とよくある勘違いです。
- MS16-072の対策として、更新プログラムをアンインストールするのはアリですか?
おすすめしません。MS16-072はグループポリシーに対する中間者攻撃に対処するセキュリティ更新で、現在のWindowsではこの挙動が標準です。アンインストールではなく、委任タブで読み取り権限を付与する方法で対応してください。
- 既存のGPOがMS16-072の影響を受けていないか、まとめて確認できますか?
PowerShellで全GPOの権限を洗い出すのが確実です。
Get-GPO -All | ForEach-Object { Get-GPPermission -Guid $_.Id -All }のようにGPOのIDを1つずつ渡して回し、Authenticated UsersもDomain Computersも読み取り権限を持たないGPOを探します。過去にセキュリティフィルターを触った覚えのあるGPOは、優先的に確認しておくとよいでしょう。
まとめ
- OU内の特定ユーザーだけにGPOを適用するならセキュリティフィルターを使う
- Authenticated Usersを外したら、委任タブで「読み取り」権限を戻す(MS16-072対策)
- フィルターはユーザー直指定ではなくグループで行う
- Denyはスコープタブに表示されないので、設定したら必ず記録を残す
セキュリティフィルターは、OU設計をきれいに保つための逃げ道として使える一方、乱用すると「GPOの一覧を見ても実際の適用範囲が分からない」状態を招きます。
基本はOU設計で分け、どうしても構造と合わない例外だけをフィルターで処理する。この使い分けが、運用を破綻させないための現実的なラインだと思います。
ドメインに参加していない端末はどうする?
ここまではActive Directory配下の話でした。一方でドメインに参加していない端末(ワークグループ運用)では、そもそもGPOをADから配れません。セキュリティフィルターで絞る以前に、1台ずつ gpedit.msc を開いてローカルグループポリシーを設定していくことになります。
キッティングのたびに30〜40分かけて同じ設定を繰り返す——この作業をLGPO.exeなどの外部ツールを使わず、PowerShellだけで数分に短縮するツールと、その裏側の仕組みをnoteにまとめています。
noteに収録している内容
- ローカルGPO 約40項目を一括適用するPowerShellスクリプト本体(LGPO.exe不要・Windows標準機能のみ)
- secedit.sdb / Registry.pol / gpt.ini の内部構造の解説(設定が「書けているのに無反映」になる理由)
- 確認・適用・復元の3モードの動作デモ(バックアップからの巻き戻しに対応)
- 設定項目一覧(40項目)と購入前FAQ
価格:1,980円(先行50部限定価格・以降は2,980円を予定)
仕組みの解説とサンプルコードまでは無料で読めます。

※ 対象はワークグループ運用のWindows Pro以上です。ドメイン参加済みPCとWindows Homeエディションは対象外のため、本記事のようなAD環境ではそのままは使えません。

コメント