今回から複数回に分けて、WindowsのAccess Control List(ACL、アクセス制御リスト)を解説することにする。ACLは、Windowsの中でも面倒な部分の1つで理解しなくても特に困るというものでもないが、複雑なファイルアクセス権の管理(あの人たちにファイルを見せたくないけど、自分たちは編集できる)をする場合、避けて通れないことがある。
ACLが面倒なのは、Windowsでは直接見えにくいものだからだ。ただし、すべてのオブジェクトのACLを説明することはかなり大変なので、ここでは対象をファイルシステム(ファイルとディレクトリ)に限定することにする。と言っても、ファイルシステム固有の部分があるだけで、基本はどのACLも同じである。
そもそもACLとはなんぞや?
ACL、Access Control ListがWindowsに導入されたのは、Windows NTのときだ。当時、米国政府の調達に入るためには、POSIXに準拠していることが必要であり、Windows NTはその仕様に合うべく作られた。POSIXのAPIに関しては、Windows Subsystem for Unixで対処したが、その下に入るファイルシステムであるNTFSに関しては、POSIX準拠とすることが求められた。
当時POSIXでは、ファイルのアクセス制御にACLを使うことが検討されていた。結果的にPOISXのACLは策定されなかったが、検討の過程でPOSIXはACLの概念を定義したドラフト文書を作成した。Sun MicrosystemsがNFS用のACLを開発し、これがUnix用としては標準的に使われることになった。このため、ACLはUnixや現在のLinuxでも利用できるのだが、伝統的なUnixのアクセス権管理(俗にパーミッションと呼ばれる)のままで使うことも多い。というのも、ACLで可能にする細かいアクセス管理が必要ない環境も少なくないからだ。
Windowsではファイルシステムのアクセス管理にACLを採用した関係もあり、セキュリティで保護するすべてのオブジェクトのアクセス管理にもACLを使う。Windows関連のドキュメントを見ると、「セキュリティ記述子」「セキュリティディスクリプタ」などと呼ばれる単語が目につくが、これらが指し示すセキュリティ情報の中身がACLである。そして、結果的にACLを標準として組み込んだOSは、Windowsぐらいしかない。なので、Windows固有のものと思われがちだが概念としてはそうではないのだ。
ACLとは簡単に言えば、アクセス権とそれを付与される対象を指定したACE(Access Control Entry)を複数まとめてリストにしたものである。このACLは、ファイルやディレクトリにそれぞれ存在する。アクセス許可がリストになっているため、対象ごとにアクセス権の管理を細かくできるというのが特徴であり、メリットでもある。反面、ACLは複雑なものになった。
Windowsでは、ACEによるアクセス権を付与される対象を「プリンシパル」という。ここでなぜユーザーでないのかというと、実際にオブジェクトを扱うのは、ユーザーが起動したプログラムやそこから発生したスレッドであったり、あるいはサービスのようなプログラム、人でない管理用のユーザー(コンピュータアカウント)であったりするからだ。とりあえずはプリンシパルと言われたときに、ユーザーを想定してもかまわないが、概念的にはユーザーに限るものではないことは理解しておいてほしい。
このプリンシパルは、たとえばアカウント名などのような人間にわかりやすい「表示名」で扱うこともできるが、内部的には「セキュリティ識別子」(Security ID。SID)で表現される。Windowsでときどき見かける「S-1-」から始まる数字とハイフンからなる文字列がSIDの文字列表現だ(SID自体はバイナリデータ)。
ACEによるアクセスが制御される対象はすべてWindowsの「オブジェクト」である。これを「セキュリティ保護可能なオブジェクト」という。ここではファイルやディレクトリに限って話をするが、特に限定する必要がない場合には、「オブジェクト」と呼ぶことにする。
ACLには、いわゆるアクセス制御に使うDACL(Discretionary ACL。随意ACLなどと呼ばれる)と、Windowsの監査(ファイルアクセスなどのOS内の操作を追跡して記録すること)用のSACL(System ACL。システムACL)がある。しかし、通常ACLと言えば、DACLのことを意味する。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ












