Zum Inhalt springen

Server erhalten ihre Secrets beim Start, im Arbeitsspeicher

Installieren Sie den crunu-Agenten auf einem Linux-Server, registrieren Sie ihn mit einem Einmalcode und geben Sie ihn frei, nachdem Sie seinen Fingerabdruck geprüft haben. Der Agent entschlüsselt nur die freigegebenen Umgebungen und übergibt sie beim Start an Ihre App.

  • Registrierungscodes für den einmaligen Gebrauch
  • Entschlüsselte Umgebungen nur im Arbeitsspeicher
  • Läuft bei Ausfällen weiter, für die Lease-Zeit von standardmäßig 24 Stunden
Beispiel. Kiteline ist ein fiktives Unternehmen.

Ein kleines Binary, drei Arten, es zu betreiben

Der Agent ist ein einzelnes statisches Binary für Linux und macOS, auf amd64 und arm64, geschrieben in Go nur mit der Standardbibliothek.

  • MaschineEin Server, auf dem Ihre App läuft, meldet sich nach der Registrierung mit seinem eigenen Schlüssel an. Unter Linux läuft crunu daemon als systemd-Dienst.
  • Service-TokenEin CI-Job meldet sich mit CRUNU_TOKEN an. Alles bleibt im Prozess, es werden keine Dateien geschrieben.
  • PersonWer entwickelt, führt crunu login mit Passwort, Secret Key und zweitem Faktor aus. crunu unlock hält die Schlüssel im Arbeitsspeicher, crunu lock beendet das vorzeitig.

Zur Dokumentation

Registrieren, abgleichen, freigeben

Ein Admin legt die Maschine an und wählt ihre Umgebungen. Crunu stellt einen Registrierungscode für den einmaligen Gebrauch aus. Auf dem Server gibt crunu enroll den Fingerabdruck der Maschine aus, und der Admin gibt sie nach dem Abgleich frei.

  • Ein Code, der einmal funktioniertStandardmäßig 15 Minuten gültig, höchstens 24 Stunden, optional an Adressen gebunden. Der Agent nimmt ihn nur über die Standardeingabe oder eine Umgebungsvariable an.
  • Wiederverwendung löst eine Warnung ausLegt jemand einen bereits verwendeten Code vor, wird die Maschine als möglicherweise abgefangen markiert und eine Warnung verschickt.
  • Auch Operatoren können dasEin Operator, der keine Werte sehen kann, legt Maschinen an und fragt Zugriff für sie an.

Zur Dokumentation

Beispiel. Kiteline ist ein fiktives Unternehmen.

Ihre App startet mit ihren Variablen

crunu run startet das Programm mit einem sauberen Satz Umgebungsvariablen plus denen aus Crunu. Es leitet Signale weiter, gibt den Exit-Code des Programms zurück und startet es mit --restart on-change neu, wenn sich Werte ändern.

  • Dateien, wenn Ihre App Dateien liestcrunu pull schreibt sie mit Modus 0600, behält die vorige Version als .prev und verweigert riskante Pfade wie .bashrc oder .ssh/.
  • Eine Datei für systemdcrunu pull --env-out schreibt die Variablen in eine Datei für eine Zeile EnvironmentFile=.
  • Die eigenen Zugangsdaten bleiben draußencrunu run gibt seine eigenen Variablen wie CRUNU_TOKEN nie an das gestartete Programm weiter.
Exit-Codes von crunu
CodeBedeutung
0Erfolg
3Maschine nicht registriert oder nicht angemeldet
4Zugriff widerrufen oder Lease abgelaufen
5Keine Verbindung und kein gültiger verifizierter Stand
6Prüfung von Signatur oder Zertifikat fehlgeschlagen
7Inhalte werden an diese Adresse nicht ausgeliefert

Zur Dokumentation

Was der Agent im Hintergrund tut

Der Dienst meldet sich jede Minute beim Server und erneuert seine Lease alle 5 Minuten. Entschlüsselte Umgebungen liegen nur im Arbeitsspeicher und erreichen crunu run über einen lokalen Socket.

  • Auch bei einem AusfallIst der Server nicht erreichbar, liefert der Agent den zuletzt verifizierten Stand, bis die Lease abläuft, standardmäßig nach 24 Stunden.
  • Widerruf innerhalb von Minuten, solange onlineDer Agent löscht eine widerrufene Umgebung aus dem Arbeitsspeicher, sobald er das nächste Mal vom Server hört. Ohne Verbindung stoppt er, wenn die Lease endet.
  • Er prüft, was der Server sendetSignaturen, Zertifikate, die Sperrliste und Rollbacks. Stimmt etwas nicht, verweigert er und beendet sich mit Code 6.
  • Abgeschottet unter LinuxDer Prozess ist für andere Prozesse desselben Nutzers gesperrt, Core-Dumps sind aus, und der Dienst läuft in einer systemd-Sandbox.

Zur Dokumentation

Beispiel. Kiteline ist ein fiktives Unternehmen.

Was eine Maschine trotzdem sehen kann

Eine Maschine ist ein legitimer Leser dessen, was Sie ihr freigeben. Halten Sie Freigaben klein und Leases kurz.

  • Root sieht, was freigegeben istRoot auf diesem Server kann alles lesen, was der Maschine freigegeben ist. Geben Sie nur die Umgebungen und Dateien frei, die sie braucht.
  • Laufende Prozesse behalten ihre VariablenEin Prozess, der gestartet wurde, bevor Sie die Maschine widerrufen haben, behält seine Umgebungsvariablen bis zum Neustart.
  • Den Dienst gibt es nur unter LinuxUnter macOS ist der Agent ein Kommandozeilenwerkzeug ohne Hintergrunddienst. Eine Windows-Version gibt es nicht.
  • Kein Kubernetes und keine SDKsApps erhalten ihre Werte über crunu run oder als Dateien von crunu pull.

Alle bekannten Grenzen

Häufige Fragen

Noch etwas anderes? Schreiben Sie an support@crunu.com

Werden entschlüsselte Werte auf die Festplatte geschrieben?

Nicht von crunu run. Der Dienst hält entschlüsselte Umgebungen im Arbeitsspeicher und übergibt sie an den Prozess. Dateien werden nur geschrieben, wenn Sie crunu pull verwenden, mit Modus 0600.

Was passiert, wenn unser Crunu-Server ausfällt?

Der Agent liefert weiter den zuletzt verifizierten Stand, bis seine Lease endet, standardmäßig nach 24 Stunden.

Wie schnell wirkt der Widerruf einer Maschine?

Innerhalb von Minuten, solange die Maschine online ist. Der Agent meldet sich standardmäßig jede Minute und löscht widerrufene Umgebungen bei der nächsten Meldung aus dem Arbeitsspeicher. Ohne Verbindung stoppt er, wenn die Lease endet. Der Widerruf rotiert außerdem die Schlüssel der Umgebungen, die die Maschine hatte.

Kann eine Maschine die Umgebungen einer anderen lesen?

Nein. Jede Maschine hat ihre eigenen Schlüssel und ihre eigenen Freigaben.

Läuft der Agent unter Windows?

Nein. Er läuft unter Linux und macOS, auf amd64 und arm64.

Geben Sie noch heute einem Server seine Umgebung

Erstellen Sie ein Konto, legen Sie eine Maschine an und starten Sie Ihre App mit crunu run.

Kostenlos im Early Access. Zum Sicherheitsmodell