Naar inhoud

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.

LeverancierDoelRegioGrondslag
VercelHosting, edge-runtime en CDNUitvoering in Frankfurt (fra1); Vercel Inc. is een Amerikaanse onderneming (volgens de overeenkomst)VS, onder het EU-VS Data Privacy Framework
Managed Postgres-providerDatabase en back-upsEU-regio (actuele provider opvraagbaar via privacy@koldwerk.nl) (volgens de overeenkomst)Verwerking binnen de EER
Cloudflare R2Bestandsopslag (werkbonfoto's, bijlagen, documenten)EU (Frankfurt) (volgens de overeenkomst)Verwerking binnen de EER
Cloudflare TurnstileBotbescherming bij aanmelden en formulierenCloudflare Inc. (VS), verwerking via het wereldwijde netwerk (volgens de overeenkomst)Derde land, onder standaardcontractbepalingen (SCC's)
ResendTransactionele e-mail (inloglink, werkbon-PDF naar klant, herinneringen)Verenigde Staten (volgens de overeenkomst)Derde land, onder standaardcontractbepalingen (SCC's)
SentryFoutmonitoring (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 AnalyticsBezoekersstatistieken zonder cookies en zonder persoonsgegevensEU (volgens de overeenkomst)Verwerking binnen de EER
PostHogProductanalyse (welke schermen worden gebruikt)Alleen na toestemming voor analytische cookiesEU-instantie (eu.i.posthog.com is de standaardhost in de code) (volgens de overeenkomst)Verwerking binnen de EER
MollieBetalingsverwerking (iDEAL, SEPA)Alleen bij online betalen; zie het productstatusregister — dit pad is nu niet in gebruikAmsterdam (NL) — EU (volgens de overeenkomst)Verwerking binnen de EER
MessageBirdSms aan de eindklant (bericht dat de monteur onderweg is)Alleen als de werkruimte sms-berichten gebruiktAmsterdam (NL) — EU (volgens de overeenkomst)Verwerking binnen de EER
DeepgramSpraak-naar-tekst voor de spraakwerkbonAlleen als de spraakwerkbon voor de werkruimte is ingeschakeld; standaard uitVerenigde Staten (volgens de overeenkomst)Derde land, onder standaardcontractbepalingen (SCC's)
AnthropicAI-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 uitVerenigde Staten (volgens de overeenkomst)Derde land, onder standaardcontractbepalingen (SCC's)
OpenAIAI-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:falseVerenigde 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 koppeltVerenigde Staten (volgens de overeenkomst)VS, onder het EU-VS Data Privacy Framework
MicrosoftInloggen met een Microsoft-account (Entra ID, single sign-on)Alleen als de werkruimte single sign-on gebruiktVerenigde Staten (volgens de overeenkomst)VS, onder het EU-VS Data Privacy Framework
VirusTotalScannen van geüploade bestanden op schadelijke inhoudAlleen de bestandskenmerken van uploads; niet de inhoud van je administratieVerenigde 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-nummerNederland — EUVerwerking binnen de EER
PDOK (Kadaster)Adresvalidatie en locatiegegevensAlleen bij het invullen van een adresNederland — EUVerwerking 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 pakketPer 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