ファイルやフォルダに対するアクセス権は、アクセス制御リストACLで柔軟に制御できる。ACLには、(複数の)アクセス制御エントリACEを含むことができる。各ACEには、どのユーザーやグループに対して、どのような権利を許可するか(もしくは拒否するか)を設定する。
対象OS:Windows 2000 / Windows XP / Windows Server 2003
Windows OSでは、NTFSファイル・システム上のファイルやフォルダに対して、「アクセス許可」という属性を付け、アクセスの可否(アクセス権)を制御している。本TIPSでは、このアクセス制御リストの基礎について解説する。
Windows OSでは、ファイルやフォルダだけでなく、システム内部にあるさまざまな「オブジェクト」に対して、アクセスを許可するかどうかを管理している。このときに利用されるのが「アクセス制御リスト(Access Control List、以下ACL)」である。
MS-DOSやWindows 9xといった従来のOSでも、(FATファイル・システム上の)ファイルに対するアクセス権を設定することが可能であった。だがその機能は非常に限定的なものであり、ファイルやフォルダごとに、書き込み禁止にするかどうかを設定できるだけであった。このほかにも、システム属性と隠し属性もあるが、検索で見えないようにする程度の意味しか持っていない。
これに比べると、Windows NT系OS(およびNTFSファイル・システム)で導入されたアクセス制御機能では、より細かく、柔軟なアクセス権の設定が行えるようになっている。FATファイル・システムのファイル属性では、ファイル(オブジェクト)そのものに対して、「書き込みを禁止するかどうか」という属性が1つだけ付けられていたが(誰に対するアクセスを許可/拒否するかという情報は持っていない)、NTFSのACLでは、「誰に対して」「どのような操作を許可/拒否するか」という属性を複数定義できる点が大きな違いである。あるユーザーやグループなどに対して、利用可能な(もしくは拒否する)権限を定義したものをアクセス制御エントリ(Access Control Entry:ACE)といい、これを(複数)集めたものがACLとなる(正確には「随意アクセス制御リスト、Discretionary Access Control List:DACL」という)。
ファイルやフォルダに対してアクセスを許可するためには、必ずこのACLを定義しなければならない。ACLの内容が空だと(ACEが1つも含まれていないと)、そのファイルへはアクセスすることはできない。すべてのユーザーやグループに対してデータ・アクセスや変更などの操作を許可したければ、「Everyone(全ユーザー)に対して」「(あらゆる操作を)許可する」というACEを明示的に定義しておかなければならない。
例えばあるファイルを読み出そうとする場合、アクセスしようとしているユーザーに対して「読み取りの許可」アクセス権が付与されている必要がある。Windows OSシステムがこれをチェックする場合、まずアクセス元のユーザーかグループが含まれるACEが存在し、さらに「読み取りの許可」が設定されているかどうかを調べる。該当するACEが見つからなければ、読み取りアクセスは拒否される。
具体的なアクセス許可の項目やその詳細については、ここでは触れないので(今後別TIPSで取り上げる予定)、Windows OSのヘルプ・ファイルなどを参照していただきたい。アクセスを許可したいオブジェクト(ファイルやフォルダ)にACLを設定することにより、特定のユーザーやグループだけにアクセスを許可したり、さらに一部のユーザーからのアクセスだけを拒否したりといった、柔軟なセキュリティ設定が可能になる。例えば「営業部のデータは、営業グループと役員グループからは閲覧できるが、ほかの部署からのアクセスはすべて禁止する。ただし変更ができるのは営業グループの中でも特別な一部のユーザー/グループだけに限定する」といったセキュリティ設定などを実現できる。
ACEには、「許可する」アクセス権を定義するものと、「拒否する」アクセス権を定義するものの2種類がある。あるユーザーやグループが両方のアクセス権に該当する場合、拒否するアクセス権の方が優先される。例えばEveryoneに対して許可のアクセス権が与えられているが、同時に、特定のユーザーUser1に対して拒否するアクセス権も与えられている場合、User1に対しては拒否するアクセス権が適用される。拒否アクセス権は、あるアクセス権の集合から、一部のユーザーやグループ/アクセス権などを除外するために利用できる。
あるフォルダに対してアクセスを設定すると、通常は、そのフォルダ中に作成されたファイルやサブ・フォルダは、親フォルダの持つアクセス権を「継承」する。これにより、フォルダ・ツリーのトップでアクセス権を設定しておけば、その下に作られたファイルやサブ・フォルダにはそのアクセス権が継承され、付与される。これにより、親フォルダのアクセス権を変更するたびにたびにいちいちアクセス権を設定するといった手間を省くことができる。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.