systemd-Dienste, die ihre Secrets aus Crunu bekommen
Der Crunu-Agent als abgeschotteter systemd-Dienst unter Linux: Dienste mit crunu run starten oder mit crunu pull eine Datei für EnvironmentFile= schreiben.
- Unterstützung
- Funktioniert heute mit Crunu: Die Unterstützung für systemd ist Teil des Produkts.
- Crunu-Funktionen
- Maschinen und Netzwerkregeln
- Geprüft
- Mit Crunu 6.0.0 am 27. Oktober 2026
Crunu-Funktionen, die mit systemd funktionieren
Jede Funktion unten arbeitet in jeder Integration gleich: Der Server bewahrt Chiffretext auf, und nur die Menschen, Maschinen und Tokens, denen Sie Zugriff gewähren, können entschlüsseln.
Maschinen
Registrieren Sie einen Server mit einem Einmalcode. Der Agent crunu hält seine Umgebungen im Arbeitsspeicher und startet Ihre Programme damit.
Mehr erfahren
Netzwerkregeln
Liefern Sie den Inhalt einer Umgebung nur an erlaubte IPv4- und IPv6-Netze aus, mit signierten Regeln, die sich nicht unbemerkt lockern lassen.
Mehr erfahren
So funktioniert es mit systemd
Auf dieser Seite
Was Crunu mit systemd tut
Auf einem Linux-Server läuft der Agent crunu als systemd-Dienst crunu-agent. Er meldet sich mit den eigenen Schlüsseln der Maschine an, fragt den Server jede Minute ab, hält entschlüsselte Umgebungen nur im Arbeitsspeicher und übergibt sie über einen lokalen Socket an crunu run. Ihr Dienst startet über crunu run und bekommt seine Variablen vom Agenten, also landet nichts auf der Festplatte.
So hält Crunu auch production aus CI heraus: Der Produktionsserver holt seine Umgebung selbst, und die Pipeline liefert nur Code und startet den Dienst neu.
Die Maschine registrieren
Öffnen Sie in Crunu Machines und wählen Sie New machine. Wählen Sie ihre Umgebungen und wie sie ausgeliefert werden, und kopieren Sie dann den Installationsbefehl aus dem Dialog Enroll machine. Er installiert den Agenten, prüft die SHA-256-Prüfsumme des Binarys und registriert die Maschine mit einem Einmalcode, der aus stdin gelesen wird:
printf '%s\n' 'crunu_enr_…' | sudo sh install.sh --version 6.0.0 --sha256 amd64=<sum> --sha256 arm64=<sum> --base-url https://releases.crunu.com/6.0.0 --server https://app.crunu.com --enroll -Der Dialog setzt den Registrierungscode und die Prüfsummen für Sie ein. Releases des Agenten werden auf releases.crunu.com veröffentlicht: Version 6.0.0 hat Binaries für Linux und macOS, .deb-Pakete, install.sh und ein signiertes Manifest. Auf einem Server, den Sie selbst betreiben, zeigt der Dialog die Adressen, mit denen dieser Server eingerichtet ist. Der Code gilt standardmäßig 15 Minuten und ist mit der ersten Vorlage verbraucht. crunu enroll gibt den Fingerabdruck der Maschine aus; geben Sie die Maschine unter Machines frei, nachdem Sie geprüft haben, dass der Fingerabdruck übereinstimmt.
Der Installer ist mit systemd unter Ubuntu 24.04, Ubuntu 22.04 und Debian 12 getestet. Ein .deb-Paket wird ebenfalls für amd64 und arm64 gebaut.
Ihren Dienst über crunu run starten
# /etc/systemd/system/payments-api.service
[Service]
User=payments
ExecStart=/usr/local/bin/crunu run --env payments-api/production --restart on-change -- /opt/payments-api/bin/serverDer Benutzer des Dienstes muss in der Gruppe crunu sein, der der Socket des Agenten gehört. Mit --restart on-change startet crunu run Ihr Programm neu, nachdem sich Werte geändert haben: Es sendet SIGTERM, dann SIGKILL, wenn das Programm nicht innerhalb des Stop-Timeouts beendet ist, und startet es mit den neuen Variablen wieder. Ins Log gehen nur die Namen geänderter Variablen. Signale von systemd werden an Ihr Programm weitergeleitet, und sein Exit-Code wird zu dem von crunu run.
Das Programm bekommt eine saubere Prozessumgebung: eine kurze Positivliste wie PATH, HOME und LANG sowie die Variablen der Umgebung.
Oder eine Datei für EnvironmentFile= schreiben
Soll eine Unit Variablen aus einer Datei lesen, kann crunu pull sie als eine env-Datei mit den Rechten 0600 schreiben:
crunu pull --env payments-api/production --env-out /etc/payments-api/envRichten Sie EnvironmentFile= der Unit auf diesen Pfad. Die Werte liegen dann auf der Festplatte, lesbar für root und den Eigentümer der Datei, und Crunu entfernt die Datei später nicht. Nutzen Sie lieber crunu run, wo es geht.
Wie der Dienst des Agenten abgeschottet ist
- Die Unit läuft als Benutzer
crunuohne Capabilities, mitProtectSystem=strict, schreibgeschütztem Home, privatem/tmpund privaten Geräten und einemSystemCallFilter, der auf gewöhnliche Aufrufe eines Dienstes beschränkt ist. - Core-Dumps sind aus, und unter Linux ist der Agent vor anderen Prozessen desselben Benutzers abgeschirmt.
- Zustandsdateien werden atomar geschrieben. Der Agent hält den neuesten geprüften Stand fest, bevor er ihn ausliefert, sodass der Server ihn nach einem Neustart nicht unbemerkt zurückrollen kann.
Betrieb
sudo systemctl enable --now crunu-agent
sudo systemctl kill -s HUP crunu-agent
crunu statusDer erste Befehl startet den Agenten, sobald die Maschine registriert ist. SIGHUP lässt ihn den Server sofort abfragen statt erst in der nächsten Minute. crunu status zeigt die Maschine, ihre Organisation und Fingerabdrücke, die Lease und jede Umgebung.
Ist der Server nicht erreichbar, liefert der Agent den letzten geprüften Stand aus, bis die Lease endet, standardmäßig nach 24 Stunden. Nachdem die Maschine widerrufen ist, löscht er ihre Umgebungen innerhalb von Minuten aus dem Arbeitsspeicher, solange sie online ist.
Weiterführend
Fragen aus der Praxis
Nicht dabei? Schreiben Sie an support@crunu.com, und ein Mensch antwortet.
Werden Secrets auf die Festplatte geschrieben?
Nicht mit crunu run: Der Agent hält Umgebungen im Arbeitsspeicher und übergibt sie über einen lokalen Socket. crunu pull --env-out schreibt nur dann eine Datei, wenn Sie eine anfordern.
Was passiert, wenn der Server nicht erreichbar ist?
Der Agent liefert den letzten geprüften Stand aus, bis seine Lease endet, standardmäßig nach 24 Stunden.
Läuft der Dienst unter macOS?
Nein. Den Hintergrunddienst gibt es nur für Linux. Unter macOS funktioniert crunu als Kommandozeilenwerkzeug.