Juridisch
Verwerkersovereenkomst
Deze pagina is nog niet vastgesteld. Er staat geen juridisch bindende tekst op — alleen de kopjes die erin horen en de vraag die er per kopje beantwoord moet worden. Niemand kan hier rechten aan ontlenen.
Voor déze pagina is wat de software feitelijk doet al wél uitgeschreven — dat is bekend en geen juridische vinding. De juridische vorm eromheen is dat niet.
1. Wie verwerker is en wie verantwoordelijke
Wat de software vastlegt: een klant van Bandhub (de accounthouder) bepaalt zelf welke persoonsgegevens van zijn muzikanten en contactpersonen hij in zijn account invoert; Bandhub bewaart en verwerkt die gegevens namens hem, zonder daar zelf een eigen doel mee na te streven. De klant is dus verwerkingsverantwoordelijke, de eigenaar van Bandhub is verwerker.
Vraag: naam, adres en KvK-nummer van de verwerker, voor in de overeenkomst zelf.
2. Welke gegevens en van wie
Wat de software vastlegt: elke klant heeft een
eigen klantbestand met daarin (sql/schema_tenant.sql):
contacts (contactpersonen bij podia) — voornaam, achternaam, functie, twee e-mailadressen, telefoon, adres, postcode, plaats, land, website, Facebook, Instagram, notities.
musicians (muzikanten) — voornaam, achternaam, e-mailadres, telefoon, instrument, pasfoto, website, Facebook, Instagram, een korte biografie, notities, en — voor wie een eigen discografiepagina koppelt — de inloggegevens van diens eigen WordPress-site (gebruikersnaam en wachtwoord van een "application password").
Daarnaast: bookings/booking_lineup (welke muzikant bij welk optreden hoort en welke gage hij daarvoor krijgt), en portal_views/interaction_log (wie een publieke link — bijvoorbeeld een beschikbaarheidsvraag — heeft geopend en wanneer). Voor zover in het schema te zien, staan er geen bijzondere persoonsgegevens (gezondheid, ras, geloof) in.
Vraag: is deze lijst compleet genoeg voor de overeenkomst, en moet het WordPress-wachtwoord van de klant zelf (niet van diens muzikant, maar wél een inloggeheim dat Bandhub namens de klant bewaart) apart worden benoemd als extra gevoelig?
3. Wat de verwerker ermee mag
Vraag: uitsluitend verwerken in opdracht van de verantwoordelijke, voor het doel van de dienst zelf, en niet voor eigen doeleinden — de gebruikelijke bepaling, hier nog te formaliseren.
4. Welke beveiligingsmaatregelen er zijn
Wat de software vastlegt: elk klantbestand
(SQLite) heeft een onvoorspelbare naam — tenant_path()
in tenant.php accepteert uitsluitend namen die voldoen
aan het patroon klant_<id>_<16 hexadecimale
tekens>.sqlite, en is de enige plek waar een pad naar een
klantbestand ontstaat. De functie in db.php die de
databaseverbinding van de ingelogde klant opent, leest per verzoek
precies het ene bestand van die klant;
er is geen query in de applicatie die over meerdere klantbestanden
heen gaat. De klantbestanden staan buiten de webmap
(de map naast de webmap, zie config.php), zodat de
webserver ze nooit rechtstreeks kan uitleveren — index.php
weigert zelfs te starten als dat niet zo is.
Geüploade bestanden (contracten, persfoto's, bandbestanden) krijgen
eveneens een willekeurige bestandsnaam
(bin2hex(random_bytes(...)) in actions.php)
en staan ook buiten de webmap; ze gaan de deur alleen uit via een
downloadroute die de toegang controleert, nooit via een directe
URL. Wachtwoorden van accounthouders worden gehasht opgeslagen
(kolom wachtwoord_hash in de tabel logins),
niet in leesbare vorm.
Vraag: is dit voldoende voor de beveiligingsparagraaf van de overeenkomst, of moet er ook iets komen over versleuteling van de reservekopieën, wie er (bijvoorbeeld bij onderhoud) toegang heeft tot de server, en toegangslogging voor de eigenaar zelf?
5. Subverwerkers
Wat de software vastlegt: voor e-mail gebruikt
Bandhub een eigen postbus op het eigen domein
(functions.php, send_email(), SMTP via
mail.bandhub.nl) — geen extern verzenddienst-account.
De hostingpartij (NameHero) is in praktische zin wel een
subverwerker: de gegevens staan fysiek op hun infrastructuur.
Wat er géén subverwerker is: Google. De lettertypen
werden tot 3 september 2026 bij fonts.googleapis.com
opgehaald, waardoor het IP-adres van elke muzikant die een uitvraag
opende bij Google terechtkwam. Ze staan nu op onze eigen server, dus
die verwerking bestaat niet meer en Google hoeft hier niet genoemd te
worden.
Vraag: moet NameHero hier als subverwerker worden genoemd, en is er een verwerkersovereenkomst met NameHero zelf? En: komen Stripe en PayPal (de beoogde betaaldiensten, nog niet aangesloten) hier straks bij? Zij zien de gegevens van de bandleider die het abonnement afsluit; of ze ook gegevens van diens muzikanten te zien krijgen hangt af van hoe het afrekenen wordt ingericht.
6. Wat er gebeurt bij een datalek en binnen welke termijn
Vraag: binnen welke termijn meldt de verwerker een (vermoeden van een) datalek aan de verantwoordelijke, en op welke manier? Er is geen geautomatiseerde detectie- of meldprocedure in de code; dit moet procedureel worden vastgelegd, niet technisch afgeleid.
7. Hoe de verantwoordelijke zijn eigen betrokkenen kan bedienen
Wat de software vastlegt: een muzikant of
contactpersoon kan zelf, zonder eigen account, reageren via een
publieke link met een token (tabel publieke_tokens,
sql/schema_admin.sql, en band_portals /
booking_portals in sql/schema_tenant.sql)
— bijvoorbeeld om op een beschikbaarheidsvraag te antwoorden. De
klant zelf kan de gegevens van zijn muzikanten en contactpersonen
in zijn account inzien, wijzigen en verwijderen. Er is geen aparte
exportknop voor de gegevens van één losse betrokkene aangetroffen,
los van wat de klant handmatig uit zijn overzichten kan halen.
Vraag: is dat voldoende om de verantwoordelijke in staat te stellen een AVG-verzoek van zijn eigen betrokkene (bijvoorbeeld een muzikant die inzage vraagt) af te handelen, of moet daar een specifieke exportfunctie voor komen?
8. Wat er met de gegevens gebeurt bij beëindiging
Wat er is vastgelegd (nog niet gebouwd):
Bandhub-ontwerp.md §9.6 beschrijft het voornemen: bij
opzegging krijgt de klant een export van zijn gegevens, het account
blijft daarna een afgesproken termijn bewaard voor spijtoptanten,
en wordt dan definitief verwijderd — bestand en al. Technisch is
dat eenvoudig: tenant_path() wijst naar precies één
bestand per klant, er is geen gedeelde tabel die daarbij
schoongemaakt moet worden. De bewaartermijn zelf staat in
Bandhub-ontwerp.md §13 nog als open punt. Reservekopieën
van vóór de verwijdering blijven vermoedelijk nog een tijd bestaan
in de reservekopiemap naast de webmap — daarvoor is in de code geen
automatische opschoning gevonden (zie ook kopje 4 hierboven, en de
privacyverklaring, kopje 4).
Vraag: wat is de bewaartermijn na beëindiging, en worden de reservekopieën na die termijn actief opgeruimd, of lopen ze vanzelf uit de bewaarcyclus van de reservekopieën zelf?
9. Audit
Vraag: heeft de verantwoordelijke het recht een audit te (laten) uitvoeren, hoe vaak, en wie draagt de kosten? Zuiver juridisch, geen technische basis in de code.