セキュリティモデルと責任範囲

分離・アクセス・状態を整理し、すべてのビルドを守る。

1件の注文につき1台の専有物理ホストを提供します。仮想マシンではありません。デバイス分離は出発点に過ぎず、アカウント認証情報、リモートセッション、署名資材、バックアップ、プロジェクト設定は開発プロセスに沿って個別に管理する必要があります。

分離の基本
1件の注文 に対応する 1台の専有ホスト
計算資源とローカルストレージは注文ごとに専有
上流ネットワーク回線は共有インフラ
アカウント、鍵、プロジェクト権限はユーザーが管理

デバイスを専有しても、ネットワーク、リポジトリ、アップロード先、チームアカウントまで自動的に分離されるわけではありません。各層で権限と監視項目を個別に設定してください。

分離モデル

専有されるのはホストであり、ネットワーク経路全体ではありません。

分離強度を判断する際は、デバイス、ネットワーク、アカウント、外部システムを分けて確認し、「専有物理ホスト」がすべての工程を自動的に専有するものと誤解しないようにします。

デバイス層:注文単位で専有

有効な1件の注文につき、1台の専有物理ホストが割り当てられます。CPU、メモリ、ローカルストレージは他の注文と複数の仮想インスタンスに分割されず、macOSのGUIとコマンドラインをビルド、デバッグ、タスク実行に直接利用できます。

  • 他の注文からこのホストへログインまたは割り当てられることはありません。
  • ビルドキャッシュ、作業ディレクトリ、ローカルログは現在のデバイス環境に保存されます。
  • ホストを解放する前に、保持するデータを移行してください。

回線層:共有インフラ

データセンターの出口回線、通信事業者回線、インターネット経路は複数のデバイスで共有される場合があります。ホストの専有はパブリックネットワーク経路の専有を意味しないため、接続品質とアクセス方針を個別に監視してください。

  • ワークフローに必要なアドレス、ポート、サービスだけを許可します。
  • リポジトリ、成果物のアップロード先、依存関係の取得元では、それぞれの権限管理を継続してください。
  • 異常時は、ホスト状態、接続状態、対象サービスの応答を分けて記録します。
アカウントと認証情報

初回接続後に最初に行うのは、アクセス範囲の縮小です。

引き渡し時の接続情報をチーム共通の入口として長期間使わないでください。初回ログイン後、追跡・無効化・ローテーションが可能なアクセス方式をすぐに整備します。

01

初期認証情報を更新

初回ログイン後にシステムの認証情報を更新し、旧情報が自動化スクリプト、端末履歴、チーム文書で使われていないことを確認します。

02

鍵認証を優先

コマンドライン接続には個別の鍵を優先して使用します。メンバーや自動化タスクごとに異なる鍵を割り当てれば、単一のアクセス元だけを無効化できます。

03

共有アカウントを避ける

複数人で同じシステムアカウントを使うと、操作元が不明確になります。役割ごとに権限を割り当て、日常の開発権限で管理操作まで行える状態を避けてください。

04

権限を定期的に見直す

メンバー変更、プロジェクト終了、自動化タスクの停止時には、アカウント、鍵、リポジトリトークン、アップロード認証情報がまだ必要か確認します。

権限レビューの最小項目

メンバーまたはパイプラインを変更するたびに、5つの入口を確認します。

  • システムアカウント現在の操作者だけを残す
  • SSH公開鍵無効な鍵を削除する
  • リポジトリ権限必要なプロジェクトに限定する
  • 環境変数読み取り範囲を限定する
  • アップロード認証情報タスク単位で個別に許可する
リモートアクセス保護

接続入口をワークフローに必要な最小範囲に絞る。

SSH、VNC、macOS画面共有はそれぞれ役割が異なります。接続方式を選んだら、公開範囲、セッション動作、クライアントバージョン、認証情報のローテーション周期も合わせて設定します。

リモートアクセス保護チェックリスト
確認項目 実施すること 避けること 確認シグナル
公開範囲 現在の接続方式と自動化タスクに必要な入口だけを残す。 トラブル対応で一時的に広げた範囲を戻さない。 未使用の入口では接続できない。
セッションロック GUIセッションを離れるときは画面をロックし、タスク終了後は明示的にログアウトする。 共有端末で認証済みセッションを開いたままにする。 再入室時に再認証が必要になる。
クライアント更新 サポート対象のSSH、VNC、画面共有クライアントを使用する。 出所を確認できない古いクライアントを使い続ける。 クライアントのバージョンがチーム基準と一致する。
異常確認 ログイン時刻、接続元、アクティブセッション、最近の設定変更を確認する。 ホストがオンラインであることだけでアクセス正常と判断する。 アクティブセッションと実際の操作者が1対1で対応する。
認証情報のローテーション メンバー離脱、鍵の漏えい懸念、権限変更があれば直ちにローテーションする。 同じ認証情報を複数のプロジェクトやメンバー端末にコピーする。 旧認証情報が無効になり、新しい認証情報が必要な場所だけに存在する。
低速回線対策でアクセス範囲を広げない

画質を下げる、解像度を固定する、画面アニメーションを減らすことでリモート操作を改善できますが、そのために公開入口を増やす必要はありません。接続品質はまず遅延、帯域幅、クライアント設定、同時セッションを順に確認します。

リモートアクセス方法を見る
データライフサイクル

初回同期から、最終移行の経路を確保する。

利用期間中のソースコード、ビルドキャッシュ、モデル、素材、成果物はユーザーが整理・バックアップします。ホスト解放の直前になって、持ち出すべきデータを初めて確認することは避けてください。

接続

データソースと保存先を定義

リポジトリ、素材ソース、依存キャッシュ、成果物の保存先を記録します。再生成できるデータと保持必須のデータを分け、ホスト全体を唯一のコピーにしないでください。

運用

ビルドのペースに合わせてバックアップ

プロジェクトの進行に合わせてソース変更、出力成果物、重要な設定を同期します。自動化タスクでは、失敗時に残すログと成功時にアップロードする結果を明確にします。

移行

コピーを実際に使えるか確認

ファイルがコピーされたことだけを確認しないでください。アーカイブを展開できるか、必要な設定をプロジェクトが認識するか、成果物が完全かを抜き取り確認し、復元に必要なバージョンを記録します。

解放

項目ごとに確認してから利用を終了

ホスト解放前に、成果物、ソースコード、証明書、プロビジョニングプロファイル、プロジェクト設定、必要なキャッシュがチームルールに沿って処理済みであることを確認し、不要な外部トークンと鍵を無効化します。

ビルド資材の保護

署名、リポジトリ、アップロード権限を同じ秘密情報で全工程に通さない。

ソースコードの取得、ビルド実行、署名、成果物のアップロードを異なる権限領域に分けます。工程で資材をホストに置く場合も、可視範囲、利用時間、ログ出力を制限してください。

ビルド資材の権限分離とマスキング原則
資材 推奨権限 注入方法 ログ処理
署名証明書 署名が必要なタスクと操作者だけに許可する。 管理された工程でインポートし、共有ディレクトリに散在させない。 証明書パスワード、エクスポートパスワード、完全な識別情報を出力しない。
プロビジョニングプロファイル プロジェクトと対象環境ごとに管理する。 ビルドタスクが明示的なファイルを選択し、あいまいな一致を避ける。 ファイル種別と一致結果を残し、機密フィールドを隠す。
環境変数 実際に使用するプロセスにだけ提供する。 実行時に注入し、ソースコードや公開設定に書き込まない。 コマンドエコー、エラースタック、デバッグ出力をマスキングする。
リポジトリトークン 読み取り専用を優先し、必要なリポジトリに限定する。 タスク環境から読み込み、バージョン管理に登録しない。 リモートURLとリクエストヘッダーからトークンを削除する。
アップロード鍵 指定した成果物保存先への書き込みだけを許可する。 ソースコード取得用認証情報と分離し、パイプラインの段階ごとに読み込む。 レスポンスコードとタスクIDを残し、完全な鍵は記録しない。
権限分離の原則

1つのタスクには、現在の工程に必要な権限だけを付与する。

ソースコード取得タスクにアップロード権限は不要です。テスト実行タスクに署名資材の読み取り権限は不要で、成果物アップロードタスクにもリポジトリ変更権限は必要ありません。

マスキングの原則

トラブルシューティングに必要な文脈を残し、再利用可能な秘密情報を除去する。

ログには時刻、手順、終了コード、ファイル種別、エラー位置を残せますが、パスワード、秘密鍵、トークン、完全なリクエストヘッダー、未マスキングのソースコード断片は除去します。

稼働信頼性

ノードが正常でも、すべての接続やビルドタスクが正常とは限りません。

すべてのノードは365日、年間を通じて正常に稼働しています。個別の問題を調査する際は、ノード、ホスト、接続、タスクの4種類の状態を分けて監視し、単一の正常表示でワークフロー全体を判断しないでください。

ノード状態

インフラに到達できるか

ノード全体のネットワークと管理機能を確認し、同じノードの基盤サービスに影響があるか判断します。

単独では証明できないこと

特定ホストのシステムセッションやプロジェクトタスクが正常であること。

ホストのオンライン状態

デバイスが起動を完了しているか

ホストがオンラインか、管理入口から現在のデバイス状態を取得できるか確認します。

単独では証明できないこと

SSH、VNC、画面共有のアドレス、ポート、認証情報がすべて正しいこと。

接続状態

セッションを正常に確立できるか

接続方式、クライアント、接続先アドレス、ポート、ローカルネットワーク、セッション使用状況を記録します。

単独では証明できないこと

Xcode、依存関係、署名資材、プロジェクト設定で現在のビルドを完了できること。

タスク状態

ビルド工程が完了したか

工程ログ、終了コード、成果物の検証、アップロード結果でタスクの実行状況を判断します。

単独では証明できないこと

ノードまたはネットワークでインフラ障害が発生していること。前3種類のシグナルと合わせて判断します。

ノード インフラシグナル
ホスト デバイスオンラインシグナル
接続 セッション到達シグナル
タスク プロジェクト実行シグナル
障害報告の流れ

まず事実を整理し、再現可能な状況を添えて報告する。

質の高い報告なら、サポート担当者はノード、ホスト、接続、プロジェクトのどこに問題があるかをすぐに切り分けられます。「使えない」とだけ書くと重要な情報が失われ、確認の往復も増えます。

提出前に記録する情報

7項目で最小限の障害情報をまとめる。

01 発生時刻

タイムゾーンと、問題が初めて発生した時間帯を記録します。

02 ノード

シンガポール、日本(東京)、韓国(ソウル)、香港、米国東部のいずれかを明記します。

03 注文ID

コンソールで確認できる注文IDまたはホストIDを提供します。

04 影響範囲

単一タスク、ホスト全体、複数メンバーのどこに影響があるか説明します。

05 再現手順

実際の操作順に沿って、入力、操作、失敗箇所を列挙します。

06 状態の比較

ノード、ホスト、接続、タスクの状態を個別に記載します。

07 マスキング済みログ

エラーの文脈を残し、パスワード、秘密鍵、トークン、ソースコードの秘密情報を除去します。

既存注文に関する問題

コンソールにログインしてチケットを送信し、注文IDを関連付けてください。接続障害、ホスト状態、追加ストレージ、更新、解放手続きなどに適しています。

コンソールからチケットを送信

セキュリティとプライバシーに関する相談

発生時刻、影響範囲、マスキング済みの資料をサポートメールへ送信します。メールにパスワード、秘密鍵、完全な決済情報、未マスキングのソースコードを添付しないでください。

support@minidebug.com
責任範囲

プラットフォームはノードと管理機能を担い、ユーザーはワークフロー内のアクセスとデータを管理します。

責任範囲を明確にすることは、問題を相手に押し付けるためではありません。障害発生時に、正しい管理箇所、証拠、対応策へ直接たどり着くためです。

MiniDebugの責任

物理ノードと管理入口

  • 物理ホストの提供

    注文に応じて専有物理ホストを提供し、管理入口にホストと注文の状態を表示します。

  • ノードインフラ

    シンガポール、日本(東京)、韓国(ソウル)、香港、米国東部の5ノードを365日、年間を通じて正常に稼働させます。

  • 接続情報の提供

    対象ホストの接続情報と必要な管理機能を提供します。

  • インフラ障害の調査

    注文ID、ノード、時刻、マスキング済みログに基づき、物理ノードと管理入口の問題を特定します。

  • 注文ライフサイクル管理

    注文、更新、ホスト状態、解放手続きを処理します。実際の利用可能状態はコンソールのリアルタイム表示を基準とします。

ユーザーの責任

アカウント、コード、認証情報、プロジェクト設定

  • アカウントとメンバー権限

    ログイン認証情報を保護し、チームメンバーのアクセスを管理し、不要になったアカウントと鍵を速やかに無効化します。

  • コードと資材の利用権限

    ソースコード、モデル、素材、証明書、プロビジョニングプロファイル、その他のビルド資材に適切な利用権限があることを確認します。

  • プロジェクト環境設定

    Xcodeのバージョン、依存関係、スクリプト、パス、署名ルール、環境変数、アップロード先を管理します。

  • データのバックアップと移行

    利用期間中にソースコードと成果物をバックアップし、ホスト解放前に必要な移行と復元検証を完了します。

  • ログのマスキングと障害対応

    十分な再現状況を添えて報告し、パスワード、秘密鍵、トークン、決済情報、未マスキングのソースコードを除去します。

迅速な切り分け

問題の階層に応じて次の対応を決める。

ノードまたはホストの状態異常

注文ID、ノード、時刻、影響範囲を記録し、コンソールからチケットを送信します。

接続を確立できない

まずオンライン状態、アドレス、ポート、ローカルネットワーク、認証情報、クライアント、同時セッションを確認します。

ビルドコマンドが失敗する

Xcode、依存キャッシュ、ディスク容量、署名設定、終了コード、工程ログを確認します。

資材または権限のリスク

関連する認証情報を先に無効化してアクセス範囲を制限し、マスキング済みの証拠を保存して障害情報を提出します。

次のステップ

明確な責任範囲でビルド環境を構築する。

まずノードと利用期間を選び、メンバー、自動化タスク、署名資材、バックアップごとに管理ポイントを設定します。注文とホストの管理はすべてコンソールで行えます。