Ein Neustart ist erfolgt, aber der macOS-Runner nimmt keine Aufträge an, bis eine Benutzersitzung verfügbar ist.
Schnellentscheidung: Automatischer Login ist für GitLab Runner unter macOS keine standardmäßig sichere Betriebsoption. Aktivieren Sie ihn nur, wenn die Abhängigkeit von der Benutzersitzung dokumentiert, mit der FileVault-Richtlinie vereinbar und durch eine klare Grenze für Kontorechte und Jobvertrauen abgesichert ist. Andernfalls sollten Sie Knoten oder Aufträge anders aufteilen, statt den Schutz für einen dauerhaften Runner-Status zu lockern.
Wer diese Abnahme benötigt:
IT-Verantwortliche, die den Wiederanlauf von Mac-CI-Knoten mit ihrer Endgeräterichtlinie abgleichen müssen.
Plattformingenieure, die Dienstmodus, Ausführungskonto und tatsächliche Jobgrenzen prüfen.
Sicherheitsverantwortliche, die automatischen Login, FileVault, Keychain und nicht vertrauenswürdige Beiträge gemeinsam bewerten.
00Sitzungsabhängigkeit und Runner-Status
Bei macOS sind „LaunchAgent geladen“, „Benutzer angemeldet“, „Runner erreichbar“ und „Build erfolgreich“ unterschiedliche Zustände. Ein grüner Status oder eine erfolgreiche Verbindung ersetzt daher keinen Test eines repräsentativen CI-Auftrags. GitLab beschreibt den macOS-Dienstmodus als benutzerbezogenen LaunchAgent; der Runner hängt damit an einer verfügbaren Benutzersitzung. Die Installationshinweise für GitLab Runner unter macOS sind die maßgebliche Grundlage, um diesen Dienstmodus und seinen Startkontext zu prüfen.
Automatischer Login adressiert dabei nur ein Teilproblem: Er kann dazu beitragen, nach einem Neustart eine Sitzung bereitzustellen. Daraus folgt nicht, dass der Runner korrekt registriert ist, seine Konfiguration laden kann oder ein Build samt erforderlichen Werkzeugen funktioniert. Behandeln Sie die Einstellung deshalb als Teil einer Wiederanlaufarchitektur – nicht als allgemeine CI-Verfügbarkeitsgarantie.
| Prüfzustand | Was die Beobachtung aussagt | Was zusätzlich nachzuweisen ist |
|---|---|---|
| LaunchAgent geladen | Der benutzerbezogene Dienst ist eingerichtet oder gestartet. | Läuft er im erwarteten Konto und bleibt er nach der Anmeldung verfügbar? |
| Benutzersitzung aktiv | Ein Benutzerkontext ist vorhanden. | Ist der automatische Login nach der Unternehmensrichtlinie zulässig? |
| Runner erreichbar | Der Runner kann Aufträge entgegennehmen. | Ist die Zuordnung zu Projekten und Auftragsarten korrekt begrenzt? |
| Build abgeschlossen | Ein geprüfter Auftrag wurde ausgeführt. | Waren Werkzeuge, Signierung und Ergebnis für den vorgesehenen Workflow vollständig? |
Architekturentscheidung: Wenn der Runner eine interaktive Sitzung benötigt, muss die verantwortliche Stelle festlegen, wie diese Sitzung wiederhergestellt wird und wer bei einem fehlgeschlagenen Wiederanlauf eingreift. Automatischer Login ist keine Ersatzmaßnahme für Überwachung, Wiederherstellungsablauf oder eine Sicherheitsfreigabe.
01Kontorechte und Shell-executor-Grenzen
Prüfen Sie nicht nur, ob ein Runner-Konto „funktioniert“. Entscheidend ist, worauf ein darauf ausgeführter Auftrag zugreifen kann: Projektdateien, gemeinsam genutzte Verzeichnisse, lokale Werkzeuge, Netzwerkziele und gespeicherte Zugangsdaten. Die tatsächliche Wirkung eines Jobs richtet sich nach dem Kontext des Kontos und der Hostkonfiguration.
Beim GitLab Shell executor werden Aufträge direkt auf dem Host ausgeführt. GitLab weist auf die begrenzte Isolation und die Sicherheitsrisiken dieser Ausführungsart hin; die Eigenschaften dürfen nicht auf andere Executor-Typen übertragen werden. Die Sicherheitsdokumentation zum Shell executor beschreibt, warum Aufträge und Host nicht wie voneinander abgeschottete Umgebungen behandelt werden sollten.
| Betriebsmodell | Geeignet, wenn | Kritische Abnahmebedingung |
|---|---|---|
| Gemeinsamer Shell-Runner für vertrauenswürdige interne Jobs | Projekte, Konten und Jobquellen vergleichbare Vertrauensanforderungen haben. | Zugriffsrechte und Runner-Zuweisungen sind dokumentiert und überprüfbar. |
| Getrennter Runner für externe Beiträge oder andere Vertrauensstufen | Beiträge nicht denselben Hostkontext wie interne Release-Aufträge erhalten sollen. | Es gibt keine gemeinsam zugänglichen Schlüssel, Arbeitsbereiche oder unnötigen Netzwerkrechte. |
| Signatur-Runner mit enger Auftragszuweisung | Zertifikate und Keychain nur für freigegebene Release-Aufträge benötigt werden. | Zugriff ist auf die erforderlichen Jobs und das dafür vorgesehene Konto begrenzt. |
Konten- und Rechteinventar
Erfassen Sie das Konto, unter dem der Runner tatsächlich läuft, und vergleichen Sie seine Berechtigungen mit den Anforderungen der Aufträge. Ein Konto mit Administratorrechten ist nicht automatisch erforderlich, nur weil ein Build Werkzeuge installiert oder einen Simulator startet. Wenn eine konkrete Aufgabe erhöhte Rechte benötigt, sollte diese Ausnahme einzeln begründet und begrenzt werden.
Prüfen Sie außerdem die erreichbaren Speicherorte und Netzwerkziele. Ein Job kann mehr lesen oder verändern als sein Arbeitsverzeichnis, wenn das Konto weitere Verzeichnisse, gemeinsam genutzte Daten oder interne Dienste erreichen darf. Notieren Sie den Befund als Rechteinventar, nicht als Vermutung aus der Runner-Konfiguration.
Vertrauensgrenzen für Aufträge
Ordnen Sie Aufträge danach, ob sie aus vertrauenswürdigen internen Änderungen, externen Beiträgen oder getrennten Projekten stammen. Ein Shell-Job ist kein abgeschotteter Prozess, nur weil er von einer CI-Pipeline gestartet wurde. Eine Architektur, in der beliebige Aufträge nacheinander dasselbe Konto und denselben Host verwenden, braucht daher eine explizite Begründung.
Trennen Sie Runner-Zuweisungen, wenn sich Vertrauensniveau oder Geheimniszugriff unterscheiden. Falls eine solche Trennung im bestehenden Betrieb nicht umgesetzt werden kann, muss die Sicherheitsfreigabe diese Einschränkung ausdrücklich benennen. Die Einstufung gilt für den jeweiligen Executor und die konkrete Hostkonfiguration; sie ist keine pauschale Aussage über alle GitLab-Runner-Varianten.
02FileVault und Anmelderichtlinie
Apple weist darauf hin, dass die Einstellung für automatischen Login bei aktiviertem FileVault möglicherweise nicht verfügbar ist. Apples Support-Hinweis zu automatischem Login und FileVault ist deshalb vor der Planung des Wiederanlaufs zu prüfen. Für die Unternehmensentscheidung sind drei Fragen getrennt zu beantworten: Ist das Volume geschützt? Kann eine zulässige Benutzersitzung wiederhergestellt werden? Ist der Runner anschließend tatsächlich einsatzbereit?
Schließen Sie aus einer fehlenden Auto-Login-Option nicht, dass jede macOS-Umgebung gleich reagiert oder jeder Runner ausfällt. Apple dokumentiert eine Einschränkung der Einstellung; die konkrete Wiederherstellung hängt zusätzlich von Richtlinie, Hostkonfiguration und Dienststart ab. Die Apple-Sicherheitsdokumentation zur Verwaltung von FileVault liefert den Bezug für die Bewertung der Festplattenverschlüsselung.
Wichtig: Deaktivieren Sie FileVault nicht, um einen Runner nach einem Neustart leichter erreichbar zu machen. Wenn die vorgesehene Sicherheitsrichtlinie den gewünschten automatischen Wiederanlauf verhindert, muss die Wiederherstellungsarchitektur angepasst oder eine kontrollierte manuelle Intervention vorgesehen werden.
Halten Sie außerdem fest, wer nach einem Neustart einen erforderlichen Anmelde- oder Entsperrschritt ausführt. Ein Prozess, der nur mit einer Person vor dem Gerät funktioniert, ist ein anderer Betriebsablauf als eine automatisierte Wiederherstellung. Beide können organisatorisch zulässig sein, aber sie brauchen unterschiedliche Zuständigkeiten und Abnahmenachweise.
03Keychain und Signaturgeheimnisse
Ein Mac-Buildknoten kann mehr als Quellcode und Compiler enthalten: Für Signatur- oder Veröffentlichungsaufträge können Zertifikate, private Schlüssel und Keychain-Daten verfügbar sein. Der wichtige Prüfpunkt ist nicht allein, ob diese Daten vorhanden sind, sondern welche Jobs und Konten sie lesen und verwenden dürfen.
Trennen Sie gewöhnliche Tests von Signatur- und Veröffentlichungsaufträgen. Ein Testjob sollte nicht dieselben Berechtigungen erhalten, nur weil er auf demselben Runner startet. Wenn ein Host für unterschiedliche Vertrauensstufen verwendet wird, prüfen Sie, ob ein nicht vertrauenswürdiger Auftrag während oder nach seiner Ausführung auf gemeinsam erreichbare Schlüssel oder Daten zugreifen kann.
Dokumentieren Sie für jedes Geheimnis seinen Zweck, den berechtigten Ausführungskontext und die vorgesehene Behandlung nach einem Sicherheitsvorfall. Die Nutzung sollte sich anhand der verfügbaren Unternehmensprotokolle nachvollziehen lassen; wo ein solcher Nachweis nicht existiert, ist diese Lücke Teil der Abnahme. Weisen Sie keine konkreten Rotationsfristen oder Aufbewahrungswerte ohne Bezug auf die interne Richtlinie aus.
04Wiederanlaufprüfung und Freigabenachweis
Die Abnahme sollte in einer isolierten Testumgebung stattfinden, bevor ein Produktionsknoten für sensible Aufträge freigegeben wird. GitLabs Hinweise zur macOS-Konfiguration können dabei helfen, die konkrete Runner-Einrichtung gegen die erwartete Betriebsweise zu prüfen. Maßgeblich bleibt der Nachweis am vorgesehenen Host, nicht ein erfolgreicher Test auf einer anders konfigurierten Maschine.
Durchführbare Abnahmeschritte
-
Ausführungskontext festhalten. Dokumentieren Sie Benutzerkonto, Dienstmodus, Runner-Zuweisungen und verwendeten Executor. Vergleichen Sie diese Angaben mit der geplanten Nutzung und den Berechtigungen, die ein Auftrag tatsächlich erhält.
-
Sitzungsabhängigkeit kontrolliert prüfen. Lösen Sie einen Neustart in der Testumgebung aus und beobachten Sie getrennt, ob die Benutzersitzung wieder verfügbar wird, der LaunchAgent geladen ist und der Runner Aufträge annimmt. Ein einzelner erfolgreicher Zustand reicht nicht als Freigabe.
-
FileVault-Richtlinie abgleichen. Prüfen Sie, ob der gewünschte Anmelde- und Wiederanlaufweg mit den geltenden Anforderungen an die Datenträgerverschlüsselung vereinbar ist. Wenn nicht, halten Sie die vorgesehene manuelle Wiederherstellung oder eine alternative Knotenaufteilung fest, statt die Schutzanforderung zu umgehen.
-
Repräsentativen Build ausführen. Verwenden Sie einen Auftrag, der die für den späteren Betrieb wichtigen Schritte abbildet. Prüfen Sie das Ergebnis sowie den tatsächlichen Ausführungskontext; die bloße Erreichbarkeit des Runners ist kein Build-Nachweis.
-
Vertrauensgrenze testen. Kontrollieren Sie, welche Projekte und Jobquellen dem Runner zugewiesen werden können. Stellen Sie sicher, dass nicht vertrauenswürdige Aufträge keinen Zugriff auf Signaturmaterial, sensible Arbeitsbereiche oder unnötige Netzwerkziele erhalten.
-
Störungsweg dokumentieren. Legen Sie fest, wer bei nicht wiederhergestellter Sitzung, einem nicht erreichbaren Runner oder einem fehlgeschlagenen Build eingreift. Halten Sie fest, welche Betriebszustände die Produktion blockieren und welche Stelle die Freigabe nach einer Korrektur erteilt.
Checkliste für die Produktionsfreigabe
- [ ] Der Dienstmodus und das tatsächliche Runner-Konto sind auf dem vorgesehenen Host dokumentiert.
- [ ] Die Rechte des Kontos sind für Dateien, Netzwerkzugriffe und Entwicklungswerkzeuge geprüft.
- [ ] Die Sicherheitsbewertung berücksichtigt den konkret verwendeten Executor; Shell-executor-Aufträge werden nicht als voneinander abgeschottet eingeordnet.
- [ ] Die Quellen der Jobs und die Runner-Zuweisung sind nach Vertrauensniveau bewertet.
- [ ] Die FileVault-Vorgabe bleibt erfüllt; automatischer Login wird nicht als Grund für eine Absenkung der Datenträgersicherheit verwendet.
- [ ] Der Zugriff auf Keychain, Zertifikate und Veröffentlichungsgeheimnisse ist auf freigegebene Aufgaben begrenzt.
- [ ] Nach einem Neustart wurden Sitzung, Runner-Verfügbarkeit und ein repräsentativer Build getrennt geprüft.
- [ ] Verantwortlichkeit und Vorgehen für einen fehlgeschlagenen Wiederanlauf sind festgelegt.
Geben Sie den Knoten nur frei, wenn die für die Organisation erforderlichen Punkte belegt sind. Ist ein kritischer Punkt offen, lautet die belastbare Entscheidung nicht „automatischer Login ist sicher“, sondern „Freigabe zurückstellen oder Betriebsgrenze anpassen“. Diese Bewertung ist eine Architekturentscheidung auf Basis der konkreten Ausführung, nicht die Behauptung, dass automatischer Login in jeder Umgebung unsicher oder jeder Neustart ohne ihn unmöglich sei.
05Häufige Fragen
Warum ist bei GitLab Runner unter macOS eine Benutzersitzung relevant?
Der macOS-Dienstmodus von GitLab Runner verwendet einen benutzerbezogenen LaunchAgent. Damit hängt der Startkontext von einer verfügbaren Benutzersitzung ab. Automatischer Login kann bei der Wiederherstellung nach einem Neustart helfen, ist aber kein Beleg dafür, dass Runner, Konfiguration und Build funktionieren. Prüfen Sie diese Zustände einzeln, bevor Sie daraus eine Betriebsfreigabe ableiten.
Was ändert FileVault am Wiederanlauf des Runners?
Apple dokumentiert, dass automatischer Login bei aktiviertem FileVault möglicherweise nicht verfügbar ist. Das bedeutet nicht, dass jede macOS-Umgebung identisch wiederhergestellt wird; es bedeutet, dass die gewünschte Wiederanlaufmethode mit der konkreten Richtlinie und Konfiguration geprüft werden muss. Lassen Sie FileVault nicht für einen CI-Komfortgewinn weg. Testen Sie stattdessen den genehmigten Wiederherstellungsweg.
Reicht der Shell executor als Grenze zwischen Projekten aus?
Nein. Der Shell executor führt Aufträge direkt auf dem Host im Kontext des Runner-Kontos aus und bietet nur begrenzte Isolation. Getrennte Projektverzeichnisse allein belegen daher keine wirksame Sicherheitsgrenze. Prüfen Sie Jobquellen, Kontorechte und gemeinsam erreichbare Ressourcen. Bei unterschiedlichen Vertrauensstufen sollten Sie Runner oder Hosts entsprechend trennen.
Wie lassen sich iOS-Signaturaufträge von normalen Tests abgrenzen?
Weisen Sie Keychain und Signaturmaterial nur den dafür freigegebenen Aufträgen und Ausführungskontexten zu. Gewöhnliche Tests sollten diese Berechtigungen nicht automatisch erben. Prüfen Sie, ob andere Jobs auf dieselben Schlüssel oder Arbeitsbereiche zugreifen können, und halten Sie Nutzung sowie Verantwortlichkeit gemäß der Unternehmensrichtlinie nachvollziehbar fest.
06Nächster Schritt für die Beschaffungsentscheidung
Ein selbst betriebener Mac bietet direkte Kontrolle, verursacht aber auch fortlaufenden Aufwand für Hardware, Wartung und Wiederherstellung. Ein geteilter CI-Host kann zusätzlich Abhängigkeiten zwischen Projekten schaffen; eine lokal verfügbare Maschine löst wiederum nicht automatisch die Anforderungen an Fernzugriff und zentrale Betriebsverantwortung. Entscheidend ist daher, ob das Team Sitzungswiederherstellung, Isolation und Geheimniszugriff selbst zuverlässig abnehmen kann.
Wenn für einen begrenzten Zeitraum ein zusätzlicher Mac-Knoten oder eine Testumgebung benötigt wird, sollte ein Mietmodell anhand derselben Abnahmepunkte geprüft werden: veröffentlichte Zugriffswege, Bedingungen für Login und Wiederherstellung sowie tatsächlich zugesicherte Bereitstellungsinformationen. Die NUKCLOUD-Übersicht zu Mac-Angeboten kann als Einstieg in diese Prüfung dienen; die NUKCLOUD-Geschäftsbedingungen sollten vor einer Beschaffungsentscheidung ebenfalls herangezogen werden. Für dauerhaft hohe Last oder Aufgaben, die lokale physische Schnittstellen erfordern, kann ein eigener Mac weiterhin die passendere Lösung sein.