Skip to content
Latchkey

アクセス制御リストとは?リソースごとの権限リスト

アクセス制御リスト (ACL) は、リソースに付与されたリストであり、どのアイデンティティがそのリソースに対してどのアクションを実行できるかを正確に定めます。

アクセス制御リスト、すなわちACLは、認可を表現する最も古く最も直接的な方法の一つです。保護された各リソースはエントリのリストを持ち、各エントリはどのアイデンティティがどのアクションを許可 (または拒否) されるかを示します。ACLはファイル、クラウドストレージのバケット、そしてCI/CDインフラ全体のネットワークリソースで見られます。

ACLの仕組み

各エントリはアイデンティティとリソースに対する権限を対応付けます。このユーザーは読み取り可能、あのグループは書き込み可能、このサービスは拒否、といった具合です。要求が到着すると、システムはリストをたどって判断します。権限は中央のロールカタログではなく、リソースとともに存在します。

ACLに遭遇する場所

  • buildエージェント上のファイルシステム権限。
  • artifact向けのクラウドストレージのバケットおよびオブジェクトのACL。
  • サブネット間のトラフィックを制御するネットワークACL。

ACL対RBAC

ACLはリソース中心です。「誰がこのものに触れられるか?」と問います。RBACはアイデンティティ中心です。「このロールは何ができるか?」と問います。ACLは正確ですが、各リソースが独自のリストを保持するため、大規模では管理が難しくなることがあります。

CI/CDにおけるACL

パイプラインはartifact、cache、ストレージバケットを読み書きし、これらはすべてACLで管理される可能性があります。パブリック読み取りを許可する設定ミスのバケットACLは漏洩の再発源であるため、artifactストレージのACLは慎重なレビューに値します。

よくある落とし穴

ACLの氾濫が主なリスクです。何千ものリソースがそれぞれ独自のエントリを持つと、監査が不可能になります。過度に寛容なエントリ (パブリックアクセス、広範な許可ルール) が、データが露出する原因です。多くのプラットフォームは今や、オブジェクトごとのACLよりもポリシーベースのアクセスを好みます。

ACLとbuild環境

runner上では、ファイルシステムのACLがjobの読み書きできるものを決定します。エフェメラルで隔離されたrunner (Latchkeyのマネージドrunnerなど) は毎回クリーンな状態で開始するため、jobは以前のjobが残したACL保護されたファイルを継承できません。

重要なポイント

  • ACLは、誰がどのアクションを実行できるかを示すリソースごとのリストです。
  • RBACのようなアイデンティティ中心のモデルとは異なり、リソース中心です。
  • 設定を誤ったストレージACLは、CIにおけるartifact漏洩の頻繁な原因です。

関連ガイド