Naar de inhoud

Pipelines krijgen alleen de secrets die je toekent

Een servicetoken wordt in je browser gemaakt en één keer getoond; de server bewaart alleen de publieke sleutels ervan. Geef het toegang tot de omgevingen die een pipeline nodig heeft, en voeg een OIDC-binding toe zodat het alleen werkt in de juiste repository en branch.

  • Tokens lezen alleen wat je toekent
  • OIDC-binding voor GitHub, GitLab en Bitbucket
  • Production kan helemaal buiten CI blijven
Voorbeeld. Kiteline is een fictief bedrijf.

Een token dat niet meer opent dan je toekent

Een crunu_svc_-token wordt volledig in de browser van de admin gegenereerd en één keer getoond. Het leest alleen de omgevingen die je toekent: een token voor development krijgt nooit de sleutel van production.

  • Lease, gebruik en netwerkenGeef een token een lease, een gebruikslimiet van 1 tot 1.000.000 keer en de netwerken waar het vandaan mag komen.
  • Gebonden aan je repositoryMet een OIDC-binding werkt het token alleen samen met het token van je CI-provider voor de repository, de branch en de deployment-omgeving die je hebt gekozen. Een hergebruikt token van de provider wordt geweigerd.
  • Elk gebruik wordt vastgelegdElke inlogpoging van een token, geslaagd of geweigerd, staat in de auditlog, en een hergebruikt CI-token geeft een waarschuwing.

Lees de documentatie

Drie regels in de pipeline

Zet het token als CRUNU_TOKEN in de geheime variabelen van je CI, installeer een vastgezette versie van crunu en voer de stap uit via crunu run. Variabelen worden in het geheugen ontsleuteld en er wordt niets naar schijf geschreven.

  • Een vastgezette, gecontroleerde installatieDe app toont de installatieopdracht met exacte checksums uit het ondertekende releasemanifest.
  • Kant-en-klare wrappersEen GitHub Action, een GitLab-template en een Bitbucket-pipe installeren een vastgezette versie en controleren de SHA-256 ervan.
  • Exitcodes worden doorgegevencrunu run geeft de exitcode van het uitgevoerde programma terug, dus een mislukte test laat de stap nog steeds mislukken.

Lees de documentatie

Wat elk CI-systeem kan controleren

In GitHub Actions, GitLab CI en Bitbucket Pipelines vindt de agent het token van de CI-provider zelf. Elk ander CI-systeem werkt met een token in zijn secrets.

CI-systemen en OIDC-bindingen
CI-systeemDe OIDC-binding controleertWrapper
GitHub ActionsRepository, ref, deployment-omgevingAction setup-crunu, gekopieerd naar je repository
GitLab CIProjectpad, ref, reftype, deployment-omgevingTemplates .crunu en .crunu-oidc
Bitbucket PipelinesRepository, branch, deployment-omgevingEen pipe voor crunu run, de image bouw je zelf
Elke OIDC-providerElke issuer, sleutels via OIDC DiscoveryToken en crunu run
Elke CI zonder OIDCAlleen het tokenToken en crunu run

Lees de documentatie

Houd production buiten de pipeline

In de aanbevolen opzet gaan secrets van production nooit door CI. De agent draait op de productiemachine en de pipeline herstart alleen de service.

  • De machine haalt zijn omgeving zelf opDe productieserver is ingeschreven als machine en krijgt zijn omgeving rechtstreeks.
  • CI herstart alleenDe deploystap herstart de service; crunu run --restart on-change herstart hem ook als waarden veranderen.
  • Als CI toch bij production moetGebruik een apart token voor production met een OIDC-binding, goedgekeurd door een Owner, waarbij elke levering in de auditlog staat.

Machines

Wat je moet weten voordat je het koppelt

Tokens houden production buiten bereik. Een deel van de CI-koppeling is nog een recept, geen knop.

  • Wrappers staan niet in marketplacesKopieer de GitHub Action naar je repository, en bouw en publiceer de image van de Bitbucket-pipe zelf.
  • Geen ingebouwde synchronisatie met platformsGeen enkele integratie zet waarden in Vercel, Cloudflare, AWS Secrets Manager of GitHub Secrets. De gedocumenteerde aanpak is een recept met crunu run.
  • De stap leest wat hij krijgtAlles wat in de job draait, ziet de variabelen die het krijgt. Ken zo weinig mogelijk omgevingen toe.
  • Bind tokens voor productionEen token zonder OIDC-binding werkt vanaf elk toegestaan adres, tot het wordt ingetrokken, de lease afloopt of de gebruikslimiet is bereikt.

Alle bekende beperkingen

Veelgestelde vragen

Iets anders? Mail naar support@crunu.com

Kan een uitgelekt token production lezen?

Alleen als je het token toegang tot production hebt gegeven. Een token voor development krijgt nooit de sleutel van production. Met een OIDC-binding werkt een uitgelekt token helemaal niet zonder het token van je CI-provider voor de juiste repository en branch.

Heb ik OIDC nodig?

Nee. Elk CI-systeem kan een servicetoken gebruiken dat in zijn eigen secrets staat. OIDC voegt een tweede controle toe die het token aan je repository en branch bindt.

Waar wordt het token bewaard?

In de geheime variabelen van je CI. De server bewaart alleen de publieke sleutels van het token. Daarom wordt het één keer getoond en kan het niet worden hersteld.

Kan ik een token beperken tot een paar keer gebruik?

Ja. Stel een gebruikslimiet in van 1 tot 1.000.000 keer, plus een lease en toegestane netwerken.

Kan Crunu variabelen in Vercel of Cloudflare zetten?

Niet met een ingebouwde synchronisatie. Je kunt het doen vanuit een pipelinestap met crunu run en de eigen opdracht van het platform, met een token met OIDC-binding.

Haal de secrets van production uit je pipeline

Maak een token aan voor één staging-omgeving en draai je tests met crunu run.

Gratis tijdens de vroege toegang. Lees het beveiligingsmodel