フォルダ階層全体のアクセス権設定をまとめて一覧出力したい

 ファイルサーバを管理していて、「現在のセキュリティ設定を全部、一覧出力して確認したい。」と思うことはありませんか?

 Windowsファイルサーバでは、きめ細かいセキュリティ設定ができるものの、全体としてどこにどんな設定を書き込んだのかを確認するのに、 ひとつひとつのフォルダをクリックしてプロパティを確認するのでは、大変な手間ヒマが必要です。 鉄飛テクノロジーでは、一気に設定を出力して確認可能なファイルサーバ管理者向けツールとして「ACL Dump」を開発しました。

 前回のエントリフォルダ・アクセス権一覧ツール「ACL Checker」 では、フォルダ×ユーザ別のアクセス権状況を表示するツールを紹介しましたが、これは比較的少数のユーザ・少数のフォルダを対象に利用することを想定したツールです。 実際には、とある金融機関からのリクエストで作成したツールでして、各支店において、スタッフ全員がどのファイルにアクセスできるかを定期的に支店長・次長さんが チェックするためのツールとして開発したものです。そのため、想定されるユーザ数は50人程度と考えております。 本記事では、より大規模なファイルサーバの管理者向けのツールとして開発した「ACLDump」についてご紹介いたします。




Windows標準ツール「CACLS」では何故不十分なのか?

 「アクセス権を一覧出力する」機能を備えているツールとして、Windows標準の「CACLS.exe」というツールがあります。 これを使うことで、全フォルダ・全ファイルのアクセス権をテキストファイルに書きだすことが可能ですが、 残念ながらファイルサーバ管理者が日常的に使えるツールではありません。 私たちが開発した「ACL Dump」は、CACLSの弱点を補うものです。

 CACLSコマンドは、Windows標準のコマンドで、指定したファイル・フォルダのアクセス権を標準出力に一覧する機能を備えています。 (参考:CACLSコマンドの出力の見方) CACLSは、アクセス権を一覧するだけでなく、更新する機能も持っており、大変強力なコマンドですが、 フォルダ階層全体についてアクセス権を一覧しようとすると、 与えられたフォルダ以下の全サブフォルダ・ファイルのACLが膨大に一覧出力されてしまいうため、 事実上、管理者が目視で確認することが不可能です。

 「ACL Dump」は、管理者が目視で確認可能なテキストファイルとして、ファイルサーバのアクセス権を一覧出力することを目標に開発されました。 「どうすればそれが可能なの?」と思うでしょうが、そのポイントは意外に簡単です。 Windowsのフォルダ・ファイルのアクセス権は、通常は親フォルダから継承することによって設定されますので、 ファイルサーバに例え10万件・100万件の文書が登録されていても、ほとんどのファイルは継承したアクセス権しか持たず、 親フォルダからの継承分と異なるアクセス権設定を持つファイルは最小限にできることに、私たちは注目しました。

 ACL Dumpは、親フォルダから継承したアクセス制御エントリだけしか持たないフォルダ・ファイルを、一覧に出力しないように動作させることが可能です。 これにより、管理者が手動でアクセス権を設定したフォルダだけを出力することが可能になるのです。




アクセス権一括出力ツールの応用例

1. アクセス権設定状況の全容把握に

 現在、ファイルサーバの全フォルダのアクセス権付与状況がどうなっているかを、すべてテキストに出力することが可能です。 エクセルワークシートに出力して印刷することで、全容を管理者がレビューしやすくなります。

2. アクセス権設定変更作業の履歴管理に

 システム管理部門では、ユーザ部門からのアクセス権変更依頼を受け付けて、変更作業を行うことと思います。 このとき、担当者が依頼通りに作業を行ったことを客観的にチェックするためには、変更前と変更後、それぞれの時点でACLDumpを実行し、出力を対比・比較することが効果的です。

 ACLDumpが書き出すテキストファイルは、標準的なテキストファイル比較ツール(Diff)で比較可能な形式です。特に、Windows環境で二つのテキストファイルの差分を確認するのには、 「WinMerge」(フリーソフトです)がおすすめです。




ACL Dumpの使い方

 ACLDump.exeを実行してください。Windows Vista/Windows 7/Windows 2008 ServerでUACが有効な場合には 「管理者として実行」しないと、ライセンス登録情報を読み書きするレジストリの関係で試用モードになってしまいます。ご注意ください。

画面イメージと使い方

 起動すると、下記のような画面がでます。対象フォルダの一覧を与えてチェックを実行します。 与えられたフォルダのサブフォルダは自動展開でき、ユーザ一覧には日本語名など説明文字列を付加できます。

 なお、体験版では一覧をテキストファイル・エクセルワークシートにエクスポートすることや、コマンドライン版を使うことができません。

出力イメージ

 出力は下記のようになります

 ACLDumpの出力に特徴的なのは「継承」の列ですが、下記の3通りがあります。

  1. 親フォルダからACLを継承したファイル・フォルダについて、継承されたエントリの継承欄は空欄で表示されます
  2. 親フォルダからACLを継承して、アクセス制御エントリが追加された場合、追加されたエントリについて、継承欄に「+追加」と表示されます
  3. 親フォルダのACLを継承せず、ACLをコピーしたりゼロから作成した場合、アクセス制御エントリの継承欄には「-置換」と表示されます
  4. 上記の(-置換の)場合、アクセス制御エントリ一覧の先頭にユーザ・グループ「-」の行を挿入して表示します。よって、 親フォルダからのACLを継承せず、ACLを空にした場合には、「-」の行が一行出力されます。

CREATOR OWNERのアクセス制御エントリについて

 ACL Dumpを用いると、親フォルダから継承していないアクセス制御エントリをリストアップすることが可能です。 うまく行けば、親フォルダからACLを継承しただけの大部分のフォルダ・ファイルを一覧に出力しないようにできるますが、 ここで問題になるのが「CREATOR OWNER」にアクセス権を与える設定がなされている場合です。

 たとえば、CREATOR OWNERについて「フルコントロール」アクセス権を与えるような設定がなされている場合、 新しいフォルダをユーザ(例えばokada)が作成すると、 作成されたフォルダのACLにはフォルダの作成者(okada)で「フルコントロール」権限が追加されます。 こうして追加された okada のアクセス制御エントリ(ACE)は、親フォルダから継承したエントリではありませんので、 ACLDumpが出力する対象となってしまいます。

 一定規模以上のファイルサーバを管理するならば、CREATOR OWNERに権限を与えるのは、良い考えとは言えません。 (これについては、次回の記事にて解説する予定です。) CREATOR OWNERにフルコントロールを与えるというルールによって出来てしまったACEを、 一定ノールール(継承元無しで、対象が「ファイルのみ」か「このフォルダのみ」で、フルコントロールを許可するACE)に基づいて 一括削除するツールを使い、ACLの掃除をしてしまうことをお勧めします。鉄飛テクノロジーで、このためのツールも公開しようと考えています。