【Windows Server】アクセスベースの列挙(ABE)を有効化する方法を徹底解説
アクセスベースの列挙(Access-Based Enumeration:ABE)とは、ネットワーク共有フォルダ上のオブジェクト(ファイルやフォルダ)のうち、ユーザーがNTFS権限(読み取りまたは一覧表示)を持たないものを非表示にできる機能です。これにより、共有フォルダ内のデータの機密性が向上し(フォルダ構造やファイル名を隠蔽できる)、ユーザーがアクセス権のない余計なデータを目にしなくなるため使い勝手も改善されます。さらに重要な点として、システム管理者を「なんでこのフォルダにアクセスできないんですか!」といったユーザーからの問い合わせから解放してくれます。
この記事では、アクセスベースの列挙(ABE)の仕組み、設定方法、各Windowsバージョンでの活用方法について詳しく解説します。
Windowsにおける共有フォルダへのアクセスの仕組み
Windowsのネットワーク共有フォルダ技術の課題の一つは、デフォルトではすべてのユーザーが少なくともフォルダの構造とファイル・ディレクトリの一覧を見ることができてしまう点です。これは、NTFS権限を持っていないファイルやフォルダも含まれます。権限のないファイルやフォルダを開こうとした場合、ユーザーは「アクセスが拒否されました」というエラーを受け取ります。アクセス権のないファイルやフォルダを、そもそも権限のないユーザーから隠せばよいのではないでしょうか? それを実現するのがアクセスベースの列挙(ABE)です。共有フォルダでABEを有効にすることで、同じネットワーク共有に対しても、ユーザーごとの個別のアクセス権限(ACL)に基づいて、表示されるフォルダやファイルの一覧が異なるようになります。
SMB経由で共有フォルダにアクセスする際、クライアントとサーバーの間ではどのようなやり取りが行われるのでしょうか?
- クライアントがサーバーに対し、ネットワーク共有フォルダ内のディレクトリへのアクセスを要求します。
- サーバー上のLanmanServerサービスが、そのフォルダへのユーザーのアクセス権限を確認します。
- アクセスが許可されている場合(NTFS権限:内容の一覧表示、読み取り、または書き込み)、ユーザーはディレクトリの内容を表示できます。
- 続いてユーザーは、同じ要領でファイルやサブフォルダへのアクセスを要求します(ネットワークフォルダで特定のファイルを誰が開いたかを確認する方法もあります)。
- アクセスが拒否された場合、ユーザーにはその旨が通知されます。
この流れから分かるように、サーバーはまずフォルダの全内容をユーザーに表示し、NTFS権限のチェックはユーザーが特定のファイルやフォルダを開こうとした時点で初めて行われます。
アクセスベースの列挙(ABE)を使えば、ユーザーがフォルダ内容の一覧を受け取る前に、ファイルシステムオブジェクトへのアクセス権限をチェックできます。その結果、最終的な一覧にはユーザーがNTFS権限(最低でも読み取り権限)を持つオブジェクトのみが含まれ、アクセスできないリソースは単純に表示されなくなります(非表示になります)。
つまり、ある部門(例:倉庫部門)のユーザーには、共有フォルダ(\\filesrv1\docs)内のファイルやフォルダの一覧が1通り見え、別の部門(例:IT部門)で別のWindowsセキュリティグループに所属するユーザーには、同じネットワークフォルダ内でも異なるサブフォルダの一覧が表示されます。

上記の例では、倉庫部門のユーザーには「Public」と「Warehouse」の2つのフォルダのみが表示されています。

一方、IT部門のユーザーには、「Public」と「Warehouse」に加えて、さらに5つのディレクトリが同じネットワークフォルダ内に表示されています。
ABE使用時の注意点:サーバーへの負荷
WindowsファイルサーバーでABEを使用する場合の主な欠点は、サーバーへの追加負荷です。特に高負荷のファイルサーバーでは顕著に現れます。表示対象のディレクトリ内のオブジェクト数が多く、多数のユーザーがファイルを開くほど遅延は長くなります。Microsoftによると、表示対象のフォルダに15,000個のオブジェクト(ファイルとディレクトリ)がある場合、フォルダを開くのに1〜3秒ほど余分に時間がかかるとのことです。そのため、共有フォルダの構造を設計する際は、階層的で分かりやすいサブフォルダ構造を作ることに十分注意し、フォルダを開く際の遅延をなるべく感じさせないようにすることが推奨されます。
注: アクセスベースの列挙は、ファイルサーバー上のネットワーク共有フォルダ自体の一覧を隠すものではなく、その中身だけを隠すものである点に注意してください。共有フォルダ自体をユーザーから隠したい場合は、共有名の末尾に「$」記号を付ける必要があります。
ABEは、コマンドプロンプト(abecmd.exeユーティリティ)、GUI、PowerShell、または専用APIから管理できます。
アクセスベースの列挙(ABE)の制限事項
Windowsのアクセスベースの列挙は、以下の場合には機能しません。
- Windows XPまたはService Pack 1未適用のWindows Server 2003をファイルサーバーとして使用している場合
- ローカル(サーバー本体から直接)でディレクトリを閲覧している場合
- ローカルのファイルサーバー管理者グループのメンバーである場合(常にファイルの一覧全体が表示されます)
Windows Server 2008 / 2008 R2でのABEの利用方法
Windows Server 2008 / 2008 R2でアクセスベースの列挙機能を使うために、追加コンポーネントのインストールは不要です。ABEの管理機能はすでにWindowsのGUIに組み込まれています。Windows Server 2008 / 2008 R2で特定のフォルダに対してアクセスベースの列挙を有効にするには、MMC管理コンソールの[共有と記憶域の管理](スタート → プログラム → 管理ツール → 共有と記憶域の管理)を開きます。対象の共有のプロパティを開き、[詳細設定]に進み、[アクセスベースの列挙を有効にする]にチェックを入れます。

Windows Server 2012 R2 / 2016でのアクセスベースの列挙の設定
Windows Server 2012 R2 / 2016でのABEの設定も非常に簡単です。Windows Server 2012でABEを有効にするには、まず[ファイル サービスと記憶域サービス]の役割をインストールし、次にサーバーマネージャーで共有のプロパティを開きます。

[設定]セクションで[アクセスベースの列挙を有効にする]オプションにチェックを入れます。

Windows Server 2003へのアクセスベースの列挙の実装
現在サポートが終了しているWindows Server 2003では、Service Pack 1以降でABEがサポートされるようになりました。Windows Server 2003 SP1(以降)でアクセスベースの列挙を有効にするには、https://www.microsoft.com/en-us/download/details.aspx?id=17510 からパッケージをダウンロードしてインストールする必要があります。インストール時に、サーバー上のすべての共有フォルダに対してABEを有効にするか、手動で設定するかを選択します。後者を選んだ場合は、インストール後にネットワーク共有のプロパティに「アクセスベースの列挙」という新しいタブが表示されます。

特定のフォルダに対してABEを有効にするには、そのプロパティで[この共有フォルダでアクセスベースの列挙を有効にする]オプションにチェックを入れます。

なお、Windows Server 2003はDFSベースのアクセスベースの列挙にも対応していますが、設定はコマンドプロンプトからcaclsコマンドを使用して行う必要があります。
コマンドプロンプトからのABE管理
アクセスベースの列挙の設定は、Abecmd.exeユーティリティを使用してコマンドプロンプトから管理できます。このツールは、Windows Server 2003 SP1用のアクセスベースの列挙パッケージに含まれています(前述のリンクを参照)。
Abecmd.exeを使用すると、すべてのディレクトリに対して一括でABEを有効化することも、一部のディレクトリのみに適用することも可能です。次のコマンドは、すべての共有に対してアクセスベースの列挙を有効にします。
abecmd /enable /all
特定のフォルダ(例:「Docs」というネットワーク共有フォルダ)に対しては、次のコマンドを使用します。
abecmd /enable Docs
PowerShellによるアクセスベースの列挙の管理
SmbShare PowerShellモジュール(Windows 10 / 8.1およびWindows Server 2016 / 2012 R2にデフォルトでインストール済み)を使用すると、特定のフォルダのアクセスベースの列挙設定を管理できます。まず、特定の共有フォルダのプロパティを一覧表示してみましょう。
Get-SmbShare Install|fl *

FolderEnumerationMode属性の値に注目してください。この例では値がUnrestrictedになっています。これは、このフォルダでABEが無効であることを意味します。
サーバー上のすべての共有フォルダについてABEの状態を確認するには、次のコマンドを実行します。
Get-SmbShare | Select-Object Name,FolderEnumerationMode
特定のフォルダでABEを有効にするには:
Get-SmbShare Install | Set-SmbShare -FolderEnumerationMode AccessBased
公開されているすべてのネットワークフォルダ(管理共有のADMIN$、C$、E$、IPC$などを含む)に対してアクセスベースの列挙を有効にするには、次のコマンドを実行します。
Get-SmbShare | Set-SmbShare -FolderEnumerationMode AccessBased
ABEを無効にするには、次のコマンドを使用します。
Get-SmbShare Install | Set-SmbShare -FolderEnumerationMode Unrestricted
Windows 10 / 8.1 / 7でのアクセスベースの列挙
多くのユーザー、特にホームネットワークやSOHO環境でも、アクセスベースの列挙機能を利用したいと考えています。しかし問題は、MicrosoftのクライアントOSにはABEを管理するためのグラフィカルインターフェイスもコマンドラインインターフェイスも用意されていないことです。
Windows 10(Server 2016)およびWindows 8.1(Server 2012 R2)では、前述のセクションのようにPowerShellを使ってアクセスベースの列挙を管理できます。それ以前のバージョンのWindowsでは、最新版のPowerShell(バージョン5.0以上)をインストールするか、Windows Server 2003パッケージに含まれるabecmd.exeユーティリティを使用します。abecmd.exeはクライアントOSでも問題なく動作します。Windows Server 2003のアクセスベースの列挙パッケージはWindows 10、8.1、7にはインストールできないため、まずWindows Server 2003にインストールし、C:\windows\system32ディレクトリからクライアント側の同じフォルダへコピーする必要があります。その後、前述のコマンドでABEを有効化できます。
注: 企業環境では、ABEはDFSフォルダと組み合わせることで絶大な効果を発揮します。ユーザーからフォルダを隠し、より使いやすい共通フォルダツリーの構造を提供できるからです。DFSでABEを有効にするには、DFS管理コンソールまたはdfsutil.exeを使用します。
dfsutil property abde enable \\namespace_root
さらに、ADドメイン内のコンピューターに対しては、GPO(グループポリシー)を使ってABEを有効にすることもできます。これはGPPの次のセクションで設定可能です:[コンピューターの構成] → [基本設定] → [Windowsの設定] → [ネットワーク共有]。

ネットワークフォルダのプロパティには[アクセスベースの列挙]オプションがあり、値を[有効]に変更すると、このGPOで作成されたすべての共有フォルダに対してABEモードが有効になります。
-
Windows 11でスタートアップフォルダにアクセスする方法
Windows 11は、刷新されたデザインと数々の新機能を備えた大型アップデートとして、多くのユーザーの注目を集めています。お気に入りの機能へすばやくアクセスできるようになり、創造性を発揮しながら作業を進められる新しいワークスペースを提供してくれます。 スタートアップ」から直接アクセスできましたが、Windows 10以降ではスタートアップフォルダがドライブの深い階層に隠されているため、簡単にはたどり着けなくなっています。 ご安心ください。この記事では、Windows 11でスタートアップフォルダにアクセスするためのさまざまな方法をわかりやすく解説します。 関連記事:リモートアクセスで複
-
Windows 11でフォルダのアクセス拒否エラーを解決する6つの方法
Windows 11でフォルダにアクセスしようとした際、「アクセスが拒否されました」というエラーが表示されて困っていませんか?フォルダやファイルの中身を開けず、画面に警告が出てしまうケースは少なくありません。この記事では、Windows 11で発生するフォルダのアクセス拒否エラーを解決するための実用的な対処法を6つご紹介します。 アクセス拒否エラーが発生する主な原因 Windowsが特定のフォルダやファイルへのアクセス権限がないと通知してくる場合、主な原因として以下のようなものが考えられます。 管理者権限の制限や不適切な設定 フォルダのアクセス許可設定の誤り Googleドライブとの同期に