Notarisierung beweist, dass Apple Ihre Binärdateien gescannt hat; Stapling bettet das Ticket ein, damit Gatekeeper offline validieren kann. Teams ohne Entscheidung, die „immer staplen“, verschwenden Minuten pro Build; Teams, die „nie staplen“, lernen isolierte Labore auf die harte Tour. Auf Mac mini M4-CI-Runnern—insbesondere dedizierten NodeMac-Hosts in Hongkong, Japan, Korea, Singapur oder den USA—veröffentlichen Sie eine Matrix, die Staple-Policy an Vertriebskanal, Netzannahmen und Artefakttyp bindet. Dieser Artikel liefert zwei Matrizen, acht Rollout-Schritte und FAQ-Strukturdaten passend zur Art, wie Security-Reviewer Pipelines lesen.
Kontext Speicher & Retention: Disk- & Artefakt-Retention und Lockfile-gehashte Caches. Für GUI-Vergleiche zweier signierter Bäume nutzen Sie VNC auf demselben NodeMac-Host. Preise; Hilfe.
Gatekeeper: Online-Ticketlookup vs geheftetes Ticket
macOS kann erfolgreich notarisieren und Nutzer dennoch überraschen, wenn das Ticket nicht geheftet ist und die Maschine beim ersten Start Apple-Dienste nicht erreicht. Umgekehrt mutiert Stapling den äußeren Container (z. B. ein .dmg), was naive Checksummen-Gates ungültig macht, wenn Sie zu früh hashen. Ihre CI-Policy muss benennen, welche Checksumme das Audit-Artefakt (pre-Staple) und welches Blob an Kunden geht (post-Staple).
- Nur Ticket: schnellste Iteration, wenn Lab-Macs zuverlässigen Egress haben und Sie Re-Check-Policies kontrollieren.
- Geheftet: Standard für kundenorientierte Disk-Images, Offline-Installer und Feld-Laptops.
- Hybrid: nur Release-Kanäle staplen; Nightlys ticket-only mit klaren Bannern.
Matrix A: Staple vs Ticket nach Verteilungspfad
| Artefakt & Pfad | Staple? | Begründung |
|---|---|---|
| Entwickler-.dmg auf USB-Kiosken | Ja | Offline-Gatekeeper-Pfad; vermeidet CDN-Abhängigkeit beim ersten Start |
| Interne CI-Smoke-Installation auf verkabelten Lab-Macs | Optional | Wenn Egress überwacht und Fehler akzeptabel, beschleunigt ticket-only die Schleifen |
| MDM-geliefertes pkg mit Post-Install-Stapling | Beides | Dokumentieren, wer stapelt—Pipeline vs MDM—um Doppelarbeit zu vermeiden |
| App-Store-Upload-Pipeline | Apple-Transportdokumente befolgen | Anderer Consumer; keine Desktop-DMG-Regeln stur übernehmen |
Matrix B: CI-Stufenreihenfolge und Verifikation
| Stufe | Befehlsfamilie | Pass-Kriterien |
|---|---|---|
| Signieren | codesign gehärtete Runtime-Flags gemäß Entitlements-Matrix |
codesign --verify --deep --strict sauber |
| Notarisieren | notarytool submit + Poll |
Log zeigt Accepted; Submission-ID archiviert |
| Stapling | xcrun stapler staple |
stapler validate OK auf sauberer VM |
| Smoke | App vom gemounteten Image starten | Kein „beschädigt“-Dialog; Telemetrie entspricht erwarteter Version |
Numerische Leitplanken
- Timeout-Budget: mindestens 25 Minuten Wandzeit für Notary-Poll auf Release-Trains; kürzer auf Feature-Branches nur bei akzeptiertem Flake.
- Parallele Submissions: begrenzen Sie gleichzeitige Notary-Jobs pro Host auf 2, um Apple-Throttling zu vermeiden, das mit Xcode-Spitzen kollidiert.
- Artefakt-Immutabilität: laden Sie gestapelte Objekte unter neuem Objektschlüssel hoch; nie überschreiben.
Audit-Tipp: hängen Sie sowohl die Notary-Submission-ID als auch den SHA-256 des pre-Staple-Artefakts am Change-Ticket an. Stapling ersetzt keine Signing-Logs.
Acht Rollout-Schritte
- Kanäle inventarisieren, wohin jeder Build-Typ geht (Lab, Kunde, MDM).
- Matrix kodieren in Pipeline-Templates—nicht Stammeswissen in Slack.
- Jobs splitten: bauen/signieren, notarisieren, staplen, veröffentlichen mit getrennten Caches.
- VM-Smoke ergänzen, die ausgehende Apple-Endpunkte optional deaktiviert, um fehlendes Stapling zu erkennen.
- Logs speichern für notarytool im gleichen Retention-Bucket wie andere Signing-Nachweise.
- Signing-Zertifikate rotieren nach Kalender; Matrix-Validierung nach jeder Rotation erneut ausführen.
- On-Call schulen, stapler-Fehler vs notarytool-Fehler zu lesen—unterschiedliche Owner.
- Dedizierte M4 pro Region, wenn Warteschlangen riskante Abkürzungen erzwingen—NodeMac entfernt Hardware-Konkurrenz aus der Policy-Debatte.
FAQ
Wann muss CI staplen?
Wenn Nutzer offline oder aus nicht kontrollierten Netzen installieren. Ticket-only für gut angebundene interne Loops, wenn dokumentiert.
Zerstört Stapling Checksummen-Caching?
Ja—vor Staple hashen für Audit; post-Staple-Blob als Lieferobjekt mit eigenem Hash behandeln.
Was, wenn stapler zu früh läuft?
Gatekeeper lehnt beschädigte Apps ab. Reihenfolge erzwingen: signieren → notarisieren → prüfen → staplen → validieren.