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

クラウドMacのセキュリティ境界を明確にする

1件の注文につき、明確な利用期間が設定された専有物理マシン1台を提供します。仮想マシンではありません。ZoomMiniは物理ノードとコンソールを運用し、お客様はシステムアカウント、アプリ設定、コード、秘密情報、バックアップを管理します。責任範囲を明確にすることで、権限を監査・回収できます。

  • 1件の注文につき専有物理マシン1台
  • リモート接続、システム権限、アプリの秘密情報を分離管理
  • すべてのノードが365日、年間を通じて稼働
セキュリティ境界 注文単位の分離ビュー
物理層 専有Mac mini 利用期間中、他のお客様とシステム環境を共有しません
接続層 コンソールとリモート接続 デバイス状態、アドレス、接続方法
システム層 アカウントと権限 お客様が専用アカウントと最小権限を設定
ワークロード層 コード、鍵、ビルド 保存、ローテーション、移行をお客様が管理
境界を可視化 物理 / 接続 / ワークロード
分離モデル

物理分離で共有リソースの競合を解消し、権限分離はお客様が設定

専有物理マシンにより、お客様のワークロードを明確なデバイス境界内に配置できます。ただし、デバイスが専有であっても、すべてのアカウント、リモート接続、アプリ認証情報が自動的に安全になるわけではありません。実効性のある分離モデルは、物理層、管理層、システム層、ワークロード層で構成されます。

物理ノードの境界

有効な注文1件につき、専有物理マシン1台と明確な利用期間が対応します。共有仮想マシンではないため、プロセッサ、メモリ、ローカルストレージがマルチテナントの仮想セッションとして他のお客様に割り当てられることはありません。

  • 境界対象注文、デバイス、ノード、利用期間
  • 確認場所コンソールのインスタンス詳細
  • お客様の操作デバイス識別情報と利用期間の開始・終了を確認

リモート接続の境界

コンソールはデバイス状態と接続情報の確認に使用し、VNC、画面共有、SSHはシステムへの接続に使用します。コンソールのセッションとOSのセッションは異なる権限領域として、それぞれを保護し、弱い認証情報を共有しないでください。

  • GUI操作VNCまたは画面共有を使用
  • 自動化タスク管理下のSSH鍵を優先して使用
  • 異常対応まず接続経路を制限し、その後システムセッションを確認

システム権限の境界

リモートアドレスを取得しても、すべてのシステム権限が自動的に付与されるわけではありません。管理者権限、日常開発用アカウント、CI runner、臨時のトラブルシューティング用アカウントは分離し、タスク単位で権限を付与して、完了後すぐに回収してください。

  • 管理者システムレベルの変更にのみ使用
  • 開発用アカウント日常的なインタラクティブ作業に使用
  • Runnerビルドに必要なディレクトリとコマンド権限のみ付与
アクセス制御

すべてのログインを、帰属・制限・取り消し可能な権限にする

アクセス制御の目的はログイン手順を増やすことではありません。誰がデバイスにアクセスしたか、どの権限を使ったか、プロジェクトを離れた後にアクセス権が失われているかをチームが確認できる状態にすることです。

  1. 01

    ユーザーごとに一意のアカウントを割り当てる

    複数人で同じシステムアカウントを長期間共有しないでください。一意のアカウントを使えば、ターミナル履歴、ファイル所有権、runner操作、トラブルシューティングの記録を特定の担当者に関連付けられ、メンバーが離脱した際も個別にアクセスを取り消せます。

  2. 02

    SSHでは鍵認証を優先する

    担当者ごと、また自動化タスクごとに異なる鍵を使用し、鍵の用途と所有者を記録してください。秘密鍵は管理下の端末または鍵管理システムにのみ保存し、チケット、メール、チャット、コードリポジトリで共有しないでください。

  3. 03

    タスク単位で最小権限を付与する

    日常のビルドで管理者権限を継続的に使用しないでください。CI runnerには作業ディレクトリ、リポジトリ範囲、必要なコマンドを限定します。一時的に権限を昇格する場合は、変更目的を確認し、完了後に元の権限へ戻してください。

  4. 04

    リスクとメンバー変更に応じて認証情報をローテーションする

    チームは社内ポリシーに従い、システムパスワード、SSH鍵、リポジトリトークンを定期的にローテーションしてください。メンバーの離脱、デバイスの引き渡し、鍵の漏えい、不審なログインを確認した場合は、定期サイクルを待たず直ちにローテーションします。

  5. 05

    不要な接続経路を削除する

    使用しなくなった公開鍵、アカウント、runner登録、リモートデスクトップの保存項目、自動化タスクを削除してください。メンバーのアカウントだけを無効化して共有トークンを残すと、帰属を特定しにくい継続アクセス経路が残ります。

データ保護

コードと鍵の管理権限はお客様が保持

ZoomMiniはデバイスとリモート接続を提供します。どのコード、ビルド成果物、テストデータ、秘密情報をデバイスに置くかはお客様が決定し、利用期間終了前の検証、バックアップ、移行もお客様が行います。

転送経路

リモート操作では、作業内容に応じてVNC、画面共有、SSHを選択します。接続前にコンソールに表示されたアドレスとデバイス情報を確認してください。SSHで初めて接続する際はホストフィンガープリントを確認し、変更を検知した場合は接続を中止して原因を調査します。

確認する項目
ノード、アドレス、ホストフィンガープリント、アカウント
避ける操作
身元確認を省略して接続をそのまま受け入れる

コードと秘密情報

リポジトリ認証情報、署名素材、デプロイ鍵、サービス用トークンはお客様が管理します。タスク単位で管理下の鍵管理システムから注入し、有効範囲と取り消し手段を設定してください。秘密情報をバージョン管理リポジトリに保存しないでください。

確認する項目
用途、範囲、所有者、ローテーション方法
避ける操作
平文設定、スクリプトへのハードコード、トークンの複数人共有

ログの匿名化

トラブルシューティング情報を送信する前に、パスワード、秘密鍵、完全なトークン、完全な決済情報、問題と無関係な個人データを削除してください。問題発生時刻、コマンド、エラーコード、必要なコンテキストは残し、削除しすぎて再現できなくならないようにします。

残す情報
時刻、エラーコード、バージョン、再現手順
必ず削除する情報
パスワード、秘密鍵、完全な秘密情報

利用期間終了前に移行する

有効期限前にコード、ビルド成果物、ログ、業務データを移行し、バックアップを読み取れることを確認してください。その後、リポジトリトークン、デプロイ認証情報、runner登録を取り消し、不要なローカルコピーを削除します。

完了条件
データ移行済み、バックアップ検証済み、アクセス取り消し済み
確認場所
コンソールのデバイス状態と有効期限
期限前に行う手順

「コピー済み」を「移行完了」とみなさない

1. 棚卸しコード、成果物、キャッシュ、ログ、秘密情報を一覧化
2. コピーお客様が管理する保存先または新環境へ移行
3. 検証ファイルの完全性を確認し、必要な復元テストを実行
4. 取り消しトークンをローテーションし、runnerの紐付けを解除してリモート権限を削除
CI/CDセキュリティ

ビルドマシンは継続稼働できても、秘密情報を露出し続けてはいけません

継続的インテグレーション環境には、通常、リポジトリの読み取り、署名、テスト、リリース権限が付与されます。これらの権限を個別の秘密情報に分け、パイプラインの各段階で注入し、それぞれを個別にローテーション・取り消しできるようにしてください。

01

リポジトリへのアクセス

トークンの権限は必要なリポジトリと操作に限定します。取得のみを行うrunnerに管理権限を与えず、一時タスクで長期利用のリリーストークンを使い回さないでください。

範囲を限定
02

ビルドとテスト

runnerには専用アカウントと作業ディレクトリを使用します。依存関係キャッシュの出所を検証できるようにし、ビルドスクリプトから環境変数やリクエストヘッダーの秘密情報を出力しないでください。

アカウントを分離
03

署名素材

署名証明書と関連する秘密鍵は管理下の鍵管理システムに保管し、署名が必要なタスクにのみ注入します。タスク完了後は一時ファイルとプロセス環境を削除してください。

必要なときだけ注入
04

リリース認証情報

リリーストークンとリポジトリトークンを分離し、テストパイプラインに本番リリース権限を継承させないでください。メンバーやプロジェクトに変更があった場合も、他のタスクに影響を与えず個別に取り消せる状態にします。

個別に取り消し
送信前チェック

スクリプトとログの秘密情報の露出経路を確認

ビルドスクリプトが環境変数を出力していないか、失敗時に完全なコマンドを表示しないか、キャッシュディレクトリに認証情報ファイルが含まれていないか、成果物のアーカイブに設定ファイルが誤って含まれていないかを確認します。秘密情報がログに出た場合は、ログを削除するだけでなく、該当する認証情報もローテーションしてください。

pipeline-security-check
$ git grep -nE "TOKEN|PRIVATE_KEY|PASSWORD" -- .
$ find build/ -type f -name "*.env" -o -name "*.key"
$ security find-identity -v -p codesigning
$ launchctl list | grep runner

チェック結果:
✓ リポジトリに平文の秘密情報は見つかりません
✓ ビルドアーカイブに認証情報ファイルは含まれていません
✓ runnerは専用のシステムアカウントを使用しています
✓ 署名素材は管理下のプロセスから注入されています
稼働状況

明確な目標とイベント記録でサービスの稼働状況を示す

ZoomMiniのサービス可用性目標は99.9%です。すべてのノードは365日、年間を通じて稼働します。稼働記録は日別に表示され、イベントマーカーは確認が必要な状態変化を示しますが、終日利用不能だったことを直接意味するものではありません。

サービス可用性目標 99.9% サービス規約で定める集計・審査基準に適用
直近90日間の日別ステータス 各ステータスバーは1日を表示
正常稼働の記録 イベントマーカー

サービスが目標を満たしていないとお考えの場合は、注文識別情報、ノード、影響を受けた時間帯、再現可能な現象、匿名化したログを添えて、コンソールからチケットを送信してください。条件を満たす申請はサービス規約に基づいて審査され、サービスクレジットで補償されます。

サービス規約と審査基準を見る
セキュリティインシデント対応

継続アクセスを制限し、必要な証拠を十分に保存する

アカウント異常、不正アクセス、秘密情報の漏えいが疑われる場合は、高権限タスクを実行し続けながら結論を待つことは避けてください。まず影響範囲を縮小し、必要な記録を保存してサポートチームに通知し、秘密情報をローテーションします。

  1. 01

    異常の範囲を特定

    発見時刻、デバイス識別情報、ノード、異常なアカウント、関連プロセス、影響を受けたワークロードを記録します。コンソール、システムアカウント、リポジトリトークン、アプリの各異常を区別し、異なる権限領域を一つの問題として扱わないでください。

    出力初期タイムラインと影響対象
  2. 02

    継続アクセスを制限

    疑わしい自動化タスクを停止し、異常なセッションを取り消し、関連アカウントまたは公開鍵を無効化し、高リスクトークンを制限します。証拠を残すために既知の異常アクセスを拡大させないでください。制限操作自体も時刻と実行者とともに記録します。

    出力取り消した接続経路と停止タスクの一覧
  3. 03

    必要なログを保存

    インシデントに関連するログイン記録、コマンド履歴、runner出力、プロセス情報、エラーコードを保存します。エクスポート前に匿名化し、パスワード、秘密鍵、完全な決済情報、インシデントと無関係な個人情報は送信しないでください。

    出力匿名化済みログと再現の手がかり
  4. 04

    サポートチームに通知

    コンソールのチケットまたは support@zoommini.com に、注文識別情報、ノード、発生時刻、実行済みの制限操作、匿名化済みログを送信してください。継続的なリスクがある場合は、件名に「セキュリティインシデント」と明記すると、迅速に振り分けられます。

    出力調査をすぐ開始できるインシデント説明
  5. 05

    秘密情報をローテーションして復旧を検証

    影響範囲に応じて、システム認証情報、SSH鍵、リポジトリトークン、runner鍵、署名素材、デプロイ認証情報をローテーションします。タスクを復旧する前に、旧認証情報が無効であること、新しい権限が最小範囲であること、異常なプロセスが存在しないことを確認してください。

    出力ローテーション記録と復旧検証結果
送信時に含める情報

サポートチームがすぐに調査を開始できる情報

注文識別情報該当する物理ノードの特定に使用
ノードとデバイスインシデント発生時の環境境界を確認
問題発生時刻タイムゾーンと最初の発見時刻を明記
再現手順発生条件と期待結果を説明
実行済みの操作無効化、取り消し、ローテーションの操作を列挙
匿名化済みログエラーコードは残し、秘密情報は添付しない
責任範囲

インフラはZoomMiniが運用し、ワークロードはお客様が管理

責任範囲を明確にすると、トラブルシューティング時の待ち時間と重複確認を減らせます。物理ノード、コンソール、デバイスの提供はZoomMiniの運用範囲です。システム内のアカウント、アプリ、コード、秘密情報、バックアップはお客様の管理範囲です。

ZoomMiniとお客様のデータ保護・セキュリティ責任の比較
管理領域 ZoomMiniの責任 お客様の責任 推奨確認項目
物理ノード デバイスと注文の専有対応、ノードの基本稼働、コンソール上のデバイス状態。 注文用途に従ったデバイスの使用、利用期間中のワークロード管理とデータ移行。 デバイス識別情報、ノード、利用期間の開始・終了時刻。
コンソールアカウント アカウントアクセス、注文管理、インスタンス状態、チケット窓口の提供。 ログイン認証情報の保護、異常アクセスの特定、関連権限の適時更新・取り消し。 最近のアクセス、注文変更、チケット記録。
リモート接続 コンソールで対象デバイスの接続情報と状態を提供。 アドレスとホストフィンガープリントの確認、リモート認証情報の保護、信頼できるクライアントの設定。 ノード、アドレス、フィンガープリント、接続アカウント。
システムアカウント 利用可能なmacOSのGUIとコマンドライン環境を提供。 一意のアカウント作成、最小権限の適用、認証情報のローテーション、離脱メンバーの削除。 アカウント一覧、公開鍵一覧、管理者権限。
アプリとCI/CD 物理ノードとコンソールのサービス運用を維持。 Xcode、依存関係、runner、スクリプト、リポジトリ権限、リリースフローを管理。 runnerアカウント、作業ディレクトリ、トークン範囲。
コードと鍵 コードや秘密情報の保存、承認、ローテーション方針をお客様に代わって決定しない。 管理下の鍵管理システムを使用し、スクリプト、リポジトリ、ログへの平文保存を避ける。 秘密情報の用途、範囲、所有者、取り消し方法。
ログとサポート チケット情報に基づき、物理ノードとコンソールに関する問題を調査。 正確な時刻、再現手順、匿名化済みログを送信し、秘密情報は送らない。 エラーコード、バージョン、タイムライン、実行済み操作。
バックアップと移行 コンソールに注文とデバイスの利用期間情報を表示。 バックアップ方針の策定、復元可能性の検証、利用期間終了前のデータ移行。 バックアップの完全性、復元テスト、トークンの取り消し。
ZoomMiniの運用範囲

物理ノードとコンソール

注文に対応する専有物理マシン、ノードの基本稼働、デバイス状態、注文管理画面、サポートチケット対応。

お客様の管理範囲

システムアカウントとワークロード

OS権限、リモート認証情報、アプリ設定、コード、鍵、ビルドパイプライン、ログの匿名化、バックアップ、移行。

共同対応範囲

インシデントの特定と復旧検証

お客様は注文、ノード、タイムライン、匿名化済みログを提供します。ZoomMiniは境界に基づいてインフラ状態を特定し、双方がそれぞれの権限領域を検証します。

次のステップ

まず境界を確認し、ワークロードを専有ノードへ移行

適切なモデルと利用期間を選び、一意のアカウント、SSH鍵、最小権限、管理下の鍵注入、期限前移行のチェックリストに沿って環境を設定します。