セキュリティ

あなたのコードとビルドは、あなたのもののまま

各ジョブは、インバウンド接続を受け付けないマシンで単独で実行されます。Latchkey がコードに加える変更はすべて、あなたがレビューするプルリクエストとして届きます。

最終更新日

セキュリティアーキテクチャの全体を読む
  • 1マシンあたりのジョブ数 (マシンはジョブの終了後に破棄されます)
  • 0ランナーが受け付けるインバウンド接続
  • 0Latchkey がマージするプルリクエスト
  • AES-256Latchkey に保存するシークレットの暗号化

01 · 分離

すべてのジョブに、専用のマシンを

各ジョブは、独自のカーネルと暗号化されたディスクを持つ専用の仮想マシンで実行されます。ジョブが終わるとマシンは終了され、ディスクは削除されます。どのマシンも、2 つ目のジョブを実行することはありません。

  1. 01起動どのジョブも使っていない仮想マシン
  2. 02実行マシン上には、あなたのジョブだけ
  3. 03終了完全に停止し、再利用されません
  4. 04削除暗号化されたディスクも一緒に消えます

コードは、あなたのジョブだけを実行するマシンにチェックアウトされ、そのマシンはジョブの終了時に破棄されます。ジョブの後に Latchkey が保持するものは、プライバシーポリシーとドキュメントに記載しています。

02 · ネットワーク

ランナーからは外へ。外からは何も届きません。

各ランナーは自身のパブリック IPv4 アドレスからインターネットに接続します。このアドレスはランナー自身が開始する接続にだけ使われ、ファイアウォールにはインバウンドルールがありません。それでもビルドはパッケージを取得し、あなたのサービスを呼び出せます。Latchkey CI では、フォークからのプルリクエストがアクセスできるのは GitHub と、固定された一連の公開パッケージレジストリだけです。

03 · 認証情報

ジョブごとに発行される認証情報

Latchkey がジョブのために発行する認証情報は、すべてそのジョブのためだけに発行され、ほかのワークスペースのデータには届きません。いずれもジョブの終了時か約 1 時間で失効します。ただし、Docker が Latchkey のコンテナレジストリに使うトークンは 12 時間有効です。長期間有効な GitHub トークンがランナーに置かれることはありません。

  • クローントークン読み取り専用リポジトリ 1 つ約 1 時間
  • ジョブトークンこのジョブのみハッシュ化して保存ジョブの終了まで
  • キャッシュアクセスこのワークスペースのみスコープ付き最長 12 時間

04 · シークレット

Latchkey に保存したシークレットは封印されたまま

Latchkey に保存したシークレットは AES-256-GCM で暗号化され、Latchkey がそれを復号するのは、そのシークレットを指定するステップを持つ実行中のジョブのためだけです。ジョブのログで値の全体が現れる箇所はすべてマスクされ、ダッシュボードからのリクエストでも、CLI や API キーを使ったリクエストでも、値が返されることはありません。

Latchkey が Actions のシークレットを求めて GitHub の API を呼び出すことはありません。

05 · 変更

コードへの変更はすべて、あなたのレビューを待ちます

Latchkey がコミットするのは、自分で作成した新しい latchkey/ ブランチだけで、その後プルリクエストを開きます。あなたのブランチに push することも、マージすることもないため、マージするかどうかは常にあなたが決めます。

06 · 自己修復

自己修復はガードレールの内側で動きます

ステップが失敗したとき、自己修復が実行できるのは、固定された検証済みのリストにあるアクションだけで、AI にシェルは与えられません。自己修復がエラーになったりタイムアウトしたりした場合、失敗したステップは失敗のままです。

  • 許可apt-get install -y libssl-dev固定リストにあるパッケージ
  • 許可失敗したステップを再試行同じステップ、同じマシン
  • 拒否sudo rm -rf /var/lib/docker許可される sudo コマンドは 1 つだけ
  • 拒否LD_PRELOAD=/tmp/hook.so安全でない環境変数
  • 拒否read ~/.ssh/id_rsa機密性の高いパス

07 · 基本

そのほかも、しっかりカバー

  • 保存時の暗号化

    ランナーのディスク、ビルドキャッシュ、アーティファクトは保存時に暗号化されます。

  • 転送中の暗号化

    すべての公開エンドポイントは HTTPS を使い、API は TLS 1.2 以上を必須としています。

  • 分離されたキャッシュ

    ワークスペースのビルドキャッシュには、そのワークスペースに限定された認証情報でしかアクセスできません。

  • 保持期間

    依存関係のキャッシュは 14 日後、アーティファクトとジョブのログは 7 日後、修復の記録は 90 日後、提案された修正は 365 日後に期限切れになります。

  • スコープ付きの API キー

    API キーは、ほかの権限を選ばない限り読み取り専用で、SHA-256 ハッシュとして保存され、一度だけ表示されます。

  • ワークスペースのロール

    Owner、Admin、Member の各ロールが、請求、メンバー、連携を管理できる人を決めます。

  • サンドボックス化されたフォーク

    Latchkey CI では、フォークからのプルリクエストがアクセスできるのは GitHub と、固定された一連の公開パッケージレジストリだけです。

  • ランナーの時間制限

    起動から 8 時間たっても動いているランナーは、安全装置によって終了されます。

08 · GitHub App

GitHub App の権限を、ひとつずつ

アプリが参照できるリポジトリはあなたが選び、アプリは Actions のシークレットを読む権限を持ちません。アプリが求めるすべての権限と、その理由を示します。

理由権限アクセス
ジョブを Latchkey のランナーで実行するOrganization self-hosted runners読み取りと書き込み
実行とログを読み取る、あなたが依頼した実行を開始する、実行をキャンセルするActions読み取りと書き込み
ファイル、ブランチ、プルリクエスト (プルリクエストが変更するファイルの一覧を含む) を読み取り、変更をプルリクエストとして提案するContents, Workflows, Pull requests読み取りと書き込み
Latchkey CI の結果をコミットに報告し、GitHub Actions から移行する間は、コミットのチェックを読み取るChecks読み取りと書き込み
マージキューが作る各グループを確認し、ワークフローファイルが実行されるグループを Latchkey CI でビルドできるようにするMerge queues読み取り
組織のプラン、Actions の使用量、GitHub ホスト型ランナー、メンバーを読み取るOrganization plan, Organization administration, Members読み取り
リポジトリの基本情報を読み取るMetadata読み取り
Latchkey がリポジトリに作成した webhook を削除するRepository hooks読み取りと書き込み
現在、Latchkey のどの機能でも使われていませんAdministration, Organization hooks読み取りと書き込み、未使用
現在、Latchkey のどの機能でも使われていませんArtifact metadata読み取り、未使用

Actions のシークレットの権限はありません。

報告とレビュー

脆弱性を見つけましたか?

security@latchkey.dev までメールでお知らせください。公開の issue ではなく、非公開でのご報告をお願いします。

security.txt

セキュリティレビューを行っていますか?

詳細はすべてドキュメントにあります。

エージェントが自分で動かせる CI を

ワークフローファイルをコミットしてエージェントを接続すれば、Latchkey がすべてのジョブを実行し、修復し、結果を返します。 ワークフローファイルを書く

30 日間の無料トライアル · クレジットカード不要 · 10,000+ の CI 失敗を毎週自動修復