コンピュータセキュリティにおいて、アクセス制御リスト(ACL )とは、システムリソース(オブジェクトまたは機能)に関連付けられた権限のリストです。ACLは、どのユーザーまたはシステムプロセスにリソースへのアクセスを許可するか、また、特定のリソースに対してどのような操作を許可するかを指定します。[ 1 ]典型的なACLの各エントリは、サブジェクトと操作を指定します。例えば、
- ファイルオブジェクトにACLが含まれている場合、(アリス:読む、書く;ボブ:読む)これにより、アリスにはファイルの読み取りと書き込みの権限が与えられ、ボブには読み取りのみの権限が与えられます。
- リソースアクセス管理機能(RACF)プロファイルCONSOLE CLASS(TSOAUTH)に、次のACLが含まれている場合(アリス:読む)これにより、ALICE に TSO CONSOLE コマンドを使用する権限が与えられます。
実装
多くの種類のオペレーティングシステムがACLを実装しているか、歴史的に実装されています。ACLの最初の実装は1965年のMulticsのファイルシステムでした。 [ 2 ] [ 3 ]
ファイルシステムACL
ファイルシステムのACL は、プログラム、プロセス、ファイルなどの特定のシステムオブジェクトに対する個々のユーザーまたはグループの権限を指定するエントリを含むデータ構造(通常はテーブル)です。これらのエントリは、Microsoft Windows NT、[ 4 ] OpenVMS、およびUnix 系オペレーティングシステム( Linux、macOS、Solarisなど)ではアクセス制御エントリ (ACE) と呼ばれます。アクセス可能な各オブジェクトには、その ACL への識別子が含まれています。特権または許可によって、ユーザーがオブジェクトから読み取り、書き込み、または実行できるかどうかなど、具体的なアクセス権が決まります。実装によっては、ACE によって、ユーザーまたはユーザーグループがオブジェクトの ACL を変更できるかどうかを制御できます。
ファイルシステムACLを提供した最初のオペレーティングシステムの一つはMulticsでした。PRIMOSは少なくとも1984年にはACLを搭載していました。[ 5 ]
1990 年代には、ACL とロールベースのアクセス制御(RBAC) モデルが広範囲にテストされ、ファイル権限の管理に使用されました。
POSIX ACL
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
NFSv4 ACLは、POSIXドラフトACLよりもはるかに強力です。ドラフトPOSIX ACLとは異なり、NFSv4 ACLはネットワークファイルシステムの一部として、公開された標準によって定義されています。
NFSv4 ACL は多くの Unix および Unix 系オペレーティングシステムでサポートされています。例としては、AIX、FreeBSD、[ 10 ] 、 Mac OS Xバージョン 10.4 (" Tiger ")以降、ZFSファイルシステムを搭載した Solaris [ 11 ]などが挙げられます。これらは NFSv4 標準の一部である NFSv4 ACL をサポートしています。Linux 用の NFSv4 ACL の実験的な実装には、Ext3ファイルシステムの NFSv4 ACL サポート[ 12 ]と、 Ext4ファイルシステムの NFSv4 ACL サポートを提供する最近のRichaclsの 2 つがあります。[ 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 ]
アクティブディレクトリ ACL
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などのセキュリティ規制や標準の対象となる場合があります。
SQL実装
ACLアルゴリズムはSQLおよびリレーショナルデータベースシステムに移植されています。エンタープライズリソースプランニング(ERP)やコンテンツ管理システムなど、多くの「最新」(2000年代および2010年代)SQLベースシステムは、管理モジュールでACLモデルを使用しています。
スキーマインデックス付きACL
2024年、スキーマインデックス付きACLモデルが、従来のJSONベースの権限ストレージに代わる軽量な代替手段として登場しました。注目すべき提案の一つは、完全な権限ツリーではなく、許可された操作のインデックスのみを保存するという考え方を導入しました。後にSCode ACLとして正式化されたこの手法は、定義済みのフラット化されたスキーマに基づいてアクセス権(例:"0 2 5")をコンパクトにエンコードできるため、JWTトークンやセッションCookieなどのステートレスシステムでの使用に特に効果的です。このアプローチは、そのミニマリズムとパフォーマンスから開発者コミュニティで早期に支持され、その後、小規模システムと本番環境の両方のシステムに採用されています。
RBACとの比較
ACLモデルの主な代替モデルは、ロールベースアクセス制御(RBAC)モデルです。「最小限のRBACモデル」であるRBACmは、ACLのエントリとしてグループのみを許可するACLメカニズムであるACLgと比較できます。Barkley (1997) [ 19 ]は、 RBACmとACLgは同等であることを示しました。
最新のSQL実装では、ACLはグループと、グループ階層における継承も管理します。そのため、「最新のACL」はRBACが表現できるすべての機能を表現でき、管理者が組織をどのように捉えるかという観点からアクセス制御ポリシーを表現できる点で(「従来のACL」と比較して)非常に強力です。
データ交換や「高レベルの比較」のために、ACLデータはXACMLに変換することができます。[ 20 ]
参照
注記
- ^例:ファイルシステムの権限、特定のアクションを実行する権限。
参考文献
- ^ R. Shirey (2007年8月).インターネットセキュリティ用語集 バージョン2. doi : 10.17487 /RFC4949 . RFC 4949. 2023年5月19日閲覧。
- ^リチャード・E・スミス「初級情報セキュリティ」150ページ。
- ^ Daley, RC; Neumann, PG (1965). 「二次記憶装置のための汎用ファイルシステム」 . AFIPS '65 (秋季, パートI): 1965年11月30日~12月1日開催の秋季合同コンピュータ会議議事録、パートI. ACM Press. p. 213. doi : 10.1145/1463891.1463915 .
- ^ 「承認とアクセス制御の管理」 . Microsoft Learn . 2009年9月11日. 2024年5月15日閲覧。
- ^ "PSI Pacer Software, Inc. Gnet-II リビジョン 3.0" . Communications. Computerworld . Vol. 18, no. 21. 1984-05-21. p. 54. ISSN 0010-4841 . 2017-06-30取得。Gnet
-II の新バージョン(リビジョン 3.0)では、Primos ACL サブシステムに実装された回線セキュリティメカニズムが追加されました。
- ^ Grünbacher, Andreas. 「LinuxにおけるPOSIXアクセス制御リスト」 . Usenix . 2019年12月12日閲覧。
- ^ wurtzkurdle. 「なぜPOSIX.1eは撤回されたのか?」 Unix StackExchange . 2019年12月12日閲覧。
- ^ Trümper, Winfried (1999年2月28日). 「Posix.1eの概要」 . 2008年7月23日時点のオリジナルよりアーカイブ。
- ^ 「Red Hat Enterprise Linux AS 3 リリースノート (x86 版)」 . Red Hat . 2003. 2013年12月2日時点のオリジナルからのアーカイブ。 2013年4月8日閲覧。ext3
ファイルシステムで EA (拡張属性) と ACL (アクセス制御リスト) 機能が利用できるようになりました。さらに、NFS でも ACL 機能が利用できます。
- ^ "NFSv4 ACLs" . FreeBSD . 2011年9月12日. 2013年4月8日閲覧。
- ^ 「第8章 ACLと属性を使用したZFSファイルの保護」 Oracle Corporation、2009年10月1日、 2013年4月8日閲覧。
- ^ Grünbacher, Andreas (2008年5月). 「LinuxにおけるネイティブNFSv4 ACL」 . SUSE . 2013年6月20日時点のオリジナルよりアーカイブ。 2013年4月8日閲覧。
- ^ Grünbacher, Andreas (2010年7月~9月). 「Richacls – Linux上のネイティブNFSv4 ACL」 . bestbits.at. 2013年3月20日時点のオリジナルよりアーカイブ。2013年4月8日閲覧。
- ^ 「ACL」。Linux NFS。
- ^ 「NFSv4 と Posix ドラフト ACL 間のマッピング」。
- ^ "vfs_nfs4acl_xattr(8)" . Sambaマニュアル.
- ^ 「[MS-ADTS]: Active Directory 技術仕様」 2024年6月7日。
- ^ Swift, Michael M. (2002年11月). 「 Windows 2000のアクセス制御の粒度向上」. ACM Transactions on Information and System Security . 5 (4): 398– 437. doi : 10.1145/581271.581273 . S2CID 10702162 .
- ^ J. Barkley (1997)「単純なロールベースアクセス制御モデルとアクセス制御リストの比較」、『ロールベースアクセス制御に関する第2回ACMワークショップの議事録』、127-132ページ。
- ^ G. Karjoth、A. Schade、E. Van Herreweghen (2008)「 XACML での ACL ベースのポリシーの実装」、『2008 Annual Computer Security Applications Conference』。
さらに読む
- Rhodes, Tom. 「ファイルシステムアクセス制御リスト(ACL)」 . FreeBSD ハンドブック. 2013年4月8日閲覧。
- Michael Fox、John Giordano、Lori Stotler、Arun Thomas (2005年8月24日). 「SELinuxとgrsecurity:Linuxセキュリティカーネル拡張機能の比較ケーススタディ」(PDF) .バージニア大学. 2012年2月24日時点のオリジナル(PDF)からアーカイブ。2013年4月8日閲覧。
- Hinrichs, Susan (2005). 「オペレーティングシステムのセキュリティ」 .サイバーセキュリティ 2005年春.イリノイ大学. 2012年3月4日時点のオリジナルよりアーカイブ. 2013年4月8日閲覧.
- ミッチェル、ジョン. 「アクセス制御とオペレーティングシステムのセキュリティ」(PDF) .スタンフォード大学. 2013年4月8日閲覧.
- クラークソン、マイケル. 「アクセス制御」コーネル大学. 2013年4月8日閲覧。
- Klein, Helge (2009-03-12). 「パーミッション:入門、またはDACL、SACL、所有者、SID、ACEの説明」2013年4月8日閲覧。
- 「アクセス制御リスト」 . Microsoft Learn . 2023年2月7日. 2024年5月15日閲覧.
- 「権限の仕組み」 . Microsoft Learn . 2013年7月3日. 2024年5月15日閲覧.