Verwerkersovereenkomst
Concept — geen juridisch advies; laat dit nakijken voordat je betalende klanten aanneemt
Versie: concept 0.1. Datum: [datum].
Deze overeenkomst is van toepassing op de verwerking van persoonsgegevens door Pandboek in opdracht van de klant, en vult de algemene voorwaarden aan.
Partijen
- De klant, de verhuurder die een workspace in Pandboek gebruikt, hierna: "Verwerkingsverantwoordelijke".
- [naam], handelend onder de naam Pandboek, KvK-nummer [KvK-nummer], [adres], [e-mail], hierna: "Verwerker".
[Open vraag: sluit de klant deze overeenkomst door akkoord bij het aanmelden (clickwrap), of via een getekend exemplaar? Voor de bèta is akkoord bij aanmelding gebruikelijk; leg vast welke versie is geaccepteerd.]
1. Onderwerp en definities
1.1 Verwerker verwerkt persoonsgegevens voor Verwerkingsverantwoordelijke voor het leveren van de Pandboek-dienst: een webapplicatie voor het beheren van panden, huurders, huurovereenkomsten, huurbetalingen, documenten en onderhoud.
1.2 Begrippen als "persoonsgegevens", "verwerking", "betrokkene" en "datalek" hebben de betekenis uit de Algemene verordening gegevensbescherming (AVG).
1.3 Op deze overeenkomst is art. 28 AVG van toepassing. De bijlagen maken er deel van uit.
2. Duur
Deze overeenkomst gaat in op het moment dat de klant een workspace aanmaakt of de overeenkomst accepteert, en duurt zolang Verwerker persoonsgegevens voor de klant verwerkt. Artikel 10 (verwijdering of teruggave) en de geheimhouding blijven na afloop gelden.
3. Aard, doel en soort gegevens
3.1 Aard van de verwerking: opslaan, ordenen, tonen, versleutelen, importeren (bankbestanden in CSV-formaat), koppelen, exporteren en verwijderen van gegevens, in opdracht van de klant en zijn gebruikers.
3.2 Doel: het mogelijk maken van de verhuuradministratie van de klant (panden, huur, betalingen, onderhoud, documenten).
3.3 Categorieën betrokkenen: huurders en hun contactpersonen of medehuurders; leveranciers en andere tegenpartijen op bankafschriften; gebruikers die de klant toevoegt aan zijn workspace (eigenaren, beheerders, kijkers).
3.4 Categorieën persoonsgegevens: namen, e-mailadressen en telefoonnummers; IBAN's en rekeninghouder; bankmutaties (tegenpartij, omschrijving, bedrag, datum); huurovereenkomsten en huurgegevens; documenten zoals contracten en facturen; notities; bij gebruikers: e-mailadres, naam en rol.
3.5 Bijzondere en gevoelige gegevens: de klant legt in Pandboek in beginsel geen bijzondere categorieën persoonsgegevens vast (art. 9 AVG), geen strafrechtelijke gegevens en geen kopieën van identiteitsbewijzen of BSN's, tenzij de wet dit toestaat (zie de algemene voorwaarden). Omschrijvingen op bankafschriften en vrije notities kunnen onbedoeld meer bevatten; de klant is daar zelf verantwoordelijk voor.
4. Verwerking alleen op instructie
4.1 Verwerker verwerkt persoonsgegevens uitsluitend op basis van gedocumenteerde instructies van Verwerkingsverantwoordelijke, ook voor doorgifte naar een derde land, tenzij een Unierechtelijke of lidstaatrechtelijke verplichting anders eist. In dat geval meldt Verwerker dat vooraf, tenzij de wet dit verbiedt.
4.2 Deze overeenkomst, de algemene voorwaarden en het gebruik van de functies van Pandboek door de klant vormen de instructies. Aanvullende instructies zijn alleen geldig als ze schriftelijk (ook per e-mail) zijn gegeven en redelijkerwijs kunnen worden uitgevoerd.
4.3 Verwerker verwerkt de gegevens niet voor eigen doelen, gebruikt ze niet om te adverteren of te profileren en gebruikt ze niet om modellen te trainen. Verwerker meldt het als een instructie naar zijn oordeel in strijd is met de AVG.
4.4 Verwerkingsverantwoordelijke is verantwoordelijk voor de rechtmatigheid van de verwerking, voor het hebben van een grondslag, en voor het informeren van betrokkenen (bijvoorbeeld zijn huurders).
5. Geheimhouding
5.1 Verwerker houdt de persoonsgegevens geheim en verplicht iedereen die onder zijn gezag toegang kan krijgen tot geheimhouding.
5.2 Verwerker kijkt niet naar klantgegevens, behalve voor zover dat strikt nodig is voor het oplossen van een storing of op verzoek van de klant. Toegang van Verwerker met bevoorrechte rechten wordt vastgelegd in een auditlog (zie bijlage 2).
6. Beveiliging (art. 32 AVG)
6.1 Verwerker neemt passende technische en organisatorische maatregelen, rekening houdend met de stand van de techniek, de kosten, de aard van de gegevens en de risico's. De maatregelen staan in bijlage 2.
6.2 Verwerker mag de maatregelen aanpassen, mits het beveiligingsniveau niet daalt. Belangrijke wijzigingen worden bijgewerkt in bijlage 2.
6.3 Verwerkingsverantwoordelijke is zelf verantwoordelijk voor het beheer van zijn gebruikers: wie hij uitnodigt, welke rol die krijgt, het veilig bewaren van inlogmiddelen en herstelcodes, en het intrekken van toegang als iemand vertrekt.
7. Subverwerkers
7.1 Verwerkingsverantwoordelijke geeft Verwerker algemene toestemming om subverwerkers in te schakelen. De huidige subverwerkers staan in bijlage 1.
7.2 Verwerker informeert Verwerkingsverantwoordelijke ten minste 30 dagen vooraf over de toevoeging of vervanging van een subverwerker, via e-mail naar de eigenaren van de workspace en door bijwerking van bijlage 1. Verwerkingsverantwoordelijke kan binnen die 30 dagen schriftelijk en met redenen bezwaar maken.
7.3 Bij bezwaar overleggen partijen in goed vertrouwen over een oplossing. Komt er geen oplossing, dan mag Verwerkingsverantwoordelijke de dienst beëindigen met ingang van het moment waarop de wijziging in werking zou treden, zonder kosten, met teruggave van vooruitbetaalde bedragen voor de resterende periode.
7.4 Verwerker legt aan elke subverwerker dezelfde of gelijkwaardige gegevensbeschermingsverplichtingen op als in deze overeenkomst en blijft jegens Verwerkingsverantwoordelijke aansprakelijk voor de naleving daarvan door de subverwerker, binnen de grenzen van artikel 13.
7.5 Doorgifte naar een land buiten de EER gebeurt alleen met een passende waarborg, zoals het EU-VS Data Privacy Framework of standaardcontractbepalingen (bijlage 1).
8. Bijstand bij rechten van betrokkenen en DPIA's
8.1 Verwerker helpt Verwerkingsverantwoordelijke, rekening houdend met de aard van de verwerking, bij het beantwoorden van verzoeken van betrokkenen (inzage, rectificatie, verwijdering, beperking, overdraagbaarheid, bezwaar). Veel verzoeken kan de klant zelf uitvoeren met de functies in Pandboek, zoals zoeken, wijzigen, verwijderen en exporteren.
8.2 Ontvangt Verwerker rechtstreeks een verzoek van een betrokkene over gegevens van de klant, dan beantwoordt hij dat niet inhoudelijk maar verwijst de betrokkene door naar Verwerkingsverantwoordelijke en stuurt het verzoek zo snel mogelijk door.
8.3 Verwerker helpt Verwerkingsverantwoordelijke, voor zover redelijk, bij de verplichtingen uit art. 32 tot en met 36 AVG, waaronder gegevensbeschermingseffectbeoordelingen (DPIA) en voorafgaande raadpleging, door de benodigde informatie over de verwerking en de beveiliging te geven.
8.4 Redelijke kosten voor bijstand die aanzienlijk meer is dan eenvoudige informatieverstrekking mogen worden doorberekend, na voorafgaande melding. [Bepaal of je dit wilt opnemen.]
9. Datalekken
9.1 Verwerker informeert Verwerkingsverantwoordelijke zonder onredelijke vertraging nadat hij een inbreuk op de beveiliging heeft ontdekt die leidt tot de vernietiging, het verlies, de wijziging of de ongeoorloofde verstrekking van of toegang tot persoonsgegevens van de klant. Als intern streven hanteert Verwerker 24 uur na ontdekking. Dit streven is geen garantie of juridisch afdwingbare termijn.
9.2 De melding gaat per e-mail naar de eigenaren van de workspace en bevat, voor zover bekend: de aard van de inbreuk, de betrokken categorieën en geschatte aantallen, de waarschijnlijke gevolgen, de genomen en voorgestelde maatregelen en een contactpersoon. Ontbrekende informatie wordt zo snel mogelijk aangevuld.
9.3 Verwerkingsverantwoordelijke beoordeelt of melding aan de Autoriteit Persoonsgegevens (binnen 72 uur na kennisname) en aan betrokkenen nodig is, en doet die melding. Verwerker helpt daarbij.
9.4 Verwerker documenteert alle inbreuken en de genomen maatregelen.
10. Verwijdering of teruggave
10.1 Na afloop van de dienst, of eerder op verzoek, kan Verwerkingsverantwoordelijke zijn gegevens exporteren (CSV/JSON en de geüploade bestanden). De exportfunctie is gepland en nog in ontwikkeling; tot die tijd levert Verwerker op verzoek een export. De export is beschikbaar zolang de workspace bestaat. Omdat er geen back-ups zijn, is het aan Verwerkingsverantwoordelijke om regelmatig te exporteren.
10.2 Wordt een workspace verwijderd, dan geldt een bedenktijd van 7 dagen waarin de workspace alleen te lezen en te exporteren is en hersteld kan worden. Daarna worden de gegevens en bestanden definitief verwijderd, inclusief de workspace-sleutel waarmee gevoelige velden zijn versleuteld.
10.3 Pandboek maakt geen eigen back-ups van klantgegevens en de hostingpartij biedt op dit moment geen back-ups. Na verwijdering blijven er dus, voor zover Pandboek kan nagaan, geen kopieën van de gegevens achter, behalve in de systemen van subverwerkers gedurende hun eigen, korte bewaartermijnen voor logs. [Controleer dit bij ingebruikname; als er later back-ups komen, werk dit artikel en bijlage 2 bij.]
10.4 Gegevens van het auditlog (geen inhoudelijke klantgegevens, alleen id's en actienamen) worden 13 maanden bewaard.
10.5 Verwerker bewaart gegevens langer als de wet dat verplicht en meldt dat dan.
11. Audit en informatie
11.1 Verwerker stelt alle informatie beschikbaar die nodig is om naleving van art. 28 AVG aan te tonen, en laat audits, inclusief inspecties, door Verwerkingsverantwoordelijke of een door hem gemachtigde, onafhankelijke auditor toe en werkt daaraan mee.
11.2 Een audit vindt plaats na redelijke aankondiging van ten minste 30 dagen, ten hoogste eenmaal per jaar (tenzij er een concreet incident is), tijdens kantooruren, zonder onredelijke verstoring van de bedrijfsvoering, en onder geheimhouding. Gegevens van andere klanten zijn uitgesloten. Verwerker mag eerst volstaan met een schriftelijke toelichting, de maatregelen in bijlage 2 en beschikbare rapporten van subverwerkers.
11.3 De kosten van een audit komen voor rekening van Verwerkingsverantwoordelijke, tenzij de audit ernstige tekortkomingen van Verwerker aan het licht brengt.
12. Aansprakelijkheid
12.1 Voor aansprakelijkheid onder deze overeenkomst geldt de aansprakelijkheidsbeperking uit de algemene voorwaarden. [Let op: art. 82 AVG en de rechten van betrokkenen blijven onverlet; laat beoordelen of de beperking redelijk is voor schade door een datalek en welk bedrag past.]
12.2 Elke partij is aansprakelijk voor schade die voortvloeit uit zijn eigen schending van de AVG, overeenkomstig art. 82 AVG.
13. Toepasselijk recht en geschillen
Op deze overeenkomst is Nederlands recht van toepassing. Geschillen worden voorgelegd aan de bevoegde rechter in [arrondissement]. De bepalingen van de AVG gaan voor bij strijd.
14. Wijzigingen en volgorde
14.1 Verwerker kan deze overeenkomst wijzigen als de wet of de dienst dat vereist. Wijzigingen worden ten minste 30 dagen vooraf aangekondigd. Bij een wezenlijke verslechtering voor Verwerkingsverantwoordelijke kan hij kosteloos opzeggen.
14.2 Bij strijd tussen deze overeenkomst en de algemene voorwaarden gaat deze overeenkomst voor, voor zover het gaat om de verwerking van persoonsgegevens.
Bijlage 1 (subverwerkers) en bijlage 2 (technische en organisatorische maatregelen) volgen direct hieronder en maken deel uit van deze overeenkomst.
Bijlage 1: Subverwerkers
Stand: [datum]. Wijzigingen worden ten minste 30 dagen vooraf aangekondigd (artikel 7).
| Subverwerker | Doel | Locatie van de gegevens | Waarborg bij doorgifte buiten de EER | Status |
|---|---|---|---|---|
| Supabase (Supabase Inc., VS; contractspartij en dataverwerking: [controleer contracterende entiteit]) | Database, inloggen (Auth) en opslag van bestanden | EU, Frankfurt (eu-central-1) | DPF en/of SCC's via de verwerkersovereenkomst van Supabase; gevoelige velden zijn door Pandboek versleuteld vóór opslag | actief |
| Vercel Inc. | Hosting van de webapplicatie en taakplanning | Functies in regio fra1 (Frankfurt); het netwerk levert statische pagina's via een wereldwijd netwerk | DPF en/of SCC's via de verwerkersovereenkomst van Vercel | actief |
| Cloudflare, Inc. | Turnstile (CAPTCHA) bij aanmelden | Wereldwijd netwerk; verwerkt alleen technische gegevens van de aanmelding | DPF en/of SCC's | actief |
| GitHub, Inc. (Microsoft) | Alleen broncode; geen persoonsgegevens van klanten of gebruikers | n.v.t. | n.v.t. | geen persoonsgegevens |
| Resend, Inc. | Versturen van e-mail (uitnodigingen, inlogcodes, meldingen) | EU | DPF en/of SCC's | gepland |
| Google Ireland Ltd / Google LLC | Inloggen met Google (OAuth) | EU/VS | DPF en/of SCC's | gepland |
| Microsoft Ireland Operations Ltd / Microsoft Corp. | Inloggen met Microsoft (OAuth) | EU/VS | DPF en/of SCC's | gepland |
Opmerking: Google en Microsoft ontvangen bij OAuth-login het e-mailadres van de gebruiker die inlogt, in hun eigen rol; voor de bepaling van hun rol (verwerker of zelfstandig verantwoordelijke) is juridisch advies nodig.
Bijlage 2: Technische en organisatorische maatregelen
Deze maatregelen beschrijven wat Pandboek doet en wat niet. Pandboek is in bèta en wordt omgebouwd tot een dienst voor meerdere klanten. Daarom staat bij elk onderdeel een status:
- actief: werkt nu;
- in ontwikkeling: ontworpen en wordt gebouwd, maar nog niet beschikbaar voor klanten;
- gepland: nog niet gebouwd, geen toezegging over het moment.
Pandboek belooft dus alleen wat de status "actief" heeft. [Werk de statussen bij vóórdat klanten worden toegelaten en controleer elke maatregel.]
1. Scheiding tussen klanten (workspaces)
Status: in ontwikkeling.
- Elke klant heeft een eigen workspace. Elke tabel met klantgegevens heeft een
workspace_iden row-level security (RLS) in de database. Toegang loopt via lidmaatschap en rol (eigenaar, beheerder, kijker), die bij elk verzoek live uit de database wordt gelezen. - Verwijzingen tussen records zijn per workspace afgedwongen, zodat een record niet naar een andere workspace kan verwijzen.
- De scheiding wordt getest met geautomatiseerde databasetests (twee gebruikers in aparte workspaces, met een rolmatrix) en een controle in de CI die faalt als een tabel zonder policies wordt toegevoegd.
- Bestanden staan in private opslag onder het pad van de workspace, met dezelfde rolregels.
2. Versleuteling
Status: TLS en versleuteling at rest door Supabase: actief. Versleuteling van gevoelige velden in de applicatie: in ontwikkeling.
- Alle verbindingen lopen via TLS. Data in de database en opslag is versleuteld at rest door Supabase.
- Gevoelige velden (namen, e-mailadressen en telefoonnummers van huurders, IBAN's, bankmutatiegegevens zoals tegenpartij en omschrijving, notities) zijn extra versleuteld in de applicatie met AES-256-GCM en een eigen sleutel per workspace. Die sleutels worden beschermd door een hoofdsleutel die in de hostingomgeving staat en niet in de database.
- Gevolg: een gelekte database bevat voor deze velden alleen cijfertekst. Dit is geen end-to-end-versleuteling: de applicatieserver kan de velden ontsleutelen, zodat de dienst werkt.
- Niet extra versleuteld in de applicatie (in de eerste versie): bedragen, datums, adressen van panden, statussen, bestandsnamen en de inhoud van geüploade bestanden. Voor bestanden geldt versleuteling at rest door Supabase en toegangscontrole.
3. Inloggen en toegang
Status: in ontwikkeling. Inloggen met Google en Microsoft: gepland.
- Inloggen met passkey of e-mailcode (later Google en Microsoft). Tweestapsverificatie (TOTP) is verplicht voor iedereen; de database weigert gegevens zonder voltooide tweede stap.
- Gevoelige handelingen (eigenaar toewijzen, lid verwijderen, workspace of account verwijderen) vereisen een recente verificatie.
- Uitnodigingen gebruiken eenmalige tokens van beperkte duur, gebonden aan het e-mailadres; alleen een hash wordt bewaard.
- Rate limiting en een CAPTCHA (Cloudflare Turnstile) beschermen de aanmelding en herstelroutes.
4. Toegang door Pandboek (operator)
Status: in ontwikkeling.
- Er is geen beheerscherm waarmee de beheerder klantgegevens kan inzien.
- De beheerder kan technisch toegang krijgen (met toegang tot de hostingomgeving en de database kan code worden uitgerold die gegevens ontsleutelt). Dat is niet uitgesloten, maar het is bedoeld niet ongemerkt te gebeuren.
- Bevoorrechte toegang met de service-rol loopt via één module die vóór en na de actie een auditregel schrijft; schrijfacties met die rol worden bovendien door een databasetrigger gelogd. Lezen met de service-rol is niet volledig in de eigen database te loggen; de bescherming daarvoor is de versleuteling en de afspraak dat er geen codepad is dat zo leest. Elke uitrol staat in de versiegeschiedenis.
- De beheerder kijkt niet in klantgegevens, behalve voor storingsherstel of op verzoek van de klant.
5. Auditlog
Status: in ontwikkeling.
- Wijzigingen in leden en rollen, uitnodigingen, factoren, exports, workspace-acties en elke bevoorrechte toegang worden vastgelegd met tijd, handeling en pseudoniem id (geen e-mailadres of naam). Het log is alleen via een vaste functie te schrijven en niet te wijzigen of te verwijderen, behalve de opruiming na 13 maanden.
- Een hash-keten maakt achteraf knoeien aantoonbaar. Wie volledige databaserechten heeft kan dat in theorie toch; het log is daarom bewijs, geen garantie.
- Eigenaren zien de auditregels van hun eigen workspace.
6. Bestanden en tijdelijke links
Status: in ontwikkeling.
- Alle bestanden staan in private opslag. Downloads gebeuren via signed URL's met een levensduur van 60 seconden, die pas na een rolcontrole worden aangemaakt en niet worden gelogd. Een link blijft tot het verlopen bruikbaar voor wie hem heeft.
7. Minimale rechten
Status: in ontwikkeling.
- De browser gebruikt alleen de gebruikerssessie. De service-rol komt niet voor in gewone verzoeken en wordt alleen gebruikt voor een korte, vaste lijst van handelingen (accountverwijdering, opschonen van verwijderde workspaces, sleutelrotatie, herstel van 2FA).
- Geheimen staan alleen in de instellingen van de hostingpartijen, niet in de code. Geheimen en sleutels worden periodiek vernieuwd.
- Rollen binnen de workspace volgen minimale rechten: kijkers lezen en exporteren, beheerders wijzigen, eigenaren beheren ook leden.
8. Controles in de ontwikkelstraat
Status: deels actief (pull requests, lint, typecontrole, tests); databasetests, geheimencontrole en beveiligingsheaders: in ontwikkeling.
- Elke wijziging gaat via een pull request met automatische controles: typecontrole, lint, tests en databasetests. Een controle op geheimen en op persoonsgegevens in testdata draait in de CI.
- Testdata en seed-data zijn fictief. De logger accepteert een vaste lijst velden en schrijft geen e-mailadressen, namen, IBAN's of inhoud weg.
- Beveiligingsheaders en een strikte Content Security Policy zijn ingesteld.
9. Beschikbaarheid, back-ups en export
Status: er zijn geen back-ups; export: gepland.
- Er zijn tijdens de bèta geen back-ups gegarandeerd. Pandboek maakt geen eigen back-ups en de hostingpartij biedt op dit moment geen back-ups. Gegevens kunnen bij een storing, fout of verlies onherstelbaar verloren gaan.
- Klanten moeten hun gegevens daarom regelmatig zelf exporteren. De exportfunctie (CSV/JSON en bestanden) is gepland; tot die tijd levert Pandboek op verzoek een export.
- Er is geen SLA. De dienst draait tijdens de bèta op een laag met beperkte garanties; de dienst kan bijvoorbeeld na inactiviteit worden gepauzeerd. [Controleer de dan geldende hosting-abonnementen.]
- Wordt een workspace verwijderd, dan worden gegevens en de workspace-sleutel definitief gewist na de bedenktijd van 7 dagen; er blijven geen eigen kopieën achter.
10. Incidentproces
Status: actief als werkwijze van één beheerder; een vastgelegde procedure en sleutelrotatie: in ontwikkeling.
- Een incident wordt vastgesteld, ingeperkt, onderzocht en gedocumenteerd. Bij een datalek volgt melding aan de klant zonder onredelijke vertraging (intern streven 24 uur na ontdekking, artikel 9 van de overeenkomst) en indien nodig hulp bij de melding aan de Autoriteit Persoonsgegevens.
- Bij verdenking van een gelekte sleutel worden sleutels vernieuwd en sessies ingetrokken.
- Verlies van de hoofdsleutel betekent verlies van de gevoelige velden. De sleutel is daarom op meerdere veilige plaatsen bewaard en wordt jaarlijks gecontroleerd.
11. Organisatie
Status: actief.
- Pandboek wordt beheerd door één persoon. Er zijn geen medewerkers of onderaannemers met toegang tot klantgegevens. [Pas aan zodra dat verandert.]
- Alle toegangsaccounts bij subverwerkers zijn met tweestapsverificatie beveiligd.
- Pandboek verwerkt geen kopieën van identiteitsbewijzen of BSN's als bewuste functie en ontmoedigt het uploaden daarvan.