Naar de inhoud
Vroege toegangMachines, CI/CD en Netwerkregels

Secrets gaan naar de servers die ze gebruiken, niet naar de pipeline ertussen

De agent crunu draait op je Linux-servers, houdt ontsleutelde omgevingen in het geheugen en start je programma’s ermee. CI krijgt een token voor de omgeving die het bouwt, gebonden aan één repository en branch. Waarden van production hoeven helemaal niet door CI te gaan.

Voor wie het isDevOps- en platformengineers die secrets afleveren aan Linux-servers en CI-pipelines.

Voorbeeld. Kiteline is een fictief bedrijf.

Vragen die teams zoals het jouwe stellen

De vragen die opkomen als een team zoals het jouwe zijn secrets op één plek samenbrengt. De handleiding hieronder beantwoordt ze allemaal.

  1. Hoe krijgt een server zijn omgeving zonder bestand op schijf?
  2. Hoe houden we waarden van production buiten CI?
  3. Hoe koppelen we een CI-token aan één repository en branch?
  4. Wat gebeurt er met draaiende services als de kluis onbereikbaar is?
  5. Hoe snel werkt het intrekken van een machine?
  6. Kunnen we production alleen aan onze eigen netwerken leveren?
  7. Wie kan machines inschrijven zonder de waarden te zien?
  8. Hoe ziet een deployscript waarom crunu faalde?
Getting started leidt een nieuwe eigenaar door de eerste vijf stappen.

De delen van Crunu die het dekken

Elk deel werkt volgens dezelfde regel: de server bewaart versleutelde data, publieke sleutels en ondertekende documenten, en heeft nooit een sleutel die je waarden opent.

  • Machines

    Schrijf een server in met een eenmalige code, en de agent crunu houdt de omgevingen in het geheugen en start je programma’s ermee.

    Lees meer

  • CI/CD

    Geef elke pipeline een servicetoken dat beperkt is tot de eigen omgevingen, en bind het met OIDC aan je CI-provider, zodat een gelekt token niet op zichzelf kan inloggen.

    Lees meer

  • Netwerkregels

    Lever de inhoud van een omgeving alleen aan toegestane IPv4- en IPv6-netwerken, met ondertekende regels die niet stilletjes kunnen worden versoepeld.

    Lees meer

  • Auditlog

    Inlogpogingen, toekenningen, versies, rotaties en weigeringen komen in een log met hashketen die je met één klik verifieert en exporteert.

    Lees meer

  • Toegangsbeheer

    Geef elke persoon, machine en pipeline alleen de omgevingen die nodig zijn, met rollen die op versleutelingssleutels steunen en niet alleen op controles door de server.

    Lees meer

Zo werkt het voor platformteams

Op deze pagina

Waar secrets lekken op weg naar een proces

Een waarde in een draaiend proces krijgen, is waar hij meestal ontsnapt: een .env die in een image is gebakken, een sleutel van production in de variabelen van CI, een deploygebruiker die alles kan lezen.

De taak is dat elke machine en pipeline precies de eigen omgevingen krijgt, dat er niets op schijf belandt tenzij je dat kiest, en dat intrekken één handeling is.

Vier stappen van een nieuwe server naar een draaiende service

  1. Maak de machine aan. Kies de omgevingen en hoe ze worden geleverd: een Environment key, die altijd de nieuwste versie van elk bestand geeft, of Selected files, een versleutelde kopie van alleen de bestanden die de machine nodig heeft. Selected files kun je intrekken zonder de omgevingssleutel te wijzigen.
  2. Installeer en schrijf in. Het venster Enroll machine toont één opdracht die de agent installeert, de SHA-256 ervan controleert en de machine inschrijft met een code voor eenmalig gebruik. De code is standaard 15 minuten geldig en hooguit 24 uur, en wordt gelezen uit stdin of een variabele, nooit uit een argument.
  3. Keur goed op vingerafdruk. crunu enroll toont de vingerafdruk van de machine. Keur de machine goed nadat je hebt gecontroleerd dat die overeenkomt met de vingerafdruk in de app.
  4. Start je service via de agent. De servicegebruiker moet in de groep crunu zitten. Met --restart on-change start het programma opnieuw met de nieuwe waarden zodra die veranderen.
INI
# /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/server

Wat de agent en tokens voor je doen

BehoefteWat Crunu doet
Geen secrets op schijfDe agentservice houdt ontsleutelde omgevingen alleen in het geheugen en geeft ze aan crunu run via een lokale socket die open is voor de groep crunu. Zie systemd.
Bestanden waar een tool ze verwachtcrunu pull schrijft bestanden met rechten 0600 in twee fasen, bewaart de vorige versie als .prev, volgt geen symlinks en weigert opstartbestanden van de shell, .ssh/ en systemd-mappen. --env-out schrijft één env-bestand voor EnvironmentFile=.
Een agent die je kunt doorlichtenEen statische Go-binary die alleen de standaardbibliotheek gebruikt. Op Linux is hij afgeschermd van andere processen van dezelfde gebruiker, staan core dumps uit, en draait de service in een systemd-sandbox. Updates controleren een Ed25519-handtekening.
Servers die een storing doorstaanDe agent controleert de server elke minuut en verlengt zijn lease elke 5 minuten. Is de server onbereikbaar, dan levert hij de laatst geverifieerde staat tot de lease afloopt, standaard na 24 uur.
CI zonder productionServicetokens krijgen alleen de omgevingen die je toekent, met een lease, een gebruikslimiet en netwerken. Een CI-binding (OIDC) koppelt een token aan een repository, branch en deployment-omgeving in GitHub Actions, GitLab CI, Bitbucket Pipelines of bij elke OIDC-issuer. Een hergebruikt CI-token wordt geweigerd.
Production alleen vanaf bekende netwerkenOndertekende netwerklijsten en netwerkbeleid per omgeving voor IPv4 en IPv6. Aanscherpen geldt meteen; versoepelen wacht 15 minuten met een waarschuwing en een mogelijkheid om het terug te draaien, of geldt meteen met een tweede handtekening. Machinepassen vangen adreswijzigingen op, standaard 24 uur.
Intrekken in één handelingEen machine intrekken wist binnen enkele minuten de omgevingen uit het geheugen zolang de machine online is, en roteert de omgevingssleutels die ze had. Een hergebruikte inschrijfcode wijst op mogelijke onderschepping.
SignalenWaarschuwingen bij inloggen vanaf nieuwe apparaten, hergebruikte inschrijfcodes, machines op nieuwe adressen, hergebruikte CI-tokens, verlopen leases en netwerkgebeurtenissen, verstuurd naar een webhook die met HMAC is ondertekend of per e-mail. Slack, Microsoft Teams en PagerDuty koppel je via hun inkomende webhooks.

Fouten die je uit elkaar kunt houden

Als crunu geen variabelen kan doorgeven, zegt de exitcode waarom, zodat een deployscript kan reageren. Anders geeft crunu run de eigen exitcode van je programma terug.

CodeBetekenis
3De machine is niet ingeschreven, of er is niemand ingelogd
4Toegang is ingetrokken of de lease is verlopen
5Geen verbinding en geen geldige geverifieerde staat
6Een controle van een handtekening of certificaat is mislukt
7Dit adres is niet toegestaan door het netwerkbeleid van de omgeving

Waar de agent ophoudt

  • De service draait op Linux met systemd. Op macOS werkt crunu als opdrachtregeltool, zonder achtergrondservice. Er is geen build voor Windows.
  • Geen Kubernetes-operator, Helm-chart of CSI-driver, geen Terraform-provider en geen SDK’s. Programma’s krijgen waarden via crunu run.
  • Geen ingebouwde sync naar Vercel, Cloudflare, AWS Secrets Manager of GitHub Secrets. Je kunt waarden vanuit CI erin zetten met crunu run en de eigen CLI van het platform.
  • Geen dynamische secrets. Crunu maakt geen kortlevende databasewachtwoorden aan; daarvoor zou een sleutel op de server nodig zijn.
  • Een machine is een legitieme ontvanger. Root op die machine kan lezen wat ze heeft gekregen, en een draaiend proces houdt zijn variabelen tot het opnieuw start.
  • Netwerkbeperkingen worden door de server afgedwongen, niet door versleuteling. Een overgenomen server zou ze niet naleven, en elke machine achter één NAT heeft hetzelfde adres.

Elke grens, met wat je eraan doet, staat op de pagina met beperkingen.

Als je ook de server draait

Teams die de server in eigen huis willen, kunnen hem draaien op Docker, Cloudflare Workers, Vercel of Google Cloud Run, en ertussen verhuizen met één archief zonder onversleutelde waarden. Een opdracht doctor controleert een deployment, en een statusendpoint toont metrics in Prometheus-formaat. De server is niet als publieke download gepubliceerd. Mail naar support@crunu.com. De pagina over zelf hosten vergelijkt de platforms.

Verwante documentatie en integraties

Veelgestelde vragen

Staat je vraag er niet bij? Mail naar support@crunu.com, dan antwoordt een mens.

Wat gebeurt er met draaiende services als Crunu onbereikbaar is?

Ze blijven werken. De agent levert de laatst geverifieerde staat tot de lease afloopt, standaard na 24 uur. Is er geen geldige staat, dan stopt crunu run met code 5.

Hoe snel werkt het intrekken van een machine?

Binnen enkele minuten zolang de machine online is: de agent controleert de server elke minuut en wist de omgevingen zodra de machine is ingetrokken. Een machine die offline blijft, verliest de toegang als de lease afloopt.

Kan CI naar production deployen zonder de secrets van production te zien?

Ja, en dat is de opzet die Crunu aanraadt. De productieserver draait de agent en haalt zijn eigen omgeving op; de pipeline levert de code en herstart de service.

Werkt crunu in containers?

Het installatiescript heeft een modus zonder root voor CI en containers, getest in images van node:24, Ubuntu 24.04 en Alpine 3.22. Met een servicetoken logt crunu in en ontsleutelt in het eigen proces, zonder statusbestanden.

Kan iemand machines inschrijven zonder waarden te zien?

Ja. De rol Operator op een omgeving heeft geen sleutel: wie die rol heeft, voegt machines toe en vraagt er toegang voor aan, en een eigenaar of admin keurt goed.

Ondersteunen jullie Kubernetes?

Nee. Er is geen operator, Helm-chart of CSI-driver.

Zet één service op de agent

Maak een machine aan, voer de installatieopdracht uit en keur de machine goed op vingerafdruk. Gratis tijdens de vroege toegang.