-
Notifications
You must be signed in to change notification settings - Fork 3
Managing airgapped ios devices #377
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
tungmhoang
wants to merge
5
commits into
main
Choose a base branch
from
managing-airgapped-ios-devices
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
67dc4b9
new page with ios devices management for air gapped
catjes b5810c1
Revised structure and wordings - WIP
tungmhoang 4f0003d
Revised structure and wordings - WIP
tungmhoang b9499a2
Fix typo in doc file name and added navigation
tungmhoang 4228e8f
Added DDI transfer section
tungmhoang File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
89 changes: 89 additions & 0 deletions
89
...ules/device-lab-management/pages/standalone/managing-airgapped-ios-devices.adoc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,89 @@ | ||
| = Managing iOS Devices in Air‑Gapped Kobiton Environments | ||
|
|
||
| :navtitle: Managing iOS Devices in Air-Gapped Environments | ||
|
|
||
| This document outlines Kobiton’s standardized process for enabling iOS device management within air‑gapped environments—data centers or secured labs isolated from the internet. It addresses Apple’s security requirements (e.g., personalized Developer Disk Images and certificate verification) and provides step-by-step guidance to maintain device operability without compromising security. | ||
|
|
||
| == Requirements from Apple | ||
|
|
||
| * **Developer Certificate Verification** | ||
|
|
||
| + | ||
|
|
||
| Apple requires all provisioning profiles and signing certificates to be verified against their servers on first installation. This validation must occur online at least once. Subsequent launches will rely on cached credentials. | ||
|
|
||
| * **Personalized Developer Disk Image (DDI)** | ||
|
|
||
| + | ||
|
|
||
| For iOS 17+, each device requires a unique, Apple‑personalized DDI via a TSS request to Apple servers (https://gs.apple.com/TSS). This signature is stored locally on the device and does not require internet access after the initial retrieval—but may expire over time. | ||
|
|
||
| == Process Overview | ||
|
|
||
| === Initial Setup & Certificate Verification | ||
|
|
||
| * Prepare a **dedicated, internet‑connected macOS host** with supported Xcode (e.g., Xcode 16.4 on macOS 15.5). | ||
|
|
||
| * Connect each iOS device via **USB** and enable Developer Mode. | ||
|
|
||
| * Launch Xcode with the device active and foregrounded to establish trust and verify the certificate. | ||
|
|
||
| === Personalized DDI Acquisition | ||
|
|
||
| * For each iOS 17+ device: | ||
| ** Connect via USB to the internet‑connected macOS host. | ||
| ** Let Xcode request and download the personalized DDI signature from Apple. | ||
| ** Confirm that the personalization ticket is recorded locally on the device. | ||
|
|
||
| === Air‑Gapped Deployment | ||
|
|
||
| * Remove the device from the online macOS host. | ||
| * Connect it via USB or Cambrionix hub to the air‑gapped Kobiton device host. | ||
| * xref:device-lab-management:deviceConnect/restart-deviceconnect-services.adoc[Restart deviceConnect services,window=read-later] on the Mac mini to mount and load the DDI. | ||
| * If verification fails, reconnect the device to the internet‑enabled host and refresh credentials. | ||
|
|
||
| === Air‑Gapped Deployment DDI Transfer | ||
|
|
||
| For air-gapped or datacenter environments where it’s cumbersome to follow manual steps to allow Xcode to download this file, administrators can copy the base image from the Internet macOS host to the air-gapped host. | ||
|
|
||
| Follow the steps from the previous sections to generate the DDI on the Internet host. | ||
|
|
||
| include::device-lab-management:ios-devices/add-ios-device.adoc[tag=ddi] | ||
|
|
||
| === Monitoring & Remediation | ||
|
|
||
| Kobiton logs will alert on: | ||
|
|
||
| * DDI mount failures. | ||
| * `deviceControl` (Kobiton mobile agent) launch issues. | ||
|
|
||
| These typically indicate expired credentials or missing certificates. In such cases, repeat the steps in the _Personalized DDI Acquisition_ and _Air‑Gapped Deployment_ sections. | ||
|
|
||
| == System Administrator Checklist | ||
|
|
||
| * A secure macOS machine with **Xcode installed** and internet access. | ||
| * iOS devices connected via USB with **Developer Mode enabled**. | ||
| * Kobiton’s `deviceConnect` deployed on air‑gapped hosts. | ||
| * Physical USB access to devices in the lab while maintaining network isolation. | ||
|
|
||
| == Troubleshooting & Common Errors | ||
|
|
||
| [cols="1,2,3", options="header"] | ||
| |=== | ||
| | Symptom | Likely Cause | Recommended Action | ||
| | `deviceControl failed to launch` | Certificate expired or missing provisioning | Reconnect to internet host and re-verify certificate | ||
| | `DDI mount error` | Missing or expired personalization ticket | Repeat personalized DDI process via internet host | ||
| | New device not recognized | No provisioning profile or mismatched certificate | Update provisioning, ensure UDID is included | ||
| |=== | ||
|
|
||
| == Future Enhancements | ||
| Kobiton plans to store **personalization tickets per device** by default—reducing dependency on initial setup hosts and supporting multi-node labs more robustly. | ||
|
|
||
| == Summary | ||
| Kobiton’s process enables secure iOS device management in air‑gapped environments by: | ||
|
|
||
| * Using an online macOS host for Apple compliance steps | ||
| * Mounting devices offline following credential and DDI setup | ||
| * Maintaining a repeatable, compliant workflow even as Apple's requirements evolve | ||
|
|
||
| For detailed configuration, USB hub setup guidance, provisioning profile help, or Kobiton log analysis, consult the official Kobiton documentation or contact support. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Disambiguate DDI paths for Xcode 16.x
The current bullet list overlaps (
16.3 +vs16 +) and can confuse readers about which path to use.📝 Committable suggestion
🤖 Prompt for AI Agents