特集
Windows Server 2003 SP1レビュー

第6回 アクセス・ベースのディレクトリ列挙ABE

4.ABEとアクセス権

デジタルアドバンテージ 打越 浩幸/DA Lab
2005/07/01

ABE制御のためのAPI

 先ほど簡単に述べたように、ABE機能を利用するには、Windows Server 2003 SP1システムに対して、共有フォルダに対するABE機能を有効にするためのAPIを発行する必要がある。詳しくはインストールされるドキュメントや以下のAPIの解説などを参照してほしいが、「NetShareSetInfo(共有ファイルに関する各種パラメータをセットするためのAPI)」というWin32 APIに対して、SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUMというフラグ・をセットして呼び出せばよい。

 このAPIそのものは従来のWindows NT 4.0の頃から利用できるものであり、フラグのデータもいままでは予約領域だったものである。そのため、このAPIを呼び出す側はWindows Server 2003 SP1でなくても構わず、以前のWindows OSでもよい。実際、abecmd.exeをWindows XP SP2上で(Windows Server 2003 SP1のコンピュータに対して)実行することも可能であった。

ABEとアクセス権の関係

 ABEが有効になっている共有において、ファイルやフォルダが見えるために最低限必要なアクセス権は「読み取り」の許可である。

ABEで見えるようにするためのアクセス許可設定
「読み取り」の許可があれば、ABEが有効な場合に表示されるようになる。
  アクセス権はこの[セキュリティ]タブで設定/確認する。
  ユーザーAliceに対するセキュリティの設定を表示させたところ。
  この「読み取り」の権限があれば、ABEが有効な場合に表示されるようになる。
  「読み取り」アクセス権は実際には複数の権利を合成したものであり、その詳細を知りたければ、これをクリックする。

 この権限をファイル関連APIのパラメータでいうと「FILE_GENERIC_READ」になる。これは実際には次の属性を合成したものになる。

  • STANDARD_RIGHTS_READ(READ_CONTROL)―オブジェクトのセキュリティ記述子の読み取り許可
  • FILE_READ_DATA(FILE_LIST_DIRECTORY)―ファイルのデータやフォルダの内容の一覧の取得許可
  • FILE_READ_ATTRIBUTES―ファイル属性の取得許可
  • FILE_READ_EA―ファイル拡張属性の取得許可
  • SYNCHRONIZE―同期処理。ただしこの属性はGUIで個別に設定することはできないし、する必要もない

 これを実際の[プロパティ]ダイアログで確認するには、上の[プロパティ]ダイアログで[詳細設定]ボタンをクリックし、[アクセス許可]タブにある[編集]ボタンをクリックすると表示される。

詳細なアクセス許可設定
[プロパティ]ダイアログのアクセス許可設定にある「読み取り」という項目は、実際にはこのような4つの権利を合成したものである。このダイアログを表示させるには、[プロパティ]ダイアログの[セキュリティ]タブで[詳細設定]ボタンをクリックし、[アクセス許可]タブにある[編集]ボタンをクリックする。
  詳細なアクセス権の確認。
  アクセス権の対象ユーザー。
  実際に付けられている権利。

ABEとファイルのバックアップについて

 「ファイルとディレクトリのバックアップの権利(SeBackupPrivilege)」を持つユーザー(AdministratorsやBackup Operators、Server Operatorsなど)は、たとえABEを有効にしていても、従来通り、読み取りアクセス権がないファイルも見ることができる。ファイル・バックアップをスケジュール化している場合は、この権限を持つユーザーとして実行しなければ、ABEが有効にされた共有フォルダ経由のバックアップ作業で、漏れが生じる可能性があるので注意が必要だ。ただし逆にいうと、管理者権限のあるユーザーにとってはABEは有効でない(常に全ファイルが見える)ということでもある。ABEはあくまでも一般ユーザー向けの機能と考えるべきである。

ABEとパフォーマンスの低下について

 ABEで権限のないファイルやフォルダ名を隠ぺいする場合、一覧を列挙するたびにそれぞれのファイルやフォルダのアクセス権のチェックを行う必要があるので、パフォーマンスの低下を招く可能性がある。とはいうものの、ABEにおけるファイルのアクセス権のチェック処理は、ファイルの情報をディスクから読み出すことに比べると非常に負担は少なく、実際に試したところでも、パフォーマンス的な劣化はほとんど感じられない(ABEによってファイルやフォルダが隠ぺいされれば、その分だけディスク・アクセスが減少するため、結果としてパフォーマンスが向上するケースもあるだろう)。ABEツールのインストール先に含まれるドキュメントには、ABEの有効時と無効時におけるパフォーマンスの比較データなどが含まれているが、これによると、1つのフォルダに1万とかそれ以上のファイルを格納した場合にのみ、パフォーマンスの劣化が観測されている。通常の用途ではほとんど気にすることはないだろう。

FTPにおけるファイル共有

 ABEは、ファイル共有に対して働くため、例えばIIS 6.0のFTPサイトで、共有フォルダを利用している場合にも有効である。以下は、共有フォルダをFTPで公開した場合の例である。

共有フォルダをFTPサイトとして公開する
共有フォルダをFTPサイト経由で公開すれば、FTPのファイル/フォルダ一覧にもABE機能が適用され、アクセスするユーザーごとに異なるファイル一覧が返される。
  FTPでアクセスするフォルダを指定するには、このタブを選択する。
  ローカルのファイルを直接公開する場合はこれを選択する(デフォルト設定)。
  リモートのコンピュータの共有フォルダを公開する場合はこちらを選択する。
  FTP経由で公開する共有フォルダ名。たとえ自分のマシンのローカル・フォルダであっても、このようにUNC形式で指定し、共有フォルダへアクセスさせること。
  読み取りの許可を与えないと、lsやdirコマンドが利用できない。

 このFTPサイトに対してFTPクライアントで接続し、ファイルの一覧を表示すると次のようになる。


C:\>ftp ABETestServer …FTPサイトに接続する
Connected to ABETestServer.
220 Microsoft FTP Service
User (ABETestServer:(none)): Administrator …管理者アカウントで接続
331 Password required for Administrator.
Password:
230 User Administrator logged in.
ftp> ls -R …ファイルとフォルダの(再帰的な)一覧表示
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
Granted
Restricted

.\Granted: …制限されていないフォルダ
Granted.txt
Restricted.txt

.\Restricted: …制限されているフォルダも見えている
Granted.txt
Restricted.txt
226 Transfer complete.
ftp: 110 bytes received in 0.02Seconds 6.88Kbytes/sec.
ftp> quit
221

C:\>ftp ABETestServer
Connected to ABETestServer.
220 Microsoft FTP Service
User (ABETestServer:(none)): Alice …今度は一般ユーザー・アカウントで接続
331 Password required for Alice.
Password:
230 User Alice logged in.
ftp> ls -R …ファイルとフォルダの(再帰的な)一覧表示
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
Granted

.\Granted: …Grantedフォルダは見えるが、Restrictedは見えない
Granted.txt
226 Transfer complete.
ftp: 36 bytes received in 0.00Seconds 36000.00Kbytes/sec.
ftp>

 このように、ABEが有効になっていると、アクセス権のないフォルダやファイルの一覧が表示されなくなる。ユーザーごとに個別のアクセス許可を与えたフォルダを作成しておけば、ABEの機能によって、ほかのユーザーのフォルダを隠蔽することができる。

 従来のFTPサービスでも、ユーザー名と同じフォルダを作成しておけば、FTPで接続した場合に、そのユーザー名のフォルダへ自動的に移動する機能を持っていた。例えばFTPサイトのルートに/aliceというフォルダを作成しておくと、ユーザーaliceがFTP接続した場合のデフォルト・ルートが/aliceとなる機能である。だがユーザーが「cd /」を実行してルートへ移動すると、ほかのユーザーのフォルダ名一覧が見えてしまう。

 しかしABEの機能を併用すると、ルートへ移動しても、アクセス権のないフォルダ(=ほかのユーザーのフォルダ)を見ることはできなくなる。End of Article

  関連リンク
  Windows Server 2003 Access-based Enumeration[英文](マイクロソフト)
  Access-based Enumeration Tools(マイクロソフト)
     
 

 INDEX
  [特集]Windows Server 2003 SP1レビュー
  第6回 アクセス・ベースのディレクトリ列挙ABE
    1.アクセス・ベースのディレクトリ列挙ABEとは
    2.ABEツールのインストール
    3.ABEツールの利用方法
  4.ABEとアクセス権
 
目次ページへ  「特集」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間