アクセスコントロール‐リスト【access control list】
エー‐シー‐エル【ACL】
アクセス制御リスト (ACL) [access control list (ACL)]
アクセス制御リスト
【英】Access Control List, ACL
アクセス制御リストとは、誰に対して、どのリソースに対するどの操作を許可、または、拒否するか、という属性を複数列挙したもので、システム上のリソースに対するアクセスを安全にするために利用される制御情報のことである。
DOS時代のアクセス制御では、単純なファイルの読み書き権限の設定しかなく、一般ユーザーと管理ユーザーの区別も無かった。また、伝統的なUNIX系OSでは、一般ユーザーとスーパーユーザーの2種類しかなく、ファイルの所有者、グループ、その他という比較的おおざっぱな区別しかされていなかった。このため、管理上大きな問題が発生していた。
これに対して最近のセキュアなOSでは、スーパーユーザーに全ての権限を集中させることは危険であると考えられており、権限は、よりきめ細かく分類されることになった。そして、ユーザー、対象、権限のそれぞれをきめ細かく指定して、最小限の属性の組み合わせをアクセス制御リストという形で与えることにより、安全性を確保している。
なお、アクセス制御リストの考え方は、オペレーティングシステム、データベースシステム、ネットワーク、アプリケーションなどの分野で用いられている。
AccessControlList クラス
アセンブリ: System.Messaging (system.messaging.dll 内)


AccessControlList クラスを使用して、アクセス許可を設定するときに単一の呼び出しで追加する複数のトラスティとアクセス権を指定します。それぞれのトラスティとアクセス権の組み合わせについてアクセス制御エントリを追加することにより、アクセス制御リストを構築します。
AccessControlList は確保できるオブジェクトへのアクセスが許可または拒否されているトラスティを識別します。プロセスが確保できるオブジェクトにアクセスしようとすると、システムはオブジェクトのアクセス制御リスト内のアクセス制御エントリをチェックして、アクセスを認めるかどうかを判断します。オブジェクトにアクセス制御リストがない場合、システムはすべての場合に無制限のアクセスを認めます。オブジェクトのアクセス制御リストにエントリがない場合、システムはオブジェクトへのアクセスをすべて拒否します。
システムは、要求されたすべてのアクセス権を認める 1 つ以上のアクセス制御エントリを見つけるまで、または要求されたアクセス権のいずれかが拒否されるまで、アクセス制御エントリを順番にチェックします。

System.Collections.CollectionBase
System.Messaging.AccessControlList


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


AccessControlList コンストラクタ
アセンブリ: System.Messaging (system.messaging.dll 内)



Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


AccessControlList プロパティ

名前 | 説明 | |
---|---|---|
![]() | Capacity | CollectionBase に格納できる要素の数を取得または設定します。 ( CollectionBase から継承されます。) |
![]() | Count | CollectionBase インスタンスに格納されている要素の数を取得します。このプロパティはオーバーライドできません。 ( CollectionBase から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | InnerList | CollectionBase インスタンス内の要素のリストを格納する ArrayList を取得します。 ( CollectionBase から継承されます。) |
![]() | List | CollectionBase インスタンス内の要素のリストを格納する IList を取得します。 ( CollectionBase から継承されます。) |

AccessControlList メソッド

名前 | 説明 | |
---|---|---|
![]() | Add | アクセス制御リストにアクセス制御エントリを追加します。 |
![]() | Clear | CollectionBase インスタンスからすべてのオブジェクトを削除します。このメソッドはオーバーライドできません。 ( CollectionBase から継承されます。) |
![]() | Contains | アクセス制御リストに特定のアクセス制御エントリが含まれているかどうかを判断します。 |
![]() | CopyTo | 互換性のある 1 次元のアクセス制御エントリ配列に、その配列内の指定したインデックスを開始位置として、アクセス制御リスト全体をコピーします。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetEnumerator | CollectionBase インスタンスを反復処理する列挙子を返します。 ( CollectionBase から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | IndexOf | アクセス制御リスト内のアクセス制御エントリの特定のインデックスを確認します。 |
![]() | Insert | アクセス制御エントリをアクセス制御リスト内の指定した位置に挿入します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | Remove | アクセス制御リスト内にある特定のアクセス制御エントリのうち、最初に出現するアクセス制御エントリを削除します。 |
![]() | RemoveAt | CollectionBase インスタンスの指定したインデックスにある要素を削除します。このメソッドはオーバーライドできません。 ( CollectionBase から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |
![]() | OnClear | CollectionBase インスタンスの内容を消去するときに、追加のカスタム プロセスを実行します。 ( CollectionBase から継承されます。) |
![]() | OnClearComplete | CollectionBase インスタンスの内容を消去した後に、追加のカスタム プロセスを実行します。 ( CollectionBase から継承されます。) |
![]() | OnInsert | CollectionBase インスタンスに新しい要素を挿入する前に、追加のカスタム プロセスを実行します。 ( CollectionBase から継承されます。) |
![]() | OnInsertComplete | CollectionBase インスタンスに新しい要素を挿入した後に、追加のカスタム プロセスを実行します。 ( CollectionBase から継承されます。) |
![]() | OnRemove | CollectionBase インスタンスから要素を削除するときに、追加のカスタム プロセスを実行します。 ( CollectionBase から継承されます。) |
![]() | OnRemoveComplete | CollectionBase インスタンスから要素を削除した後に、追加のカスタム プロセスを実行します。 ( CollectionBase から継承されます。) |
![]() | OnSet | CollectionBase インスタンスに値を設定する前に、追加のカスタム プロセスを実行します。 ( CollectionBase から継承されます。) |
![]() | OnSetComplete | CollectionBase インスタンスに値を設定した後に、追加のカスタム プロセスを実行します。 ( CollectionBase から継承されます。) |
![]() | OnValidate | 値を検証するときに、追加のカスタム プロセスを実行します。 ( CollectionBase から継承されます。) |

AccessControlList メンバ
1 つ以上のトラスティのアクセス権を指定したアクセス制御エントリのリストを格納しています。
AccessControlList データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | Capacity | CollectionBase に格納できる要素の数を取得または設定します。(CollectionBase から継承されます。) |
![]() | Count | CollectionBase インスタンスに格納されている要素の数を取得します。このプロパティはオーバーライドできません。(CollectionBase から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | InnerList | CollectionBase インスタンス内の要素のリストを格納する ArrayList を取得します。(CollectionBase から継承されます。) |
![]() | List | CollectionBase インスタンス内の要素のリストを格納する IList を取得します。(CollectionBase から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Add | アクセス制御リストにアクセス制御エントリを追加します。 |
![]() | Clear | CollectionBase インスタンスからすべてのオブジェクトを削除します。このメソッドはオーバーライドできません。 (CollectionBase から継承されます。) |
![]() | Contains | アクセス制御リストに特定のアクセス制御エントリが含まれているかどうかを判断します。 |
![]() | CopyTo | 互換性のある 1 次元のアクセス制御エントリ配列に、その配列内の指定したインデックスを開始位置として、アクセス制御リスト全体をコピーします。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetEnumerator | CollectionBase インスタンスを反復処理する列挙子を返します。 (CollectionBase から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | IndexOf | アクセス制御リスト内のアクセス制御エントリの特定のインデックスを確認します。 |
![]() | Insert | アクセス制御エントリをアクセス制御リスト内の指定した位置に挿入します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | Remove | アクセス制御リスト内にある特定のアクセス制御エントリのうち、最初に出現するアクセス制御エントリを削除します。 |
![]() | RemoveAt | CollectionBase インスタンスの指定したインデックスにある要素を削除します。このメソッドはオーバーライドできません。 (CollectionBase から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
![]() | OnClear | CollectionBase インスタンスの内容を消去するときに、追加のカスタム プロセスを実行します。 (CollectionBase から継承されます。) |
![]() | OnClearComplete | CollectionBase インスタンスの内容を消去した後に、追加のカスタム プロセスを実行します。 (CollectionBase から継承されます。) |
![]() | OnInsert | CollectionBase インスタンスに新しい要素を挿入する前に、追加のカスタム プロセスを実行します。 (CollectionBase から継承されます。) |
![]() | OnInsertComplete | CollectionBase インスタンスに新しい要素を挿入した後に、追加のカスタム プロセスを実行します。 (CollectionBase から継承されます。) |
![]() | OnRemove | CollectionBase インスタンスから要素を削除するときに、追加のカスタム プロセスを実行します。 (CollectionBase から継承されます。) |
![]() | OnRemoveComplete | CollectionBase インスタンスから要素を削除した後に、追加のカスタム プロセスを実行します。 (CollectionBase から継承されます。) |
![]() | OnSet | CollectionBase インスタンスに値を設定する前に、追加のカスタム プロセスを実行します。 (CollectionBase から継承されます。) |
![]() | OnSetComplete | CollectionBase インスタンスに値を設定した後に、追加のカスタム プロセスを実行します。 (CollectionBase から継承されます。) |
![]() | OnValidate | 値を検証するときに、追加のカスタム プロセスを実行します。 (CollectionBase から継承されます。) |

アクセス制御リスト
(Access_Control_List から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/04/23 05:49 UTC 版)
ナビゲーションに移動 検索に移動アクセス制御リスト(アクセスせいぎょリスト、Access Control List、ACL)とは、オブジェクト(受動体)に付属する許可属性のリスト。コンピュータセキュリティにおけるアクセス制御を実現するために、あるリソース(受動体)に対する誰からのどの操作を許可するかを列挙したもの。例えば、ファイル X についてのアクセス制御リストに要素 (Alice, delete) があれば、Alice はファイル X を削除することができる。
アクセス制御リストに基づくセキュリティモデル
アクセス制御リストに基づくセキュリティモデルでは、能動体(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の「標準」がある(POSIX security draftsの.1eと.2cは対象範囲を広げすぎたため標準策定が完了しないとして破棄された。しかし、ACLについてよく書かれた部分は広く実装され「POSIX ACL」として知られるようになった)。多くのUNIXおよびUnix系OS(例えば、Linux[2]、BSD、Solaris)はドラフト版のPOSIX.1e ACLをサポートしている。また、AIX、FreeBSD[3]、Mac OS X v10.4 ("Tiger") 以降、SolarisのZFS[4]ではNFSv4 ACLをサポートしている。Linuxでもext3ファイルシステム向け[5]とRichaclsというext4向け[6]のNFSv4 ACLの実験的実装が2つある。
ACLの実装は非常に複雑になる可能性がある。ACLは様々なオブジェクト、ディレクトリや他のコンテナ、コンテナ内のコンテナなどに適用できる。ACLは要求されるすべてのセキュリティ対策を実現できるわけではないので、きめ細かいケイパビリティに基づくアクセス制御システムのほうがよいこともある(その場合、アクセスしようとするオブジェクトに対してアクセス対象のオブジェクトから権限が譲渡され、もっと細かい制御が可能となる)。
ネットワークにおけるアクセス制御リスト
ネットワークでは、Access Control List (ACL) はTCP/IPのポート番号とそのホスト上で使えるデーモンのリストを意味する。つまり、ホストがネットワークに対して提供しているサービスのリストである。個々のサーバだけでなくルーターもネットワークACLをもっている。この場合のアクセス制御リストは双方向のトラフィックを制御するもので、例えばファイアウォールと深い関係がある。PCI DSS のようなセキュリティの規約や標準の対象ともなっている。
脚注
- ^ “Managing Authorization and Access Control”. Microsoft Technet. 2012年7月11日閲覧。
- ^ 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日までGFDLバージョン1.3以降の再ライセンス規約に基づいていたFree On-line Dictionary of Computingにある項目の資料が元になっている。
「Access Control List」の例文・使い方・用例・文例
- Access_Control_Listのページへのリンク