rebreak-monorepo/ops/mdm/bootstrap-tool/SUPERVISION-IDENTITY-SETUP.md
chahinebrini 8f2ef2cc98 feat(mdm,vip): MDM-VPN-Pivot + Layer-2-Country-Curated + Custom-Domain-Refactor
MDM-VPN-Pivot (Phase F.2 done):
- ops/mdm/profiles/rebreak-iphone-protection.mobileconfig auf v5 mit
  com.apple.vpn.managed Payload + OnDemandUserOverrideDisabled. iPhone-User
  kann ReBreak-VPN-Profile nicht entfernen und "Bedarf verbinden"-Toggle
  ist disabled. allowEnablingRestrictions empirisch widerlegt für FC-Toggle-
  Lock — out.
- DEV-removable Variante als Test-Profile dazu.
- Bootstrap-Tool (rebreak-supervise.sh) + Supervision-Identity-Setup-Doc.
- PHASES.md updated mit empirischen Befunden.

App-side MDM-Detect (Pfad-a Banner-Logic):
- modules/rebreak-protection: getDeviceState() returnt mdmManaged via
  Heuristik NETunnelProviderManager.count > 1 (App selbst kann nur einen
  eigenen erstellen, MDM-Push fügt einen zweiten hinzu).
- DeviceLayers.mdmManaged?: boolean Type.
- blocker.tsx: lockedIn-Bedingung erweitert um mdmManaged. Bei MDM-managed
  iPhones wird der App-Lock-Card (FC-Authorization-Toggle UI) ausgeblendet
  weil der per-App FC-Toggle nicht lockbar ist und durch den MDM-VPN-Layer
  redundant.

Layer-2-Country-Curated-Pivot:
- backend: vip-swap.post.ts raus, suggest.post.ts rein. Curated-domains
  durch admin (separate Tabelle/Pfad), getrennt von User-Custom-Domains.
- Admin-APIs für curated-domain Pflege (index.get + [id].patch).
- seed-country-blocklists Script für initiale Curated-Domain-Liste.
- protection/webcontent-domains.get refactored für Country-Curated-Pfad.
- Migration drop_vip_swap_fields.sql + schema.prisma adjusted.
- docs/concepts/layer2-country-pivot.md mit Architektur + Decision-Trail.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 07:11:47 +02:00

82 lines
3.1 KiB
Markdown

# Supervision-Identity einmaliger Setup
Eine Supervision-Identity ist ein Cert+Key-Paar (im `.p12`-Container), das beweist dass DEIN Mac der "Supervisor" eines iPhones ist. Apple verlangt das, damit ein iPhone nicht von beliebigen Macs supervised werden kann.
**Einmal pro Mac generieren. Persistent für alle Devices und alle Sessions.**
Ohne Identity scheitert `cfgutil prepare --supervised` mit einem Cert-Fehler.
## Wo die Identity liegen muss
Das Bootstrap-Tool erwartet die Identity standardmäßig hier:
```
~/.rebreak-supervise/supervision-identity.p12
```
Override via Env-Variable `SUPERVISION_IDENTITY_P12`.
## Pfad A — Via Apple Configurator 2 (GUI, empfohlen)
1. **Apple Configurator 2** öffnen
2. Menü-Bar → `Apple Configurator 2 → Einstellungen → Server` (oder neuere Versionen: `Organizations`)
3. `+``New Supervision Identity...`
4. Name vergeben (z.B. `ReBreak Supervision Chahine 2026`)
5. Cert wird im **macOS-Schlüsselbund** gespeichert
6. Schlüsselbund öffnen (`Schlüsselbundverwaltung.app`):
- Suche nach dem Namen aus Schritt 4
- Cert + Private-Key sollten beide sichtbar sein
- Rechtsklick auf Cert → **„2 Objekte exportieren..."**
- Format: **„Personal Information Exchange (.p12)"**
- Speichern als `~/.rebreak-supervise/supervision-identity.p12`
- Passwort vergeben — leer lassen für einfachen Bootstrap-Tool-Zugriff, ODER Passwort setzen und manuell in `~/.rebreak-supervise/supervision-identity.pass` ablegen (chmod 600)
## Pfad B — Via cfgutil CLI
VERIFY ON DEVICE: exakte Flags noch zu validieren. Apple's CLI-Doku ist hier dünn.
```bash
mkdir -p ~/.rebreak-supervise
CFGUTIL=/Applications/Apple\ Configurator.app/Contents/MacOS/cfgutil
# Identity in Schlüsselbund generieren (cfgutil-eigener Aufruf)
"$CFGUTIL" generate-supervision-identity \
--name "ReBreak Supervision $(whoami) $(date +%Y)"
# Dann via Pfad-A Schritt 6 exportieren (das CLI-Tool kann nicht direkt .p12 schreiben)
```
## Verifikation
```bash
ls -l ~/.rebreak-supervise/supervision-identity.p12
# Sollte: -rw------- 1 ...
# Cert-Inhalt prüfen (Passwort eingeben falls gesetzt)
openssl pkcs12 -info -in ~/.rebreak-supervise/supervision-identity.p12 -nokeys
```
Erwartete Ausgabe enthält etwa:
```
subject=/CN=Apple Configurator/.../CN=ReBreak Supervision ...
```
## Sicherheit
- Die `.p12` ist **gleichwertig zur Macht** ein iPhone zu supervisen — schützen wie einen SSH-Key
- Niemals in Git committen
- Bei Mac-Wechsel: Identity exportieren + auf neuen Mac übertragen (oder neu generieren — alte Devices akzeptieren dann nur die alte)
- Bei Identity-Verlust: alte enrollte Devices bleiben weiter supervised, aber dieser Mac kann sie nicht mehr managen. Neuen Mac → neue Identity → User-Devices brauchen Re-Setup-Sandwich
## Bei Fehler "supervision identity not trusted"
Apple verlangt manchmal dass die Identity im **System-Schlüsselbund** sitzt (nicht User). Workaround:
```bash
sudo security add-trusted-cert -d -r trustRoot \
-k /Library/Keychains/System.keychain \
~/Path/to/exported-cert-only.cer
```
Oder via Apple Configurator GUI re-generieren — die GUI handhabt das korrekt.