Windowsのアクセス制御リストACLとは?Tech TIPS

ファイルやフォルダに対するアクセス権は、アクセス制御リストACLで柔軟に制御できる。ACLには、(複数の)アクセス制御エントリACEを含むことができる。各ACEには、どのユーザーやグループに対して、どのような権利を許可するか(もしくは拒否するか)を設定する。

» 2006年01月21日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
Tech TIPS
Windows Server Insider


「Tech TIPS」のインデックス

連載目次

対象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の例
これはファイルの[プロパティ]メニューで[セキュリティ]タブを選択し、さらに[詳細設定]ボタンを押して、アクセス許可状況を表示させたところ。ACLの詳細設定や継承の制御などを行うことができる。
  (1)定義されているACE。このACL中には、全部で4つのACEが定義されている。
  (2)ACEの対象となるユーザーやグループ名。通常はユーザー名やグループ名を指定するが、「SYSTEM」のように、システムの組み込みアカウントなどを指定することもできる。このようなアカウントに対するACEは、サービスやアプリケーションなどからのアクセスを制御するために使用する。
  (3)アクセス許可の属性。
  (4)新しいACEを追加する場合は、これをクリックする。
  (5)既存のACEの内容を編集するには、これをクリックする。

 ファイルやフォルダに対してアクセスを許可するためには、必ずこのACLを定義しなければならない。ACLの内容が空だと(ACEが1つも含まれていないと)、そのファイルへはアクセスすることはできない。すべてのユーザーやグループに対してデータ・アクセスや変更などの操作を許可したければ、「Everyone(全ユーザー)に対して」「(あらゆる操作を)許可する」というACEを明示的に定義しておかなければならない。

 例えばあるファイルを読み出そうとする場合、アクセスしようとしているユーザーに対して「読み取りの許可」アクセス権が付与されている必要がある。Windows OSシステムがこれをチェックする場合、まずアクセス元のユーザーかグループが含まれるACEが存在し、さらに「読み取りの許可」が設定されているかどうかを調べる。該当するACEが見つからなければ、読み取りアクセスは拒否される。

 具体的なアクセス許可の項目やその詳細については、ここでは触れないので(今後別TIPSで取り上げる予定)、Windows OSのヘルプ・ファイルなどを参照していただきたい。アクセスを許可したいオブジェクト(ファイルやフォルダ)にACLを設定することにより、特定のユーザーやグループだけにアクセスを許可したり、さらに一部のユーザーからのアクセスだけを拒否したりといった、柔軟なセキュリティ設定が可能になる。例えば「営業部のデータは、営業グループと役員グループからは閲覧できるが、ほかの部署からのアクセスはすべて禁止する。ただし変更ができるのは営業グループの中でも特別な一部のユーザー/グループだけに限定する」といったセキュリティ設定などを実現できる。

●許可するアクセス権と拒否するアクセス権

 ACEには、「許可する」アクセス権を定義するものと、「拒否する」アクセス権を定義するものの2種類がある。あるユーザーやグループが両方のアクセス権に該当する場合、拒否するアクセス権の方が優先される。例えばEveryoneに対して許可のアクセス権が与えられているが、同時に、特定のユーザーUser1に対して拒否するアクセス権も与えられている場合、User1に対しては拒否するアクセス権が適用される。拒否アクセス権は、あるアクセス権の集合から、一部のユーザーやグループ/アクセス権などを除外するために利用できる。

許可と拒否のアクセス権 許可と拒否のアクセス権
アクセス権には「許可」と「拒否」の2種類がある。通常は「許可」のACEを追加していくことによりアクセス権を設定するが、デフォルトのものから一部の権利やユーザー/グループを除外したい場合は「拒否」のACEを追加するとよい。1つのユーザー/グループに対して「許可」と「拒否」の両方を設定すると、実際には許可ACEと拒否ACEの2つが作成される。
  (1)許可のアクセス権。上の[グループ名またはユーザー名]で選んだユーザー/グループに対し、ここでチェックされている操作が許可される。
  (2)拒否のアクセス権。ユーザーやグループに対し、拒否が設定されていると、その操作ができなくなる。許可のアクセス権よりも優先される。

●アクセス権の継承

 あるフォルダに対してアクセスを設定すると、通常は、そのフォルダ中に作成されたファイルやサブ・フォルダは、親フォルダの持つアクセス権を「継承」する。これにより、フォルダ・ツリーのトップでアクセス権を設定しておけば、その下に作られたファイルやサブ・フォルダにはそのアクセス権が継承され、付与される。これにより、親フォルダのアクセス権を変更するたびにたびにいちいちアクセス権を設定するといった手間を省くことができる。

継承されているアクセス権の例 継承されているアクセス権の例
アクセス権は、デフォルトではそのファイルの作成されたフォルダから継承する。
  (1)上位のフォルダから継承されているアクセス権は、このようにグレー・アウトしており、変更することはできない。継承をさせず、このフォルダ(もしくはサブフォルダ以下)で独自にアクセス権を設定したければ、[詳細設定]を使って、継承を行わないように設定すればよい。
  (2)新しくユーザーが追加設定することができるアクセス権。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。