アクセス制御リスト

アクセス制御リスト（アクセスせいぎょリスト、Access Control List、ACL）とは、コンピュータセキュリティにおけるアクセス制御を実現するために、あるリソース（受動体）に対して、誰からのどの操作を許可するかを列挙したもの。
アクセス制御リストに基づくセキュリティモデル.
アクセス制御リストに基づくセキュリティモデルでは、能動体（subject, 人間やプロセス）が受動体（object, システムやファイル）への操作を要求したとき、システムは許可属性のリストを検査して、その操作を実行してよいかどうかを決定する。アクセス制御リスト (ACL) に基づくセキュリティモデルの定義の鍵となるのは、ACLがどう修整されるかである。つまり、各受動体のACLに対して誰がどんな修整をすることが許されているかである。
ACLを用いる制御には2種類ある。任意アクセス制御と強制アクセス制御である。任意アクセス制御とは、受動体の作成者か所有者がその受動体へのアクセスを完全に制御できるものをいう（その受動体を他人がアクセスできるようにACLを変更することを含む）。強制アクセス制御とは、ACLに記載されている許可属性を書き換えるときにシステム全体からの制限を受けるものをいう。
伝統的なACLシステムでは各利用者に許可を与えてしまい、その結果、多数の利用者をもつシステムにおいてはやっかいなことになる。現代的なロールベースアクセス制御と呼ばれる方法では、許可はいったんロール（役割）に対して割り当てられ、それが利用者に割り当てられる。
ファイルシステムのアクセス制御リスト.
ファイルシステムにおいては、プロセスの利用者識別子（POSIXでは実効UID）が制御の主な手段となる。
アクセス制御リスト (ACL) はデータ構造（通常は配列）をもち、特定のシステムオブジェクト（プログラム、プロセス、ファイル）への個々のユーザーやグループの権利を示す要素から構成される。これらの要素は、Microsoft Windows、OpenVMS、Unix系、macOSといったオペレーティングシステム (OS) ではアクセス制御エントリ (ACE) と呼ばれている。アクセス可能なオブジェクトはACLへの識別子をもっている。特権またはパーミッションは、あるユーザーがそのオブジェクトについて何ができるか（読み、書き、実行）を決定する。実装によっては、ACEは所有者かどうか、または所有者のグループかどうかにかかわらずオブジェクトのACLを制御できる。
アクセス制御リストの実装はOSによって異なるが、例としてはPOSIXの「標準」がある。多くのUNIXおよびUnix系OS（例えば、Linux、BSD、Solaris）はドラフト版のPOSIX.1e ACLをサポートしている。また、AIX、FreeBSD、Mac OS X v10.4 ("Tiger") 以降、SolarisのZFSではNFSv4 ACLをサポートしている。Linuxでもext3ファイルシステム向けとというext4向けのNFSv4 ACLの実験的実装が2つある。
ACLの実装は非常に複雑になる可能性がある。ACLは様々なオブジェクト、ディレクトリや他のコンテナ、コンテナ内のコンテナなどに適用できる。ACLは要求されるすべてのセキュリティ対策を実現できるわけではないので、きめ細かいケイパビリティに基づくアクセス制御システムのほうがよいこともある。
ネットワークにおけるアクセス制御リスト.
ネットワークでは、Access Control List (ACL) はTCP/IPのポート番号とそのホスト上で使えるデーモンのリストを意味する。つまり、ホストがネットワークに対して提供しているサービスのリストである。個々のサーバだけでなくルーターもネットワークACLをもっている。この場合のアクセス制御リストは双方向のトラフィックを制御するもので、例えばファイアウォールと深い関係がある。PCI DSS のようなセキュリティの規約や標準の対象ともなっている。