安全性
VM の分離
Skipbox がジョブどうしを分けるしくみ。ジョブごとの新しい VM、ディスクごとの削除、ジョブ一つのためのランナー、外からの接続の遮断、プライベートリポジトリだけ。
ジョブごとに新しい VM
ジョブには、そのジョブのために作った新しい VM を一つずつ用意します。VM が動かすのはそのジョブだけで、ほかのジョブは渡しません。終われば、ディスクごと消します。起動から 6時間たって残っている VM も消します。
ジョブがディスクや Docker やメモリに残したものが、あとのジョブに届くことはありません。
VM が動く場所
ヘルシンキにある、Fluxenic が Hetzner から借りている専用サーバーと、ジョブ一つごとに作る Hetzner Cloud のサーバーです。Hetzner Cloud のサーバーの vCPU は Hetzner のほかの利用者と共有ですが、そのサーバー、ネットワーク、ディスクを別のジョブと共有することはありません。
ジョブ一つのためのランナー
ランナーは、ジョブ一つのために、そのジョブのラベルでその都度登録します。組織では組織の既定のランナーグループに、個人アカウントではジョブのリポジトリに登録するので、そのリポジトリのジョブしか動かせません。ジョブのあとに登録が残ったランナーは削除します。
外からの接続はできない
インターネットからジョブの VM へは接続できません。詳しくはネットワークと外向きの通信へ。
プライベートリポジトリだけ
公開リポジトリでは、プルリクエストを開いただれもが、セルフホストランナーでコードを動かせてしまいます。Skipbox は公開リポジトリのジョブを実行せず、オーナーにメールします。あとから公開にしたリポジトリも、待っているジョブを実行しません。
ジョブが読めるもの
どのランナーでも同じく、ジョブの VM にはワークフローのシークレットとそのジョブ用の GitHub のトークンが入り、ジョブが動かすコードはそれを読めます。GitHub ホストランナーと同じ考え方で、ジョブには必要なシークレットだけを渡してください。
2026年11月9日 更新