物理ノードの境界
有効な注文1件につき、専有物理マシン1台と明確な利用期間が対応します。共有仮想マシンではないため、プロセッサ、メモリ、ローカルストレージがマルチテナントの仮想セッションとして他のお客様に割り当てられることはありません。
- 境界対象注文、デバイス、ノード、利用期間
- 確認場所コンソールのインスタンス詳細
- お客様の操作デバイス識別情報と利用期間の開始・終了を確認
1件の注文につき、明確な利用期間が設定された専有物理マシン1台を提供します。仮想マシンではありません。ZoomMiniは物理ノードとコンソールを運用し、お客様はシステムアカウント、アプリ設定、コード、秘密情報、バックアップを管理します。責任範囲を明確にすることで、権限を監査・回収できます。
専有物理マシンにより、お客様のワークロードを明確なデバイス境界内に配置できます。ただし、デバイスが専有であっても、すべてのアカウント、リモート接続、アプリ認証情報が自動的に安全になるわけではありません。実効性のある分離モデルは、物理層、管理層、システム層、ワークロード層で構成されます。
有効な注文1件につき、専有物理マシン1台と明確な利用期間が対応します。共有仮想マシンではないため、プロセッサ、メモリ、ローカルストレージがマルチテナントの仮想セッションとして他のお客様に割り当てられることはありません。
コンソールはデバイス状態と接続情報の確認に使用し、VNC、画面共有、SSHはシステムへの接続に使用します。コンソールのセッションとOSのセッションは異なる権限領域として、それぞれを保護し、弱い認証情報を共有しないでください。
リモートアドレスを取得しても、すべてのシステム権限が自動的に付与されるわけではありません。管理者権限、日常開発用アカウント、CI runner、臨時のトラブルシューティング用アカウントは分離し、タスク単位で権限を付与して、完了後すぐに回収してください。
アクセス制御の目的はログイン手順を増やすことではありません。誰がデバイスにアクセスしたか、どの権限を使ったか、プロジェクトを離れた後にアクセス権が失われているかをチームが確認できる状態にすることです。
複数人で同じシステムアカウントを長期間共有しないでください。一意のアカウントを使えば、ターミナル履歴、ファイル所有権、runner操作、トラブルシューティングの記録を特定の担当者に関連付けられ、メンバーが離脱した際も個別にアクセスを取り消せます。
担当者ごと、また自動化タスクごとに異なる鍵を使用し、鍵の用途と所有者を記録してください。秘密鍵は管理下の端末または鍵管理システムにのみ保存し、チケット、メール、チャット、コードリポジトリで共有しないでください。
日常のビルドで管理者権限を継続的に使用しないでください。CI runnerには作業ディレクトリ、リポジトリ範囲、必要なコマンドを限定します。一時的に権限を昇格する場合は、変更目的を確認し、完了後に元の権限へ戻してください。
チームは社内ポリシーに従い、システムパスワード、SSH鍵、リポジトリトークンを定期的にローテーションしてください。メンバーの離脱、デバイスの引き渡し、鍵の漏えい、不審なログインを確認した場合は、定期サイクルを待たず直ちにローテーションします。
使用しなくなった公開鍵、アカウント、runner登録、リモートデスクトップの保存項目、自動化タスクを削除してください。メンバーのアカウントだけを無効化して共有トークンを残すと、帰属を特定しにくい継続アクセス経路が残ります。
ZoomMiniはデバイスとリモート接続を提供します。どのコード、ビルド成果物、テストデータ、秘密情報をデバイスに置くかはお客様が決定し、利用期間終了前の検証、バックアップ、移行もお客様が行います。
リモート操作では、作業内容に応じてVNC、画面共有、SSHを選択します。接続前にコンソールに表示されたアドレスとデバイス情報を確認してください。SSHで初めて接続する際はホストフィンガープリントを確認し、変更を検知した場合は接続を中止して原因を調査します。
リポジトリ認証情報、署名素材、デプロイ鍵、サービス用トークンはお客様が管理します。タスク単位で管理下の鍵管理システムから注入し、有効範囲と取り消し手段を設定してください。秘密情報をバージョン管理リポジトリに保存しないでください。
トラブルシューティング情報を送信する前に、パスワード、秘密鍵、完全なトークン、完全な決済情報、問題と無関係な個人データを削除してください。問題発生時刻、コマンド、エラーコード、必要なコンテキストは残し、削除しすぎて再現できなくならないようにします。
有効期限前にコード、ビルド成果物、ログ、業務データを移行し、バックアップを読み取れることを確認してください。その後、リポジトリトークン、デプロイ認証情報、runner登録を取り消し、不要なローカルコピーを削除します。
継続的インテグレーション環境には、通常、リポジトリの読み取り、署名、テスト、リリース権限が付与されます。これらの権限を個別の秘密情報に分け、パイプラインの各段階で注入し、それぞれを個別にローテーション・取り消しできるようにしてください。
トークンの権限は必要なリポジトリと操作に限定します。取得のみを行うrunnerに管理権限を与えず、一時タスクで長期利用のリリーストークンを使い回さないでください。
runnerには専用アカウントと作業ディレクトリを使用します。依存関係キャッシュの出所を検証できるようにし、ビルドスクリプトから環境変数やリクエストヘッダーの秘密情報を出力しないでください。
署名証明書と関連する秘密鍵は管理下の鍵管理システムに保管し、署名が必要なタスクにのみ注入します。タスク完了後は一時ファイルとプロセス環境を削除してください。
リリーストークンとリポジトリトークンを分離し、テストパイプラインに本番リリース権限を継承させないでください。メンバーやプロジェクトに変更があった場合も、他のタスクに影響を与えず個別に取り消せる状態にします。
ビルドスクリプトが環境変数を出力していないか、失敗時に完全なコマンドを表示しないか、キャッシュディレクトリに認証情報ファイルが含まれていないか、成果物のアーカイブに設定ファイルが誤って含まれていないかを確認します。秘密情報がログに出た場合は、ログを削除するだけでなく、該当する認証情報もローテーションしてください。
$ 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日、年間を通じて稼働します。稼働記録は日別に表示され、イベントマーカーは確認が必要な状態変化を示しますが、終日利用不能だったことを直接意味するものではありません。
サービスが目標を満たしていないとお考えの場合は、注文識別情報、ノード、影響を受けた時間帯、再現可能な現象、匿名化したログを添えて、コンソールからチケットを送信してください。条件を満たす申請はサービス規約に基づいて審査され、サービスクレジットで補償されます。
サービス規約と審査基準を見るアカウント異常、不正アクセス、秘密情報の漏えいが疑われる場合は、高権限タスクを実行し続けながら結論を待つことは避けてください。まず影響範囲を縮小し、必要な記録を保存してサポートチームに通知し、秘密情報をローテーションします。
発見時刻、デバイス識別情報、ノード、異常なアカウント、関連プロセス、影響を受けたワークロードを記録します。コンソール、システムアカウント、リポジトリトークン、アプリの各異常を区別し、異なる権限領域を一つの問題として扱わないでください。
疑わしい自動化タスクを停止し、異常なセッションを取り消し、関連アカウントまたは公開鍵を無効化し、高リスクトークンを制限します。証拠を残すために既知の異常アクセスを拡大させないでください。制限操作自体も時刻と実行者とともに記録します。
インシデントに関連するログイン記録、コマンド履歴、runner出力、プロセス情報、エラーコードを保存します。エクスポート前に匿名化し、パスワード、秘密鍵、完全な決済情報、インシデントと無関係な個人情報は送信しないでください。
コンソールのチケットまたは support@zoommini.com に、注文識別情報、ノード、発生時刻、実行済みの制限操作、匿名化済みログを送信してください。継続的なリスクがある場合は、件名に「セキュリティインシデント」と明記すると、迅速に振り分けられます。
影響範囲に応じて、システム認証情報、SSH鍵、リポジトリトークン、runner鍵、署名素材、デプロイ認証情報をローテーションします。タスクを復旧する前に、旧認証情報が無効であること、新しい権限が最小範囲であること、異常なプロセスが存在しないことを確認してください。
コンソールからチケットを送信すると、注文、ノード、デバイス状態とリクエストを関連付けて対応できます。
送信先: support@zoommini.com件名に「セキュリティインシデント」と注文識別情報を明記してください。
責任範囲を明確にすると、トラブルシューティング時の待ち時間と重複確認を減らせます。物理ノード、コンソール、デバイスの提供はZoomMiniの運用範囲です。システム内のアカウント、アプリ、コード、秘密情報、バックアップはお客様の管理範囲です。
| 管理領域 | ZoomMiniの責任 | お客様の責任 | 推奨確認項目 |
|---|---|---|---|
| 物理ノード | デバイスと注文の専有対応、ノードの基本稼働、コンソール上のデバイス状態。 | 注文用途に従ったデバイスの使用、利用期間中のワークロード管理とデータ移行。 | デバイス識別情報、ノード、利用期間の開始・終了時刻。 |
| コンソールアカウント | アカウントアクセス、注文管理、インスタンス状態、チケット窓口の提供。 | ログイン認証情報の保護、異常アクセスの特定、関連権限の適時更新・取り消し。 | 最近のアクセス、注文変更、チケット記録。 |
| リモート接続 | コンソールで対象デバイスの接続情報と状態を提供。 | アドレスとホストフィンガープリントの確認、リモート認証情報の保護、信頼できるクライアントの設定。 | ノード、アドレス、フィンガープリント、接続アカウント。 |
| システムアカウント | 利用可能なmacOSのGUIとコマンドライン環境を提供。 | 一意のアカウント作成、最小権限の適用、認証情報のローテーション、離脱メンバーの削除。 | アカウント一覧、公開鍵一覧、管理者権限。 |
| アプリとCI/CD | 物理ノードとコンソールのサービス運用を維持。 | Xcode、依存関係、runner、スクリプト、リポジトリ権限、リリースフローを管理。 | runnerアカウント、作業ディレクトリ、トークン範囲。 |
| コードと鍵 | コードや秘密情報の保存、承認、ローテーション方針をお客様に代わって決定しない。 | 管理下の鍵管理システムを使用し、スクリプト、リポジトリ、ログへの平文保存を避ける。 | 秘密情報の用途、範囲、所有者、取り消し方法。 |
| ログとサポート | チケット情報に基づき、物理ノードとコンソールに関する問題を調査。 | 正確な時刻、再現手順、匿名化済みログを送信し、秘密情報は送らない。 | エラーコード、バージョン、タイムライン、実行済み操作。 |
| バックアップと移行 | コンソールに注文とデバイスの利用期間情報を表示。 | バックアップ方針の策定、復元可能性の検証、利用期間終了前のデータ移行。 | バックアップの完全性、復元テスト、トークンの取り消し。 |
注文に対応する専有物理マシン、ノードの基本稼働、デバイス状態、注文管理画面、サポートチケット対応。
OS権限、リモート認証情報、アプリ設定、コード、鍵、ビルドパイプライン、ログの匿名化、バックアップ、移行。
お客様は注文、ノード、タイムライン、匿名化済みログを提供します。ZoomMiniは境界に基づいてインフラ状態を特定し、双方がそれぞれの権限領域を検証します。
適切なモデルと利用期間を選び、一意のアカウント、SSH鍵、最小権限、管理下の鍵注入、期限前移行のチェックリストに沿って環境を設定します。