Skipbox
ページ一覧VM の分離

安全性

VM の分離

Skipbox がジョブどうしを分けるしくみ。ジョブごとの新しい VM、ディスクごとの削除、ジョブ一つのためのランナー、外からの接続の遮断、プライベートリポジトリだけ。

Markdown で表示

ジョブごとに新しい VM

ジョブには、そのジョブのために作った新しい VM を一つずつ用意します。VM が動かすのはそのジョブだけで、ほかのジョブは渡しません。終われば、ディスクごと消します。起動から 6時間たって残っている VM も消します。

ジョブがディスクや Docker やメモリに残したものが、あとのジョブに届くことはありません。

VM が動く場所

ヘルシンキにある、Fluxenic が Hetzner から借りている専用サーバーと、ジョブ一つごとに作る Hetzner Cloud のサーバーです。Hetzner Cloud のサーバーの vCPU は Hetzner のほかの利用者と共有ですが、そのサーバー、ネットワーク、ディスクを別のジョブと共有することはありません。

ジョブ一つのためのランナー

ランナーは、ジョブ一つのために、そのジョブのラベルでその都度登録します。組織では組織の既定のランナーグループに、個人アカウントではジョブのリポジトリに登録するので、そのリポジトリのジョブしか動かせません。ジョブのあとに登録が残ったランナーは削除します。

外からの接続はできない

インターネットからジョブの VM へは接続できません。詳しくはネットワークと外向きの通信へ。

プライベートリポジトリだけ

公開リポジトリでは、プルリクエストを開いただれもが、セルフホストランナーでコードを動かせてしまいます。Skipbox は公開リポジトリのジョブを実行せず、オーナーにメールします。あとから公開にしたリポジトリも、待っているジョブを実行しません。

ジョブが読めるもの

どのランナーでも同じく、ジョブの VM にはワークフローのシークレットとそのジョブ用の GitHub のトークンが入り、ジョブが動かすコードはそれを読めます。GitHub ホストランナーと同じ考え方で、ジョブには必要なシークレットだけを渡してください。

2026年11月9日 更新