コンピュータセキュリティにおいて、アクセス制御リスト(ACL )は、システムリソース(オブジェクトまたは機能)に関連付けられた権限のリストです。 [ a ] ACLは、どのユーザーまたはシステムプロセスがリソースへのアクセスを許可されているか、また、特定のリソースに対してどのような操作が許可されているかを指定します。[ 1 ]一般的なACLの各エントリは、対象と操作を指定します。たとえば、
多くの種類のオペレーティングシステムはACLを実装しているか、歴史的な実装を持っています。ACLの最初の実装は1965年のMulticsのファイルシステムでした。 [ 2 ] [ 3 ]
ファイルシステムACL は、プログラム、プロセス、ファイルなどの特定のシステム オブジェクトに対する個々のユーザーまたはグループの権限を指定するエントリを含むデータ構造(通常はテーブル)です。これらのエントリは、Microsoft Windows NT [ 4 ] OpenVMS、およびLinux、macOS、SolarisなどのUnix ライクなオペレーティングシステムではアクセス制御エントリ (ACE) として知られています。アクセス可能な各オブジェクトには、その ACL の識別子が含まれています。権限またはアクセス許可によって、ユーザーがオブジェクトから読み取ったり、書き込んだり、実行したりできるかどうかなど、特定のアクセス権が決まります。一部の実装では、ACE によって、ユーザーまたはユーザー グループがオブジェクトの ACL を変更できるかどうかを制御できます。
ファイルシステムACLを提供する最初のオペレーティングシステムの1つはMulticsでした。PRIMOSは少なくとも1984年にはACLを備えていました。[ 5 ]
1990年代には、ACL(アクセス制御リスト)とロールベースアクセス制御(RBAC)モデルが広範囲にわたってテストされ、ファイル権限の管理に利用された。
POSIX 1003.1e/1003.2cワーキンググループはACLの標準化に取り組み、その結果、現在「POSIX.1e ACL」または単に「POSIX ACL」として知られるものが作成されました。[ 6 ] POSIX.1e/POSIX.2cドラフトは、参加者がプロジェクトへの資金提供への関心を失い、NFSv4 ACLなどのより強力な代替手段に移行したため、1997年に撤回されました。[ 7 ] 2019年12月現在 インターネット上には草稿の現存する情報源は見つからなかったが、インターネットアーカイブには保存されている。[ 8 ]
ほとんどのUnixおよびUnixライクなオペレーティングシステム(例えば、Linux 2.5.46以降または2002年11月以降、[ 9 ] FreeBSD、Solarisなど)はPOSIX.1e ACL(必ずしもドラフト 17とは限りません)をサポートしています。ACLは通常、これらのシステム上のファイルの拡張属性に格納されます。
NFSv4 ACLは、POSIXドラフトACLよりもはるかに強力です。ドラフトPOSIX ACLとは異なり、NFSv4 ACLはネットワークファイルシステムの一部として公開された標準規格で定義されています。
NFSv4 ACL は、多くの Unix および Unix ライクなオペレーティングシステムでサポートされています。例としては、AIX、FreeBSD [ 10 ] 、バージョン 10.4 (" Tiger ")以降のMac OS X 、 ZFSファイルシステムを備えた Solaris [ 11 ]などがNFSv4 ACL をサポートしており、これは NFSv4 標準の一部です。Linux 用の NFSv4 ACL の実験的な実装が 2 つあります。Ext3ファイルシステム用のNFSv4 ACL サポート[ 12 ]と、より新しいRichaclsで、Ext4ファイルシステム用の NFSv4 ACL サポートが提供されます[ 13 ] 。POSIX ACL と同様に、NFSv4 ACL は通常、Unix ライクなシステムで拡張属性として保存されます。
NFSv4 ACL は、 NTFS で使用されるWindows NT ACL とほぼ同じように構成されています。[ 14 ] NFSv4.1 ACL は、NT ACL と POSIX ドラフト ACL の両方の上位セットです。[ 15 ] Samba は、SMB 共有ファイルの NT ACL をさまざまな方法で保存することをサポートしており、その 1 つは NFSv4 エンコード ACL として保存することです。[ 16 ]
MicrosoftのActive Directoryサービスは、ドメイン内のユーザーとコンピューターに関する構成情報を保存および配布するLDAPサーバーを実装しています。 [ 17 ] Active Directory は、Windows NT が NTFS ファイルシステムに使用しているものと同じタイプのアクセス制御リスト メカニズムを追加することで、LDAP 仕様を拡張しています 。Windows 2000 では、アクセス制御エントリの構文が拡張され、LDAP オブジェクト全体だけでなく、これらのオブジェクト内の個々の属性へのアクセスも許可または拒否できるようになりました。[ 18 ]
一部の独自仕様のコンピュータ ハードウェア (特にルーターとスイッチ) では、アクセス制御リスト (ACL) によって、ホストまたはその他のレイヤ3で使用可能なポート番号またはIP アドレスに適用されるルールが提供され、それぞれにサービスの使用が許可されているホストおよび/またはネットワークのリストが含まれます。ネットワークドメイン名に基づいてアクセス制御リストを構成することも可能ですが、個々のTCP、UDP、およびICMPヘッダーにはドメイン名が含まれていないため、これは疑問のあるアイデアです。したがって、アクセス制御リストを適用するデバイスは、名前を数値アドレスに個別に解決する必要があります。これは、アクセス制御リストが保護しているシステムのセキュリティを侵害しようとする攻撃者にとって、追加の攻撃対象となります。個々のサーバーとルーターの両方にネットワーク ACL を設定できます。アクセス制御リストは、一般的に受信トラフィックと送信トラフィックの両方を制御するように構成でき、この点ではファイアウォールに似ています。ファイアウォールと同様に、ACL はPCI DSSなどのセキュリティ規制および標準の対象となる可能性があります。
ACLアルゴリズムはSQLやリレーショナルデータベースシステムに移植されてきました。エンタープライズリソースプランニングシステムやコンテンツ管理システムなど、多くの「最新」(2000年代および2010年代)のSQLベースのシステムは、管理モジュールでACLモデルを使用しています。
2024年、スキーマインデックス付きACLモデルは、従来のJSONベースのパーミッションストレージに代わる軽量な選択肢として登場しました。注目すべき提案の一つは、完全なパーミッションツリーではなく、許可された操作のインデックスのみを保存するというアイデアを導入したものです。この手法は後にSCode ACLとして正式に確立され、定義済みのフラット化されたスキーマに基づいてアクセス権限をコンパクトにエンコード(例:「0 2 5」)できるため、JWTトークンやセッションクッキーなどのステートレスシステムでの使用に特に効率的です。このアプローチは、そのミニマリズムとパフォーマンスの高さから開発者コミュニティで早くから注目を集め、その後、小規模システムと本番環境システムの両方で採用されるようになりました。
ACLモデルの主な代替案は、ロールベースアクセス制御(RBAC)モデルです。「最小限のRBACモデル」であるRBACmは、ACLのエントリとしてグループのみが許可されるACLメカニズムであるACLgと比較できます。Barkley(1997)[ 19 ]は、 RBACmとACLgが同等であることを示しました。
最新のSQL実装では、ACLはグループとその階層における継承も管理します。そのため、「最新のACL」はRBACが表現できるすべての機能を表現でき、管理者が組織をどのように捉えるかという観点からアクセス制御ポリシーを表現する能力において、(「従来のACL」と比較して)特に強力です。
Gnet-II の新バージョン (リビジョン 3.0) では、Primos ACL サブシステムで実装される回線セキュリティ メカニズムが追加されています。
ファイルシステムで EA (拡張属性) および ACL (アクセス制御リスト) 機能が利用可能になりました。さらに、NFS で ACL 機能が利用可能になりました。