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
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.
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 doorgegeven
crunu rungeeft de exitcode van het uitgevoerde programma terug, dus een mislukte test laat de stap nog steeds mislukken.
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-systeem | De OIDC-binding controleert | Wrapper |
|---|---|---|
| GitHub Actions | Repository, ref, deployment-omgeving | Action setup-crunu, gekopieerd naar je repository |
| GitLab CI | Projectpad, ref, reftype, deployment-omgeving | Templates .crunu en .crunu-oidc |
| Bitbucket Pipelines | Repository, branch, deployment-omgeving | Een pipe voor crunu run, de image bouw je zelf |
| Elke OIDC-provider | Elke issuer, sleutels via OIDC Discovery | Token en crunu run |
| Elke CI zonder OIDC | Alleen het token | Token en crunu run |
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-changeherstart 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.
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.
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.