Form to Wipe
Form to Wipe (FTW) は、Slack または GitHub を Jamf Platform API に接続する安全な承認ゲート型デバイスワイプワークフローです。要求者がワイプリクエストを送信し、承認者がそれを確認して承認します。ワークフローは MDM イレース(消去)コマンドをターゲットデバイスに送信します。すべてのステップがログに記録されます。
FTW は 2 つのデプロイパスで利用可能です。アーキテクチャとセキュリティモデルは両者で同じです。異なるのは、インターフェースとインフラストラクチャの要件のみです。
動作原理
リクエスト送信 → 承認者がレビュー → リクエスト者が確認 → イレースコマンド送信 → 結果をログ
- 要求者は Slack スラッシュコマンドまたは GitHub Issue を使用してワイプリクエストを送信し、ターゲットテナント、デバイスタイプ、デバイス ID、および理由を指定します。
- ワークフローはリクエストを承認者にルーティングします。承認者は要求者と同じ人物であることはできません。これはプラットフォームレベルで両方のパスで強制されます。
- 承認者はリクエストを確認し、それを承認または拒否します。
- 承認された場合、イレースコマンドが実行される前に要求者は最終確認プロンプトを受け取ります。
- ワークフローは Jamf Platform API を呼び出して、各ターゲットデバイスに MDM イレースコマンドを送信します。
- 結果は要求者にポストバックされ、監査ログに記録されます。
サポートされるターゲッティング
FTW は、ワイプするデバイスを指定する 3 つの方法をサポートしています。
- 単一デバイス — 1 つの Jamf Pro レコード ID
- 複数デバイス — Jamf Pro レコード ID のカンマ区切りリスト
- デバイスグループ — スマートグループまたは静的グループ名。実行時に Platform API 経由でメンバーデバイス ID に解決されます
サポートされるデバイスタイプ
| タイプ | プラットフォーム | イレースオプション |
|---|---|---|
| Computer | macOS | オプション:Find My PIN |
| Mobile Device | iOS / iPadOS | データプラン保持、アクティベーションロック削除、サービス復帰、近接設定禁止 |
マルチテナント対応
両方のデプロイパスは複数の Jamf テナントをサポートします。テナントは表示名と UUID のペアリストとして構成されます。要求者は送信時にドロップダウンからテナントを選択します。選択されたテナントは、すべてのダウンストリームステップを通じて自動的に引き継がれます。
JAMF_TENANT_NAMES = Production, Staging, Lab
JAMF_TENANT_IDS = aaaaaaaa-..., bbbbbbbb-..., cccccccc-...
セキュリティモデル
FTW は 3 つのセキュリティ原則に基づいて構築されています。
職務分離。 要求者は自分のリクエストを承認することはできません。これはプラットフォームレベルで強制されます。GitHub ブランチ保護ルールと Slack モーダルルーティングロジックの両方が、リクエストが承認者に到達する前に自己承認を防止します。
監査証跡。 すべてのアクション(送信、承認、拒否、確認、イレース結果、タイムアウト)は、アクター ID、タイムスタンプ、テナントともにログに記録されます。GitHub Workflow パスはマージされたプルリクエストを不変の監査レコードとして使用します。n8n パスは Slack 監査チャネルに書き込みます。
認証情報の分離。 Jamf Platform API 認証情報は環境シークレットとして保存され、ワークフローコードやリクエストボディには含まれません。n8n パスは共有シークレットトークンを使用して、受信した Slack リクエストが本物であることを確認してから処理します。
Jamf Platform API の前提条件
両方のパスには、次の権限を持つ Jamf Platform API OAuth2 クライアントが必要です。
| 権限 | 必要な理由 |
|---|---|
Read Computers |
レコード ID でコンピュータ名と管理 ID を検索 |
Read Mobile Devices |
レコード ID でモバイルデバイス名と管理 ID を検索 |
Read Computer Groups |
グループスコープターゲッティング用のスマートおよび静的グループメンバーシップを解決 |
Read Mobile Device Groups |
モバイルデバイスグループメンバーシップを解決 |
Send Computer Remote Erase Command |
macOS デバイスにイレースコマンドを発行 |
Send Mobile Device Remote Erase Command |
iOS/iPadOS デバイスにイレースコマンドを発行 |
Jamf Pro の Settings → API roles and clients → API Clients → New で API クライアントを作成します。
デプロイパスの選択
| n8n | GitHub Workflow | |
|---|---|---|
| インターフェース | Slack モーダル | GitHub Issue + PR |
| 承認 UX | Slack DM | PR レビュー |
| 承認者ソース | Entra、Okta、または Slack ユーザーグループ | ブランチ保護 + CODEOWNERS |
| 監査ログ | Slack チャネル | Git 履歴(永続) |
| インフラストラクチャ | n8n インスタンス必須 | なし(GitHub ホスト型ランナー) |
| リアルタイムタイムアウト | ✅ 構成可能 | ❌ 手動クローズ |
| コスト | n8n ライセンス | 無料(パブリック)/ Actions 分 |
n8n を選択する場合 チームが既に n8n を実行している、Slack ネイティブモーダルエクスペリエンスを望んでいる、または Okta または Slack ユーザーグループベースの承認ルーティングが必要な場合。
GitHub Workflow を選択する場合 インフラストラクチャがなく、監査証跡が優先事項(すべてのワイプはマージされた PR - 永続的な git 履歴)であり、IT チームが GitHub での作業に慣れている場合。
デプロイの準備はいいですか?選択したパスのガイドに移動してください。