鷲ノ巣

C# とか PowerShell とか。当ブログの記事は(特に公開直後は)頻繁に改定される場合があることをご了承ください。

Windows のアクセス制御の仕組み

一年ぶりです。

アレとかアレとかもやらにゃいかんのはわかってはいるんですが、はい。そのうちやります。気が向いたら。
今はこっちに気が向いちゃってるのでしょうがないね。

今回も懲りずにシリーズものになります。
ボリューム的には一人アドベント カレンダーができるくらいはあると思うんですが、半端な時期ですし、毎日更新は無理なので、のんびりやっていくことにします。
完走できるよう、生暖かい目で見守ってあげてください。

アクセス制御

アクセス制御というのは何かと言いますと、これのことです。見たことあるよね?
f:id:aetos382:20171216003459p:plain

つまり、ファイルなどのリソースに対して、あるユーザーがアクセスを試みた時、そのアクセスが許可または拒否されるまでに、どういう判断がされるのか、というお話になります。

詳細設定

詳細設定ボタンを押すと、もうちょっと大きなダイアログが開きます。
今後はこっちをベースに話をしていきます。
f:id:aetos382:20171216004851p:plain

DACL

詳細設定ダイアログの「アクセス制御」タブには、「誰に」「どんな操作が」「許可されているのか、拒否されているのか」が表示されます。
この情報は、ファイルに関連付けられた DACL という領域に書き込まれています。
DACL とは Discretionary Access Control List の略です。日本語では「随意アクセス制御リスト」とか言います。
Discretionary というのは聞きなれない言葉ですね。でぃすくれしょなりー? って読むんでしょうか。随意、つまり、自由にできるという意味です。
このファイルの所有者であれば、誰にどのようなアクセスを許可(または拒否)するかを自由に決められるというところから、このように呼ばれます。

所有者

上に「所有者」という欄がありますね。
これが、このファイルの所有権を持っている人です。DACL はこの人の自由自在です。

監査と SACL

それから、「監査」というタブがあります。今は空っぽですね。
f:id:aetos382:20171216005029p:plain
監査(英語だと Audit)というのは、このファイルに対して、誰が、いつ、何をしたかという記録を残しておいて、後でシステム管理者が、おかしな操作が行われていないかをチェックするための仕組みです。
その性質上、監査設定はファイルの所有者の自由にはできません。もし所有者が好き勝手に、ファイルの操作の記録を残さないように設定できたら、システム管理者の目を逃れて操作することが可能になってしまうからです。
ですから、これは Discretionary ではありません。
監査設定は、ファイルの所有者であっても自由にできない SACL という領域に書き込まれています。System Access Control List の略です。

ACE

DACL と SACL をまとめて ACLAccess Control List)と言います。
リストですから、何かの集まりです。
ACL を構成する個々の要素を、ACE(Access Control Entry)と言います。

SID

DACL は「誰に」「どんな操作を許すか(あるいは許さないか)」の情報です。
SACL は「誰が」「何をした場合にログを残すか」を表します。
また、ファイルの所有者が「誰」であるかという情報もありますね。
この「誰」を表すのに、名前の代わりに SID(Security Id)というのを使います。
SID は典型的には、ユーザーやグループを表しますが、それ以外にも様々なものを表現するのに使われます。
それらは後々触れていきます。

セキュリティ記述子

DACL、SACL、所有者の情報をまとめて格納しているのが、セキュリティ記述子(Security Descriptor)です。
リソース(この場合はファイル)に設定されているアクセス制御に関する情報は、セキュリティ記述子に全て入っています。

次回はセキュリティ記述子の中身を見ていきます。

目次

シリーズの目次はこちら
tech.blog.aerie.jp