アクセス制御リスト
アクセス制御リスト(アクセスせいぎょリスト、Access Control List、ACL)とは、コンピュータセキュリティにおけるアクセス制御を実現するために、あるリソース(受動体)に対して、誰からのどの操作を許可するかを列挙したもの。
アクセス制御リストに基づくセキュリティモデル
[編集]アクセス制御リストに基づくセキュリティモデルでは、能動体(subject, 人間やプロセス)が受動体(object, システムやファイル)への操作を要求したとき、システムは許可属性のリストを検査して、その操作を実行してよいかどうかを決定する。アクセス制御リスト (ACL) に基づくセキュリティモデルの定義の鍵となるのは、ACLがどう修整されるかである。つまり、各受動体のACLに対して誰がどんな修整をすることが許されているかである。
ACLを用いる制御には2種類ある。任意アクセス制御と強制アクセス制御である。任意アクセス制御とは、受動体の作成者か所有者がその受動体へのアクセスを完全に制御できるものをいう(その受動体を他人がアクセスできるようにACLを変更することを含む)。強制アクセス制御とは、ACLに記載されている許可属性を書き換えるときにシステム全体からの制限を受けるものをいう。
伝統的なACLシステムでは各利用者に許可を与えてしまい、その結果、多数の利用者をもつシステムにおいてはやっかいなことになる。現代的なロールベースアクセス制御と呼ばれる方法では、許可はいったんロール(役割)に対して割り当てられ、それが利用者に割り当てられる。
ファイルシステムのアクセス制御リスト
[編集]ファイルシステムにおいては、プロセスの利用者識別子(POSIXでは実効UID)が制御の主な手段となる。 アクセス制御リスト (ACL) はデータ構造(通常は配列)をもち、特定のシステムオブジェクト(プログラム、プロセス、ファイル)への個々のユーザーやグループの権利を示す要素から構成される。これらの要素は、Microsoft Windows[1]、OpenVMS、Unix系、macOSといったオペレーティングシステム (OS) ではアクセス制御エントリ (ACE) と呼ばれている。アクセス可能なオブジェクトはACLへの識別子をもっている。特権またはパーミッションは、あるユーザーがそのオブジェクトについて何ができるか(読み、書き、実行)を決定する。実装によっては、ACEは所有者かどうか、または所有者のグループかどうかにかかわらずオブジェクトのACLを制御できる。
アクセス制御リストの実装はOSによって異なるが、例としてはPOSIXの「標準」がある[2]。多くのUNIXおよびUnix系OS(例えば、Linux[3]、BSD、Solaris)はドラフト版のPOSIX.1e ACLをサポートしている。また、AIX、FreeBSD[4]、Mac OS X v10.4 ("Tiger") 以降、SolarisのZFS[5]ではNFSv4 ACLをサポートしている。Linuxでもext3ファイルシステム向け[6]とRichaclsというext4向け[7]のNFSv4 ACLの実験的実装が2つある。
ACLの実装は非常に複雑になる可能性がある。ACLは様々なオブジェクト、ディレクトリや他のコンテナ、コンテナ内のコンテナなどに適用できる。ACLは要求されるすべてのセキュリティ対策を実現できるわけではないので、きめ細かいケイパビリティに基づくアクセス制御システムのほうがよいこともある[8]。
ネットワークにおけるアクセス制御リスト
[編集]ネットワークでは、Access Control List (ACL) はTCP/IPのポート番号とそのホスト上で使えるデーモンのリストを意味する。つまり、ホストがネットワークに対して提供しているサービスのリストである。個々のサーバだけでなくルーターもネットワークACLをもっている。この場合のアクセス制御リストは双方向のトラフィックを制御するもので、例えばファイアウォールと深い関係がある。PCI DSS のようなセキュリティの規約や標準の対象ともなっている。
脚注
[編集]- ^ “Managing Authorization and Access Control”. Microsoft Technet. 2012年7月11日閲覧。
- ^ POSIX security draftsの.1eと.2cは対象範囲を広げすぎたため標準策定が完了しないとして破棄された。しかし、ACLについてよく書かれた部分は広く実装され「POSIX ACL」として知られるようになった。
- ^ 2003年10月にリリースされたRHEL-3[1]でACLとEAをサポートしている。パッチはそれ以前から存在していたが、Linuxカーネルが公式にサポートしたのは2003年12月リリースの2.6からである。
- ^ NFSv4_ACLs FreeBSD
- ^ “8. Using ACLs to Protect ZFS Files (Solaris ZFS Administration Guide) - Oracle”. Docs.oracle.com (2009年10月1日). 2012年7月11日閲覧。
- ^ “Native NFSv4 ACLs on Linux”. Suse.de. 2008年10月12日時点のオリジナルよりアーカイブ。2010年5月4日閲覧。
- ^ “Richacls - Native NFSv4 ACLs on Linux”. bestbits.at (2011年9月1日). 2011年1月4日閲覧。
- ^ その場合、アクセスしようとするオブジェクトに対してアクセス対象のオブジェクトから権限が譲渡され、もっと細かい制御が可能となる。
関連項目
[編集]- chmod
- コンピュータセキュリティ
- 任意アクセス制御 (DAC)
- 強制アクセス制御 (MAC)
- ロールベースアクセス制御 (RBAC)
- Capability-based security - ケイパビリティに基づくアクセス制御
- TCP Wrapper
- ブラックリスト - ホワイトリスト
外部リンク
[編集]- FreeBSD Handbook: File System Access Control Lists
- SELinux and grsecurity: A Case Study Comparing Linux Security Kernel Enhancements
- Susan Hinrichs. “Operating System Security”. 2012年7月11日閲覧。
- John Mitchell. “Access Control and Operating System Security”. 2012年7月11日閲覧。
- Michael Clarkson. “Access Control”. 2012年7月11日閲覧。
- Permissions: a primer or Dacl Sacl Owner Sid and Ace explained on the Helge Klein (creator of the free SetAcl tool for Windows) Website.
- POSIX Access Control Lists on Linux
- RSBAC Access Control Lists on Linux
- C2-Wiki Discussion and Relational Implementation
- Generic Access Control Lists (PHP based)
- Easy and detailed ACL howto for linux[リンク切れ]
- ACLbit - ACL Backup and Inspect Tool for Linux
- マイクロソフト
- MS Windows .NET ACL Technology
- MSDN Library: Access Control Lists
- Microsoft Technet: How Permissions Work
この記事は2008年11月1日以前にFree On-line Dictionary of Computingから取得した項目の資料を元に、GFDL バージョン1.3以降の「RELICENSING」(再ライセンス) 条件に基づいて組み込まれている。