物理ノードのセキュリティモデル

クラウドMacのセキュリティ境界を、すべてのアクセスに適用

RunnerVPSは、注文ごとに1台の専用Apple Silicon物理ノードを提供します。セキュリティは専用端末であることだけでなく、チームがSSHキーを割り当て、VNCを使い、ビルドシークレットを注入し、ツールチェーンを更新し、契約終了前にデータを搬出する方法にも左右されます。

リソース範囲
1件の注文につき1台の物理マシン
ローカルストレージ
他のテナントと共有しない
管理原則
認証情報を最小化し、操作を追跡可能に
セキュリティ引き渡し記録 NODE ACCESS / READY
専用ノード
01
注文との紐付け 端末と注文記録を対応付ける
02
認証情報の引き渡し 初回アクセス後すぐにローテーション
03
チームの接続 メンバーごとに個別キーを割り当てる
04
契約終了時の搬出 成果物をエクスポートしてデータを削除
コンピューティングリソース
専用
リモートアクセス
SSH / VNC
記録の確認
ユーザーが定期的に実施
シークレットの管理元
ユーザー自身の運用
引き渡しはセキュリティ運用の終点ではありません VERIFY → LIMIT → ROTATE → REMOVE
セキュリティモデルの概要

専用物理マシンでリソース境界を明確に

RunnerVPSが提供するのは、共有仮想マシンではなくクラウドMacの専用物理ノードです。コンピューティングリソースと端末のローカルストレージは他のテナントと共有されません。ただし、アカウント、コード、キー、ソフトウェア設定は利用チームが継続して管理する必要があります。

端末レベルの分離

1件の注文につき1台の専用物理マシンが割り当てられます。CPU、メモリ、内蔵SSDは他のテナントと共有されないため、明確な端末識別子に基づいて資産台帳、アクセス許可リスト、引き継ぎ記録を整備できます。

注文 ↔ 端末 物理リソースを専有

アクセス責任を明確に

誰が端末にログインできるか、どのアカウントを使うか、キーをいつ無効化するかはユーザーが決めます。複数人で同じ秘密鍵やパスワードを長期間共有せず、接続認証情報をプロジェクト文書や自動化ログに記録しないでください。

個人単位で認可 速やかに無効化

データライフサイクルを管理

コード、ビルドキャッシュ、署名素材、成果物をいつ端末に置き、どれだけ保存し、どうバックアップ・削除するかを作業開始前に決めます。契約終了はバックアップの代わりにはなりません。

投入前に計画 終了前にクリーンアップ
アクセス制御

すべてのログインに個別のIDを付与

チームを接続する前に、アカウント、キー、権限、確認頻度を決めます。管理者認証情報を共有してから、チャット履歴で操作担当者を追跡する運用は避けてください。

01

1人1本のSSHキー

コマンドラインアクセスが必要なメンバーごとに固有の公開キーを登録します。秘密鍵はメンバーが管理する端末、またはチームが承認したキー管理ツールにのみ保管し、メール、チケット、コードリポジトリで送信しないでください。

個別に無効化可能
02

最小権限のアカウントを標準に

日常的なコード取得、テスト実行、成果物の返送に、常時最大権限は必要ありません。ソフトウェアのインストールやシステム設定の変更など、明確な操作に限って一時的に権限を昇格してください。

誤操作を削減
03

パスワードとキーを分けて管理

GUIアカウントには固有の強力なパスワードを使用し、SSHアクセスではキー認証を優先します。端末のパスワードをコードホスティング、メール、その他のシステムと使い回さないでください。

使い回しのリスクを低減
04

リモートログイン記録を定期確認

ログイン時刻、送信元、アカウント、失敗試行を確認します。チームの作業時間やメンバーのネットワークと一致しない記録を見つけたら、まず関連する認証情報を無効化し、必要なログを保存してセキュリティ報告を提出してください。

調査の手がかりを保存
VNCセキュリティ

GUIも管理された接続経路を通す

VNCはmacOSのGUIをリモートで使うのに適していますが、接続を長期間公開したり、認証情報を複数人で共有したりする運用は避けてください。管理されたネットワークまたはSSHトンネル経由での接続を優先します。

A

接続前

  • 接続先が注文に記載された端末名とノードであることを確認する。
  • 先にSSHホストフィンガープリントを確認してからポート転送を設定する。
  • 接続を開始できるローカル端末とチームメンバーを制限する。
B

セッション中

  • 画面を離れるときはmacOSセッションをロックし、操作可能なデスクトップへの接続を残さない。
  • 共有画面、録画、ログにパスワード、トークン、秘密鍵の内容を表示しない。
  • 機密ファイルを転送する前に、保存先とアクセス権を確認する。
C

メンバーが離脱した後

  • そのメンバーのSSH公開キーとシステムアカウントのアクセスを直ちに無効化する。
  • 共有されたGUIパスワードとプロジェクトトークンをローテーションする。
  • 最近のリモートログイン記録を確認し、アクセス許可リストを更新する。
長期認証情報を共有しない

複数人で協業する場合は、メンバーごとに個別に無効化できるアクセス方法を用意してください。認証情報を共有すると、離脱時の無効化、操作追跡、インシデント調査が難しくなります。

ビルドシークレット管理

シークレットはジョブ実行時に注入し、コードと一緒に流さない

証明書、署名ファイル、アクセストークン、環境変数は、チーム独自のシークレット管理プロセスから取得します。RunnerVPSは端末と基本的な接続機能を提供しますが、プロジェクトの認証情報管理に代わるものではありません。

ビルドジョブへの注入チェックリスト RUN SCOPE: ONE JOB
署名証明書 ジョブ開始時にインポート ジョブ完了後に削除
署名ファイル ファイル権限を制限 リポジトリにコミットしない
アクセストークン プロジェクト単位で範囲を限定 個別のローテーション方針を設定
環境変数 ランナーが注入 ログへの出力を禁止
ビルド成果物 管理されたストレージへ返送 確認後にコピーを削除

コードリポジトリに入れない

秘密鍵、証明書パスワード、署名ファイル、トークン、シークレットを含む設定ファイルを、いかなるブランチにもコミットしないでください。後から削除しても、履歴に内容が残る可能性があります。

ビルドログに入れない

コマンドエコーで機密値を表示しないようにし、ログ、スクリーンショット、失敗レポートをマスキングします。問題を調査するときはエラーの前後関係を残し、認証情報全体をコピーしないでください。

ジョブ単位で有効範囲を制限

トークンには、現在のリポジトリ、現在のパイプライン、必要な操作だけに権限を付与します。ジョブ終了時、メンバー離脱時、または漏えいの疑いがあるときは直ちにローテーションしてください。

システムとソフトウェアの更新

ツールチェーンを検証してからmacOSとXcodeを更新

システム更新により、SDK、コマンドラインツール、シミュレータ、署名の動作が変わる場合があります。継続的なビルドノードでは、本番環境を変更する前に互換性を検証してください。

  1. 01

    現在のベースラインを記録

    macOS、Xcode、コマンドラインツール、パッケージマネージャー、主要な依存関係、runnerのバージョンを保存します。プロジェクトで現在成功する最小テストジョブと成果物の検証方法も記録します。

  2. 02

    プロジェクトの互換性を検証

    まずプロジェクト要件、SDKサポート、依存関係の固定、署名設定を確認します。重要なプロジェクトでは、再現可能なテストジョブでコンパイル、ユニットテスト、署名、成果物のエクスポートを確認します。

  3. 03

    復旧経路を準備

    変更前に、プロジェクトに必要なデータ、設定一覧、ビルド成果物をバックアップします。依存関係を再インストールでき、シークレットをチーム独自の運用から再注入できることを確認します。

  4. 04

    低リスクの時間帯に実行

    実行中のリリースジョブを避け、新しいビルドがノードに入らないよう一時停止します。更新後は、リモートアクセス、ファイアウォール、runnerの状態、ディスク容量を再確認します。

  5. 05

    最小ジョブで受け入れ確認

    まず規模を制御した検証ジョブを実行し、その後フルパイプラインを再開します。結果がベースラインと異なる場合は、ログ、バージョン情報、再現手順を保存してから対応を続けます。

データ搬出の手順

契約終了前に、残すべきデータを持ち出す

契約終了前に、成果物のエクスポート、アカウントの削除、キーの無効化、プロジェクトファイルのクリーンアップを完了してください。端末のローカルストレージを唯一のバックアップにせず、端末にアクセスできなくなった後まで削除作業を先延ばしにしないでください。

01 エクスポート

ビルド成果物、プロジェクトデータ、ログ、保存が必要な設定一覧を回収する。

02 確認

チーム管理下のストレージで、ファイルを開けること、チェックサムが一致すること、権限が正しいことを確認する。

03 無効化

メンバーアカウント、SSH公開キー、プロジェクトトークン、証明書、署名素材を削除する。

04 クリーンアップ

プロジェクトディレクトリ、キャッシュ、一時ファイル、ダウンロード、ローカル成果物のコピーを削除する。

05 確認

コンソールで契約期間の状態を確認し、注文に紐付く必要な引き継ぎ記録を保存する。

責任範囲

ユーザーは契約終了前に、必要なデータのエクスポートと検証を完了する責任があります。契約終了後も端末を使ってバックアップを追加したり、プロジェクトファイルや未エクスポートのビルド成果物を回収したりできるとは限りません。

セキュリティインシデント報告

事実に基づく調査を始められるだけの情報を提出

不審なログイン、認証情報の漏えいの疑い、誤ったアクセス範囲、その他のセキュリティ問題を発見した場合は、必要な認証情報の無効化とアクセス制限を先に行い、問い合わせページでセキュリティ報告の分類を選択してください。

01 影響範囲

関係する端末識別子、ノード、アカウント、プロジェクト、影響を受けた可能性のあるデータ種別を説明します。パスワード、秘密鍵、完全な支払い認証情報は送信しないでください。

02 インシデントのタイムライン

最初に発見した時刻、異常が続いた範囲、実行済みの無効化または隔離措置、最後に正常を確認した時点を記載します。

03 再現手順

入口、操作、期待結果、実際の結果を実際の順序で説明します。問題を安定して再現できない場合は、発生頻度とトリガー条件を記載してください。

04 マスキング済みの証拠

必要なログ断片、エラーメッセージ、リクエスト時刻、スクリーンショットを提供します。トークン、キー、パスワード、証明書の内容、無関係な個人情報は隠してください。

境界の明確な物理ノードから始める

Runner M4またはRunner M4 Plus、契約期間、ノードを選び、引き渡し後にチーム独自のキーとシークレット管理プロセスで接続を完了します。