- コンピューティングリソース
- 専用
- リモートアクセス
- SSH / VNC
- 記録の確認
- ユーザーが定期的に実施
- シークレットの管理元
- ユーザー自身の運用
クラウドMacのセキュリティ境界を、すべてのアクセスに適用
RunnerVPSは、注文ごとに1台の専用Apple Silicon物理ノードを提供します。セキュリティは専用端末であることだけでなく、チームがSSHキーを割り当て、VNCを使い、ビルドシークレットを注入し、ツールチェーンを更新し、契約終了前にデータを搬出する方法にも左右されます。
- リソース範囲
- 1件の注文につき1台の物理マシン
- ローカルストレージ
- 他のテナントと共有しない
- 管理原則
- 認証情報を最小化し、操作を追跡可能に
専用物理マシンでリソース境界を明確に
RunnerVPSが提供するのは、共有仮想マシンではなくクラウドMacの専用物理ノードです。コンピューティングリソースと端末のローカルストレージは他のテナントと共有されません。ただし、アカウント、コード、キー、ソフトウェア設定は利用チームが継続して管理する必要があります。
端末レベルの分離
1件の注文につき1台の専用物理マシンが割り当てられます。CPU、メモリ、内蔵SSDは他のテナントと共有されないため、明確な端末識別子に基づいて資産台帳、アクセス許可リスト、引き継ぎ記録を整備できます。
アクセス責任を明確に
誰が端末にログインできるか、どのアカウントを使うか、キーをいつ無効化するかはユーザーが決めます。複数人で同じ秘密鍵やパスワードを長期間共有せず、接続認証情報をプロジェクト文書や自動化ログに記録しないでください。
データライフサイクルを管理
コード、ビルドキャッシュ、署名素材、成果物をいつ端末に置き、どれだけ保存し、どうバックアップ・削除するかを作業開始前に決めます。契約終了はバックアップの代わりにはなりません。
すべてのログインに個別のIDを付与
チームを接続する前に、アカウント、キー、権限、確認頻度を決めます。管理者認証情報を共有してから、チャット履歴で操作担当者を追跡する運用は避けてください。
1人1本のSSHキー
コマンドラインアクセスが必要なメンバーごとに固有の公開キーを登録します。秘密鍵はメンバーが管理する端末、またはチームが承認したキー管理ツールにのみ保管し、メール、チケット、コードリポジトリで送信しないでください。
最小権限のアカウントを標準に
日常的なコード取得、テスト実行、成果物の返送に、常時最大権限は必要ありません。ソフトウェアのインストールやシステム設定の変更など、明確な操作に限って一時的に権限を昇格してください。
パスワードとキーを分けて管理
GUIアカウントには固有の強力なパスワードを使用し、SSHアクセスではキー認証を優先します。端末のパスワードをコードホスティング、メール、その他のシステムと使い回さないでください。
リモートログイン記録を定期確認
ログイン時刻、送信元、アカウント、失敗試行を確認します。チームの作業時間やメンバーのネットワークと一致しない記録を見つけたら、まず関連する認証情報を無効化し、必要なログを保存してセキュリティ報告を提出してください。
GUIも管理された接続経路を通す
VNCはmacOSのGUIをリモートで使うのに適していますが、接続を長期間公開したり、認証情報を複数人で共有したりする運用は避けてください。管理されたネットワークまたはSSHトンネル経由での接続を優先します。
接続前
- 接続先が注文に記載された端末名とノードであることを確認する。
- 先にSSHホストフィンガープリントを確認してからポート転送を設定する。
- 接続を開始できるローカル端末とチームメンバーを制限する。
セッション中
- 画面を離れるときはmacOSセッションをロックし、操作可能なデスクトップへの接続を残さない。
- 共有画面、録画、ログにパスワード、トークン、秘密鍵の内容を表示しない。
- 機密ファイルを転送する前に、保存先とアクセス権を確認する。
メンバーが離脱した後
- そのメンバーのSSH公開キーとシステムアカウントのアクセスを直ちに無効化する。
- 共有されたGUIパスワードとプロジェクトトークンをローテーションする。
- 最近のリモートログイン記録を確認し、アクセス許可リストを更新する。
複数人で協業する場合は、メンバーごとに個別に無効化できるアクセス方法を用意してください。認証情報を共有すると、離脱時の無効化、操作追跡、インシデント調査が難しくなります。
シークレットはジョブ実行時に注入し、コードと一緒に流さない
証明書、署名ファイル、アクセストークン、環境変数は、チーム独自のシークレット管理プロセスから取得します。RunnerVPSは端末と基本的な接続機能を提供しますが、プロジェクトの認証情報管理に代わるものではありません。
コードリポジトリに入れない
秘密鍵、証明書パスワード、署名ファイル、トークン、シークレットを含む設定ファイルを、いかなるブランチにもコミットしないでください。後から削除しても、履歴に内容が残る可能性があります。
ビルドログに入れない
コマンドエコーで機密値を表示しないようにし、ログ、スクリーンショット、失敗レポートをマスキングします。問題を調査するときはエラーの前後関係を残し、認証情報全体をコピーしないでください。
ジョブ単位で有効範囲を制限
トークンには、現在のリポジトリ、現在のパイプライン、必要な操作だけに権限を付与します。ジョブ終了時、メンバー離脱時、または漏えいの疑いがあるときは直ちにローテーションしてください。
ツールチェーンを検証してからmacOSとXcodeを更新
システム更新により、SDK、コマンドラインツール、シミュレータ、署名の動作が変わる場合があります。継続的なビルドノードでは、本番環境を変更する前に互換性を検証してください。
-
01
現在のベースラインを記録
macOS、Xcode、コマンドラインツール、パッケージマネージャー、主要な依存関係、runnerのバージョンを保存します。プロジェクトで現在成功する最小テストジョブと成果物の検証方法も記録します。
-
02
プロジェクトの互換性を検証
まずプロジェクト要件、SDKサポート、依存関係の固定、署名設定を確認します。重要なプロジェクトでは、再現可能なテストジョブでコンパイル、ユニットテスト、署名、成果物のエクスポートを確認します。
-
03
復旧経路を準備
変更前に、プロジェクトに必要なデータ、設定一覧、ビルド成果物をバックアップします。依存関係を再インストールでき、シークレットをチーム独自の運用から再注入できることを確認します。
-
04
低リスクの時間帯に実行
実行中のリリースジョブを避け、新しいビルドがノードに入らないよう一時停止します。更新後は、リモートアクセス、ファイアウォール、runnerの状態、ディスク容量を再確認します。
-
05
最小ジョブで受け入れ確認
まず規模を制御した検証ジョブを実行し、その後フルパイプラインを再開します。結果がベースラインと異なる場合は、ログ、バージョン情報、再現手順を保存してから対応を続けます。
契約終了前に、残すべきデータを持ち出す
契約終了前に、成果物のエクスポート、アカウントの削除、キーの無効化、プロジェクトファイルのクリーンアップを完了してください。端末のローカルストレージを唯一のバックアップにせず、端末にアクセスできなくなった後まで削除作業を先延ばしにしないでください。
ビルド成果物、プロジェクトデータ、ログ、保存が必要な設定一覧を回収する。
チーム管理下のストレージで、ファイルを開けること、チェックサムが一致すること、権限が正しいことを確認する。
メンバーアカウント、SSH公開キー、プロジェクトトークン、証明書、署名素材を削除する。
プロジェクトディレクトリ、キャッシュ、一時ファイル、ダウンロード、ローカル成果物のコピーを削除する。
コンソールで契約期間の状態を確認し、注文に紐付く必要な引き継ぎ記録を保存する。
ユーザーは契約終了前に、必要なデータのエクスポートと検証を完了する責任があります。契約終了後も端末を使ってバックアップを追加したり、プロジェクトファイルや未エクスポートのビルド成果物を回収したりできるとは限りません。
事実に基づく調査を始められるだけの情報を提出
不審なログイン、認証情報の漏えいの疑い、誤ったアクセス範囲、その他のセキュリティ問題を発見した場合は、必要な認証情報の無効化とアクセス制限を先に行い、問い合わせページでセキュリティ報告の分類を選択してください。
関係する端末識別子、ノード、アカウント、プロジェクト、影響を受けた可能性のあるデータ種別を説明します。パスワード、秘密鍵、完全な支払い認証情報は送信しないでください。
最初に発見した時刻、異常が続いた範囲、実行済みの無効化または隔離措置、最後に正常を確認した時点を記載します。
入口、操作、期待結果、実際の結果を実際の順序で説明します。問題を安定して再現できない場合は、発生頻度とトリガー条件を記載してください。
必要なログ断片、エラーメッセージ、リクエスト時刻、スクリーンショットを提供します。トークン、キー、パスワード、証明書の内容、無関係な個人情報は隠してください。