Volledige openheid — geen marketing-praat
Security & GDPR — hoe Koldwerk omgaat met je data.
We werken voor installatiebedrijven die per definitie met audit-trails werken. We weten dat onze klanten weten hoe een audit eruitziet. Daarom beschrijven we hier in detail wat we doen — met zaken die we nog niet doen ook eerlijk genoemd.
AES-256-GCM
Encryptie van PII at-rest
TLS 1.3
Encryptie in-transit
Administratie in de EU
Hulpdiensten buiten de EER staan met naam en grondslag in de lijst
Audit-log
Hash-chain per tenant, zelf te verifiëren
1. Architectuur
Multi-tenant isolatie
Iedere werkruimte (tenant) heeft een eigen tenantId. Alle queries naar tenant-data lopen door een tenantClient(tenantId)-wrapper die de tenant-scope op rij-niveau afdwingt. Cross-tenant data-toegang is structureel onmogelijk — niet door code-review, maar door query-design. Er is geen "admin override"-knop die deze isolatie omzeilt.
Encryptie at-rest
Persoonsgegevens worden geëncrypteerd vóór ze de database raken via AES-256-GCM met server-side key (PII_KEY env-var). De encrypted ciphertext + authentication-tag + IV worden opgeslagen, niet de plain-text. Bij key-rotation worden bestaande records re-encrypted via een batch-job.
Encryptie in-transit
TLS 1.3 enforced via HSTS-header (max-age=63072000; includeSubDomains; preload). Alle subdomeinen redirect 301 naar HTTPS. Mixed-content geblokkeerd door Content-Security-Policy.
Wachtwoord-hashing
Argon2id met memory-cost 64MB en time-cost 3 iteraties (OWASP-aanbeveling 2024). Géén MD5/SHA-1/bcrypt-only legacy. Per-user random salt. Bij een datalek zijn de hashes praktisch onbrute-forceable.
Audit-trail
Iedere kritieke handeling (werkbon-aftekening, koudemiddel-mutatie, user-rolwijziging, lekcontrole, etc.) wordt geschreven naar een AuditLog-tabel met:
- Actor: user-id, HMAC-gehasht IP, user-agent
- Action: type + entity-id + before/after JSON
- Hash-chain: elke rij bevat een HMAC-SHA256 over zijn identiteitsvelden (tenant, volgnummer, actor, actie, entiteit, tijdstip) en de hash van de vorige rij — een serverside secret is nodig om de keten te vervalsen, niet alleen schrijftoegang tot de database.
- In de praktijk append-only: de applicatielaag biedt geen UPDATE/DELETE-functie voor audit-regels aan gebruikers. Twee gedocumenteerde interne uitzonderingen: PII wordt uit historische regels geschoond bij een AVG-anonimisering (de regel blijft staan, de persoonsgegevens niet), en een mislukte cron-claim wordt ingetrokken via een status-veld (revokedAt) in plaats van verwijderd — een harde delete zou de keten breken.
OWNER kan de keten zelf laten herberekenen en verifiëren via een knop in de app, onder Instellingen → Audit-log — precies de controle die een Kiwa-auditor nodig heeft. Twee eerlijke grenzen: de keten bewijst dat een event heeft plaatsgevonden, niet dat een before/after-payload nooit is gewijzigd (die kán legitiem geschoond worden, zie hierboven), en hij geldt vanaf de dag dat dit gebouwd is — historische rijen van daarvoor zijn niet met terugwerkende kracht te verifiëren.
2. Operationele security
Back-ups
Dagelijkse versleutelde back-ups via de managed Postgres-provider (point-in-time-recovery binnen 7 dagen). Wekelijkse snapshot extern opgeslagen. RPO (Recovery Point Objective): max. 24 uur. RTO (Recovery Time Objective): 4 uur voor catastrofale infrastructuur-uitval.
Incident-response
Sentry monitort runtime-errors; de regio en grondslag staan in de sub-processors-lijst hieronder. Bij security-incidenten:
- Detectie + initial-triage binnen 1 uur tijdens kantooruren.
- Verwerkingsverantwoordelijke (tenant-owner) informeren binnen 24 uur.
- AP (Autoriteit Persoonsgegevens) melding binnen 72 uur indien meldingsplichtig.
- Post-mortem schriftelijk binnen 7 werkdagen.
Rate-limiting + brute-force-bescherming
Login: 5 pogingen / 15 min per IP+email-combinatie. Wachtwoord-reset: 3 / uur. Magic-link: 3 / 15 min. Diensten-aanvragen: 5 / uur. Contact-form: 3 / uur. Bot-detectie via honeypot-velden + User-Agent-fingerprinting.
Security headers
Strict-Transport-Security, Content-Security-Policy (met nonce per response), X-Content-Type-Options, Referrer-Policy: strict-origin-when-cross-origin, Permissions-Policy beperkt tot strikt minimum. Cross-Origin-Opener-Policy en Cross-Origin-Embedder-Policy actief.
security.txt
Responsible-disclosure via /.well-known/security.txt. Reactie binnen 48 uur. Géén bug-bounty-budget op dit moment — wel erkenning + hall-of-fame na publicatie.
3. AVG-compliance
Rolverdeling
Verwerker: Koldwerk. Verwerkingsverantwoordelijke: jouw bedrijf. Volledige verwerkersovereenkomst onder /verwerkersovereenkomst — conform AVG art. 28, sub-processors expliciet benoemd.
Data-locatie
Niet elke sub-processor is EU-gebonden — zie de regio-kolom in /verwerkersovereenkomst sectie 12. Voor in de VS gevestigde providers geldt een waarborg conform AVG hoofdstuk V (Data Privacy Framework of Standard Contractual Clauses), nooit doorgifte zonder zo'n waarborg. Wijzigt een sub-processor van regio, dan krijgt elke verwerkingsverantwoordelijke 30 dagen vooraf bericht.
Betrokkenenrechten
Inzage, correctie, verwijdering, dataportabiliteit — alles binnen 30 dagen. OWNER kan via /instellingen in de app zelf user-data en klant-data verwijderen of corrigeren. Voor formele verzoeken: privacy@koldwerk.nl.
Bewaartermijnen
- Actieve werkruimte-data: zolang abonnement loopt.
- Na opzegging: 30 dagen grace-period voor export, daarna anonimisering.
- Audit-records (zonder identificeerbare PII): 7 jaar conform BRL-100 / Wet milieubeheer.
4. Sub-processors
Volledige actuele lijst met doel + regio + DPA-status onder /verwerkersovereenkomst sectie 12. Wijzigingen worden 30 dagen vooraf gemeld; verwerkings- verantwoordelijke kan bezwaar maken.
Je administratie — werkbonnen, klantgegevens, foto's en bijlagen — staat in de EU. Een beperkt aantal hulpdiensten draait bij leveranciers buiten de EER, onder het EU-VS Data Privacy Framework of standaardcontractbepalingen; ze staan hieronder met naam, doel en voorwaarde. De meeste daarvan zijn optioneel en standaard uit.
| Leverancier | Doel | Regio | Grondslag |
|---|---|---|---|
| Vercel | Hosting, edge-runtime en CDN | Uitvoering in Frankfurt (fra1); Vercel Inc. is een Amerikaanse onderneming (volgens de overeenkomst) | VS, onder het EU-VS Data Privacy Framework |
| Managed Postgres-provider | Database en back-ups | EU-regio (actuele provider opvraagbaar via privacy@koldwerk.nl) (volgens de overeenkomst) | Verwerking binnen de EER |
| Cloudflare R2 | Bestandsopslag (werkbonfoto's, bijlagen, documenten) | EU (Frankfurt) (volgens de overeenkomst) | Verwerking binnen de EER |
| Cloudflare Turnstile | Botbescherming bij aanmelden en formulieren | Cloudflare Inc. (VS), verwerking via het wereldwijde netwerk (volgens de overeenkomst) | Derde land, onder standaardcontractbepalingen (SCC's) |
| Resend | Transactionele e-mail (inloglink, werkbon-PDF naar klant, herinneringen) | Verenigde Staten (volgens de overeenkomst) | Derde land, onder standaardcontractbepalingen (SCC's) |
| Sentry | Foutmonitoring (persoonsgegevens worden vóór verzending gefilterd) | Verenigde Staten (te bevestigen in het Sentry-project; eerdere teksten spraken elkaar tegen) (volgens de overeenkomst) | Derde land, onder standaardcontractbepalingen (SCC's) |
| Plausible Analytics | Bezoekersstatistieken zonder cookies en zonder persoonsgegevens | EU (volgens de overeenkomst) | Verwerking binnen de EER |
| PostHog | Productanalyse (welke schermen worden gebruikt)Alleen na toestemming voor analytische cookies | EU-instantie (eu.i.posthog.com is de standaardhost in de code) (volgens de overeenkomst) | Verwerking binnen de EER |
| Mollie | Betalingsverwerking (iDEAL, SEPA)Alleen bij online betalen; zie het productstatusregister — dit pad is nu niet in gebruik | Amsterdam (NL) — EU (volgens de overeenkomst) | Verwerking binnen de EER |
| MessageBird | Sms aan de eindklant (bericht dat de monteur onderweg is)Alleen als de werkruimte sms-berichten gebruikt | Amsterdam (NL) — EU (volgens de overeenkomst) | Verwerking binnen de EER |
| Deepgram | Spraak-naar-tekst voor de spraakwerkbonAlleen als de spraakwerkbon voor de werkruimte is ingeschakeld; standaard uit | Verenigde Staten (volgens de overeenkomst) | Derde land, onder standaardcontractbepalingen (SCC's) |
| Anthropic | AI-verwerking van werkbontekst, certificaatuitlezing en AI-hulpAlleen als AI-hulp, de spraakwerkbon, de certificaatuitlezing of de AI Business OS (met Anthropic als gekozen aanbieder) voor de werkruimte is ingeschakeld; standaard uit | Verenigde Staten (volgens de overeenkomst) | Derde land, onder standaardcontractbepalingen (SCC's) |
| OpenAI | AI-medewerkers van de AI Business OS (alleen als de werkruimte OpenAI als aanbieder kiest)Alleen als de eigenaar de AI Business OS inschakelt, OpenAI kiest en toestemming geeft; standaard uit. Verzoeken met store:false | Verenigde Staten (volgens de overeenkomst) | Derde land, onder standaardcontractbepalingen (SCC's) |
| Google (Maps, Agenda, inloggen) | Kaartweergave bij ritplanning, agenda-koppeling en inloggen met GoogleKaart bij gebruik van de planning; agenda en inloggen alleen als de werkruimte die koppelt | Verenigde Staten (volgens de overeenkomst) | VS, onder het EU-VS Data Privacy Framework |
| Microsoft | Inloggen met een Microsoft-account (Entra ID, single sign-on)Alleen als de werkruimte single sign-on gebruikt | Verenigde Staten (volgens de overeenkomst) | VS, onder het EU-VS Data Privacy Framework |
| VirusTotal | Scannen van geüploade bestanden op schadelijke inhoudAlleen de bestandskenmerken van uploads; niet de inhoud van je administratie | Verenigde Staten (volgens de overeenkomst) | Derde land, onder standaardcontractbepalingen (SCC's) |
| KVK (Kamer van Koophandel) | Bedrijfsgegevens ophalen bij het invoeren van een klantAlleen bij gebruik van de zoekfunctie op KvK-nummer | Nederland — EU | Verwerking binnen de EER |
| PDOK (Kadaster) | Adresvalidatie en locatiegegevensAlleen bij het invullen van een adres | Nederland — EU | Verwerking binnen de EER |
| Boekhoudkoppelingen (Moneybird, SnelStart, Exact Online, Twinfield, Debitan) | Doorsturen van een afgetekende werkbon als conceptfactuurAlleen als de werkruimte een boekhoudpakket koppelt; zie het productstatusregister voor de status per pakket | Per pakket verschillend; de meeste in de EU (volgens de overeenkomst) | Verwerking binnen de EER |
5. Roadmap — wat we nog niet doen
Koldwerk is een nieuw product. Sommige zaken die enterprise-buyers verwachten, doen we nog niet. We benoemen ze hier expliciet zodat je geen verrassingen krijgt na een offerte.
SOC-2 Type II
Nog niet behaald. Planning: extern audit-traject na de eerste 10 betalende klanten (Q4 2026 / Q1 2027). Wel: alle onderliggende controls (audit-log, encryption, MFA, incident- response) staan al — alleen het externe audit-papier ontbreekt.
ISO 27001
Nog niet behaald. Roadmap loopt parallel aan SOC-2. Voor enterprise-prospects die ISO 27001 nu al vereisen: onze sub-processors (Vercel, Postgres-provider) zijn beide ISO 27001 — we kunnen die certificaten meeleveren.
Externe pentest
Nog niet uitgevoerd. Plan: na eerste 5 klanten (Q3 2026) een externe pentest door een NL-geregistreerd security-bureau. Wel: continue dependency-scan via Dependabot, CSP-monitoring, en interne security-reviews.
Bug-bounty
Geen betaald bug-bounty-programma op dit moment. Wel: responsible-disclosure via /.well-known/security.txt met reactie binnen 48 uur.
Live uptime + incidenten
Onze statuspagina toont real-time componenten-status en incident-historie aan klanten na inloggen. Voor enterprise-klanten beschikbaar: dedicated status-feed + SLA-rapportages per maand.
Specifieke security-vragen of een IT-questionnaire die je wilt laten invullen?
Mail privacy@koldwerk.nl