Onder Instellingen → DevOps koppel je je CI/CD-providers aan FixControl. Eenmaal gekoppeld ontvangt FixControl de deploy- en pipeline-events van die host, controleert de handtekening, beoordeelt elk event op risico via de policy-engine en schrijft een onveranderlijk logboek weg.
Standaard observeren-en-governen. Voor de meeste providers beoordeelt en logt FixControl je deployments — het triggert of rolt niets uit op eigen houtje. Het enige uitvoeringspad vandaag is Argo Rollouts-promotie, en dat draait pas nadat een mens een deployment-poort goedkeurt, waar Argo daarvoor is geconfigureerd. Er is geen autonome deploy: niets wordt gepromoot zonder een vastgelegde menselijke beslissing, en de promotie zelf wordt geaudit.
Dit is een beheerderssurface (rol Beheerder, plus platformbeheerders) en werkt per tenant.
Hoe een koppeling werkt
Een koppeling is de binding tussen één CI/CD-host en jouw tenant. Elke koppeling heeft een soort die bepaalt hoe hij inlogt en hoe zijn webhooks geverifieerd worden:
| Soort | Voorbeeld | Hoe je koppelt |
|---|---|---|
| GitHub App | GitHub Actions | Installeer de FixControl GitHub App — verifieert via een App-niveau geheim, geen per-tenant geheim te kopiëren. |
| OAuth-app | GitLab CI | Koppel via OAuth (hergebruikt je bestaande GitLab-koppeling) + project-ID. |
| Handmatig | Jenkins, Azure DevOps, Argo CD, Vercel, Terraform Cloud, Kubernetes | FixControl maakt een webhook-geheim aan dat één keer wordt getoond; dat zet je op de webhook van de host. |
Alle acht providers zijn beschikbaar voor observeren-en-governen. Elke koppeling toont z'n live status:
niet gekoppeld → koppelen → gekoppeld → verminderd → ongeldige inloggegevens → ingetrokken
- Verminderd — gekoppeld, maar het laatste event gaf een (tijdelijke) fout.
- Ongeldige inloggegevens — een permanente auth-fout (token ingetrokken / app verwijderd).
- Ingetrokken — je hebt zelf ontkoppeld; webhooks worden geweigerd en opgeslagen inloggegevens gewist.
De providers
| Provider | Soort | Webhook-verificatie | Koppelen |
|---|---|---|---|
| GitHub Actions | GitHub App | HMAC-SHA256, App-niveau geheim | Installeer de GitHub App |
| GitLab CI | OAuth | Gedeeld token (X-Gitlab-Token) | Koppel GitLab (OAuth) + project-ID |
| Jenkins | Handmatig (legacy) | HMAC-SHA256 (X-FixControl-Signature) | Handmatig + Notification-webhook |
| Azure DevOps | Handmatig | HTTP Basic-auth (wachtwoord = geheim) | Handmatig + Service Hook |
| Argo CD | Handmatig | Bearer-token (Authorization: Bearer) | Handmatig + notifications-webhook |
| Vercel | Handmatig | HMAC-SHA1 (x-vercel-signature) | Handmatig + Vercel-webhook |
| Terraform Cloud | Handmatig | HMAC-SHA512 (X-TFE-Notification-Signature) | Handmatig + Run notification |
| Kubernetes | Handmatig | HMAC-SHA256 + X-FixControl-Account (cluster-ID) | Handmatig + rollout-forwarder |
Een provider koppelen
De grote lijn is voor elke provider hetzelfde:
- Open Instellingen → DevOps en kies de provider.
- GitHub: klik GitHub App installeren. GitLab: klik GitLab koppelen en vul het numerieke project-ID in. Handmatig: vul de instance-/job-identifier in (en optioneel een API-token).
- Bij een handmatige (of GitLab-) koppeling toont FixControl een webhook-geheim — kopieer het meteen, het wordt maar één keer getoond.
- Plak de webhook-URL (die de kaart toont) in de webhook-instellingen van de host, en zet het geheim in het juiste veld/de juiste header (de kaart geeft per provider de exacte hint).
- Draai een echte pipeline of deploy. De koppeling toont recente gegoverneerde runs zodra de eerste binnenkomt.
De webhook-URL verschijnt pas als er een publieke origin is geconfigureerd op de server (PUBLIC_ORIGIN of een gelijkwaardige variabele). Zonder publieke URL kan een host FixControl niet bereiken.Voorbeeld: GitLab CI
- In FixControl → Instellingen → DevOps → GitLab koppelen, voer het project-ID in. Kopieer het getoonde geheim.
- In het GitLab-project → Settings → Webhooks: voeg de webhook-URL toe, plak het geheim als Secret token, en zet Pipeline events + Deployment events aan.
Voorbeeld: Jenkins (legacy)
Jenkins heeft geen standaard voor ondertekende webhooks. FixControl verifieert daarom een HMAC die je zelf op een Notification-webhook instelt. Gebruik bij voorkeur GitHub of GitLab. Wil je toch Jenkins: vul de Jenkins-form in, kopieer het geheim, en laat Jenkins de build-JSON POSTen met de header X-FixControl-Signature: sha256=<HMAC van de body>.
De exacte stappen per provider (Azure DevOps, Argo CD, Vercel, Terraform Cloud, Kubernetes) volgen hetzelfde patroon: koppel handmatig, kopieer het eenmalige geheim, en wire de webhook van de host naar de getoonde URL met de header uit de kaart-hint. De diepere technische gids (env-variabelen, scopes, lokaal testen met een tunnel) staat in de interne docs-portal onder devops-integrations.
Wat zie je na het koppelen?
- Op de koppelingskaart: het gekoppelde account, de scopes, de webhook-gezondheid (laatste event, aantal, laatste fout) en de knoppen Geheim roteren en Ontkoppelen.
- Onder Operaties (AI-operaties-governance): de gegoverneerde CI/CD-activiteit, de risicoverdeling, de infrastructuur-risicokaart en de goedkeuringswachtrij. Elk event krijgt een uitkomst: Automatisch, Alleen concept, Goedkeuring vereist of Geblokkeerd — volgens je beleid.
Beveiliging
- Versleuteld opgeslagen — tokens en webhook-geheimen liggen versleuteld op (per-tenant sleutel-envelop). De API geeft alleen booleans terug (heeft geheim ja/nee); een vers geheim wordt exact één keer getoond.
- Handtekening eerst — de webhook-route weigert elke payload die niet verifieert (
401), en logt die als afgewezen event. - Tenant-isolatie — alle tabellen zijn fail-closed RLS; binnenkomende webhooks resolven de tenant veilig vóór er iets geschreven wordt.
- Alleen beheerders — koppelen, ontkoppelen en geheim roteren vereisen
settings.edit. - Volledige audit trail — koppelen, ontkoppelen, geheim roteren, elk geaccepteerd én elk geweigerd event zijn hash-geketend vastgelegd.
- Geen autonome uitvoering — ingestie triggert nooit een uitgaande actie. Het enige uitvoeringspad, Argo Rollouts-promotie, draait uitsluitend nadat een mens een deployment-poort goedkeurt (waar geconfigureerd) en wordt zelf hash-chained in de audittrail vastgelegd.
Roadmap
Door een mens goedgekeurde Argo Rollouts-promotie is vandaag live — een goedgekeurde deployment-poort promoot een gepauzeerde rollout waar Argo is geconfigureerd (directe API of git-promote). Het uitbreiden van goedkeuring-gepoorte uitvoering, en abort/rollback, naar meer CI/CD-providers staat op de roadmap. Zie Governance & beleid voor hoe events op risico beoordeeld worden.
Zie ook: Integraties — overzicht · Governance & beleid · Security & audit.