コンテンツへスキップ
Latchkey
ドキュメントメニュー

セキュリティとGitHubの権限

Latchkey GitHub Appが読み取り、変更できるものの正確な内容、ランナーインフラがどのように隔離されるか、削除がどのように機能するか。

このページは、Latchkeyがアクセスできるものとできないものを、セキュリティレビューが率直な回答を得られるよう、平易な言葉で説明します。次の4つを扱います: GitHub Appが読み取るもの、Latchkeyがリポジトリに書き込むタイミング、ランナーインフラがどのように隔離されるか、そしてデータ削除がどのように機能するかです。

Latchkeyが読み取るもの、そして決して触れないもの#

Latchkeyが読み取るもの

  • ワークフローの実行とジョブのメタデータ: 名前、タイミング、ステータス、ランナーラベル
  • .github/workflows/ 配下のワークフローYAMLファイル
  • 有効化されたリポジトリのリポジトリメタデータ(名前、可視性、デフォルトブランチ)
  • GitHubランナーのコストを正確にモデル化するためのあなたのGitHubアカウントプラン

Latchkeyが決して読み取らないもの

  • ワークフローファイル以外の、アプリケーションのソースコード
  • シークレットと環境変数の値
  • Issueとプルリクエストのディスカッション

この境界は意図的なものです: 左側のすべては特定の機能を支えるために存在し、それ以外は一切要求されません。実行とジョブのメタデータは分析ダッシュボードの原材料であり、ワークフローYAMLは最適化を提案するためにAIが読み取るものであり、最適化PRが編集する唯一の種類のファイルです。リポジトリメタデータはモニタリングモーダルのリポジトリリストを駆動し、GitHubプランはコスト分析ページのGitHub側コストモデルに供給されます。

Latchkeyがリポジトリに書き込むとき#

プルリクエストを通じてのみ、そして2つの状況でのみです:

  • 最適化の推奨事項で適用をクリックしたとき: Latchkeyがワークフローファイルを変更するPR(ブランチ latchkey/optimize-...)を開きます。
  • セルフヒーリングが永続的な修正を提案するとき: 根本原因と変更を説明する修復PRです。
書き込みの契機何がそれをトリガーするかGitHubで表示されるもの
最適化PROptimization Insightsページで推奨事項の適用をクリックしたときlatchkey/optimize-... という名前のブランチ上の、「latchkey AI: Optimize <workflow> workflow」というタイトルのプルリクエスト
修復PRセルフヒーリングが、リポジトリ内で永続的な修正を必要とする根本原因を診断したとき何が失敗し、なぜ、そして変更が何をするかを説明する通常のプルリクエスト
ランナーグループの管理アプリのインストール。latchkey-* ジョブをマネージドランナーにルーティングできるようにするためアプリは組織内で自身のランナーグループを管理します。リポジトリの内容は変更されません

どちらの種類のPRも、チームがレビュー、編集、またはクローズするための通常のプルリクエストです。Latchkeyはあなたのブランチに直接プッシュすることも、何かをマージすることも決してありません。したがってLatchkeyのPRを一度もマージしなければ、リポジトリ内は何も変わりません。フォークからのプルリクエストは決して触れられません。アプリが管理するランナーグループは、リポジトリの内容ではなく組織のCI配管です。

ランナーの隔離#

マネージドランナーはあなたのコードを実行するため、その隔離モデルはこのページの他の何よりも重要です。4つの特性が連携して機能します:

  • ランナーごとに1ジョブ。 すべてのマネージドランナーは単一のジョブを実行し、その後破棄されます。ジョブ間や顧客間で何も持続しません。ジョブが書き込み、インストール、または破壊したものは、マシンとともに消えます。
  • プライベートネットワーク。 ランナーはパブリックIPのないプライベートサブネットに存在し、インバウンドアクセスはありません: ランナーは作業のために外部へ接続しますが、インターネット上の何もそれへの接続を開始できません。
  • 強化されたインスタンスのデフォルト設定。強制されたインスタンスメタデータ保護と暗号化されたディスクを含みます。
  • 登録はジャストインタイム。 新しいランナーは使い捨ての認証情報で正確に1つのジョブに登録するため、盗まれる長期の実行認証情報はありません。認証情報はジョブが完了すると使い切られます。

セルフヒーリングとあなたのシークレット#

セルフヒーリングの診断は、ジョブがすでに出力しているステップ出力に対して、ランナー上でローカルに実行されるため、新たに何かが露出することはありません: GitHub Actionsによってマスクされたシークレットはマスクされたままで、診断が見たすべてを含むランナーはジョブ後に破棄されます。実行中の修正はエフェメラルなランナーにのみ触れ、永続的な修正はレビュー用のプルリクエストとしてのみ届き、フォークからのプルリクエストは決して触れられません。完全なモデルはセルフヒーリングにあります。

APIキーとMCPサーバー#

MCP経由でAIエージェントを接続する場合、考慮すべき認証情報はAPIキーです:

  • 読み取り専用スコープ。 キーはCIの失敗データを読み取れますが、LatchkeyやGitHubで何かを変更することはできません。
  • workspaceスコープ。 workspaceはキー自体から導出されるため、キーは自身のworkspaceのデータしか見ることができません。
  • 一度だけ表示。 完全なキー(lk_live_ で始まります)は作成時にのみ表示されます。その後、UIはプレースホルダーを表示します。
  • 取り消し可能。 Settings、API Keysから任意のキーを即座に取り消せます。取り消されたキーは監査のためリストに残ります。

キーを持つ者は誰でも、ログの抜粋を含むCIの失敗データを読み取れるため、キーはパスワードのように扱ってください: リポジトリではなくエージェントの設定に保存し、漏洩した可能性のあるキーはローテーションしてください。

データの取り扱い#

  • データは転送中(TLS)および保存時に暗号化されます。
  • 分析データはあなたのworkspaceにスコープされ、組織ごとに隔離されます: 各workspaceは独自のプラン、チーム、リポジトリ、データを持ち、あるworkspaceのメンバーであることが別のworkspaceへの可視性を与えることは決してありません。
  • セルフヒーリングの診断はランナー内のステップログに対して機能します。ダッシュボードに表示される修復レポートには、診断と取られたアクションが含まれます。

データの削除#

  • リポジトリを無効化する: 取り込みが即座に停止し、そのデータはダッシュボードからアーカイブされます。後で再有効化すると新しいバックフィルが開始します。リポジトリの管理を参照してください。
  • サブスクリプションをキャンセルする: アクセスはブロックされますが、データは保持されるため再サブスクライブで復元されます。
  • workspaceを削除する(Settings、Account、オーナーのみ): リポジトリ、ワークフローデータ、マネージドランナーのリソースを永久に削除し、請求をキャンセルします。
  • アカウントを削除する: あなたのLatchkeyアカウントと所有するworkspaceを削除します。これらのいずれによっても、あなたのGitHubリポジトリとワークフローが影響を受けることは決してありません。