Skip to main content

Privacy, retentie, anonimisering en gegevensbescherming

25.1 Doel van dit hoofdstuk

Dit hoofdstuk legt vast hoe OefenHub persoonsgegevens, privacygevoelige gegevens, historische context, retentie, anonimisering, tijdelijke bestanden, technische snapshots, logging en gegevensbescherming technisch behandelt.

Het hoofdstuk is een technische uitwerking van bestaande functionele en niet-functionele uitgangspunten. Het introduceert geen nieuwe juridische grondslagen en vervangt geen privacybeleid, verwerkersafspraken of formele juridische documentatie.

25.2 Scope

Dit hoofdstuk beschrijft:

  • welke soorten gegevens privacy- of gegevensbeschermingsimpact hebben;
  • welke module eigenaar is van welke privacygevoelige brondata;
  • hoe snapshots, soft links en historische context gebruikt worden;
  • hoe accountanonimisering technisch doorwerkt in domeinen;
  • hoe retentie per gegevenssoort wordt ingericht;
  • hoe tijdelijke exports, PDF-bestanden en technische bestanden worden behandeld;
  • welke gegevens nooit in logs, snapshots of exports mogen worden opgeslagen;
  • hoe logging, securitylogging, joblogging en ticket snapshots privacyveilig blijven;
  • hoe herstel, backup, restore en beheeracties privacygrenzen respecteren.

25.3 Afbakening

OnderwerpWel in dit hoofdstukNiet in dit hoofdstuk
PrivacygedragTechnische opslag-, retentie-, anonimisering- en loggingregelsJuridische grondslag of privacybeleidtekst
PersoonsgegevensTechnische classificatie en verwerking binnen modulesJuridische DPIA of verwerkersovereenkomst
AnonimiseringTechnische account- en snapshotverwerkingBeleidskeuze of verzoekprocedure buiten applicatie
RetentieTechnische bewaartermijnen, cleanup en herstelgedragJuridische bewaarplicht buiten bekende requirements
ExportsTijdelijke PDF/outputbestanden en cleanupPermanente documentmanagementoplossing
LoggingVeilige technische logging en verboden inhoudKeuze voor concrete externe loggingprovider

Wanneer tijdens implementatie blijkt dat een privacyregel functioneel of juridisch ontbreekt, wordt die niet stilzwijgend in het Technisch Ontwerp opgelost. Dan moet de impact worden teruggeleid naar het Functioneel Ontwerp, de Software Requirements Specification, database-informatie of beleidsdocumentatie.

25.4 Ontwerpprincipes

PrincipeTechnische betekenis
DataminimalisatieModules slaan alleen gegevens op die nodig zijn voor de eigen verantwoordelijkheid.
Brondata blijft bij eigenaarPrivacygevoelige brondata wordt niet onnodig gekopieerd naar andere modules.
Soft link over modulegrenzenCross-module persoonsverwijzingen worden standaard soft links, eventueel met snapshot.
Historie zonder actuele persoonsgegevensHistorische reconstructie blijft mogelijk zonder verwijzing naar actuele persoonsgegevens van geanonimiseerde accounts.
Geen credentials in OefenHubWachtwoorden, tokens, refresh tokens en identity-providerinterne gegevens worden niet opgeslagen in OefenHub.
Tijdelijke output is tijdelijkPDF-bestanden en exportbestanden zijn output, geen permanente brondata.
Logs zijn technisch, niet inhoudelijkLogs bevatten correlation en foutcontext, maar geen antwoorden, tokens, wachtwoorden of gevoelige payloads.
Retentie is explicietBewaartermijnen en cleanup worden per gegevenssoort of domein vastgelegd.
Bij twijfel veiligBij twijfel wordt minder inhoud opgeslagen, langer bestaande toegang geblokkeerd of meer expliciete beheercontrole vereist.

25.5 Gegevensclassificatie

KlasseVoorbeeldenTechnische regels
Identificerende persoonsgegevensnaam, e-mailadres, profielgegevens, account-id in combinatie met naamOpslaan bij eigenaar-module; niet onnodig dupliceren; anonimisering verplicht bij accountverwijdering volgens domeinregels.
Relationele persoonsgegevensouder-kindrelatie, docent-leerlingrelatie, vriendschapBrondata bij Relationships; historisch herleidbaar zonder actuele persoonsgegevens.
Onderwijs- en oefengegevensoefenruns, antwoorden, scores, statistieken, geschiedenisBrondata bij Practice; toegang strikt via rolcontext; PDF/export alleen tijdelijk.
Communicatie-inhoudprivéberichten, systeemberichten, ticketdiscussiesRetentie, zichtbaarheid en anonimisering per domein; rich text gesanitized.
Technische snapshotsuser agent, page URL, IP-adres, rolmomentopnameAlleen zichtbaar voor beheer/support waar nodig; geen vrije verspreiding naar reguliere gebruikers.
Security- en accessgegevensaccess denied, verdachte poging, correlation-idStandaard technische logs; geen gevoelige payloads; retentie en zichtbaarheid beperken.
Tijdelijke bestandenPDF-export, tijdelijke renderbestandenBuiten webroot, korte bewaartermijn, cleanup via Scheduling.
Credentials en tokenswachtwoorden, refresh tokens, identity-provider tokensNiet opslaan in OefenHub-database, logs, snapshots of exports.

25.6 Module-eigenaarschap van privacygevoelige data

ModulePrivacygevoelige dataEigenaarschap
Identityinterne accountstatus, profielbasis, externe providerreferentieEigenaar van interne accountdata en account lifecycle.
Authorizationrollen, roltoekenningen, rolcontextEigenaar van autorisatiecontext, niet van profieldata.
Relationshipsrelaties, uitnodigingen, relatie-eventsEigenaar van relationele koppelingen en relatiehistorie.
Catalogdocentcontent, niveaus, categorieën, oefeningen, historyEigenaar van catalogusbrondata; persoonlijke verwijzingen soft link/snapshot.
Practiceruns, voortgang, antwoorden, scores, statistieken, gedeelde oefeningenEigenaar van oefenbrondata en historische resultaatcontext.
Communicationsysteemberichten, privéthreads, readstates, templatesEigenaar van mailbox- en communicatiedata.
Supporttickets, discussies, technische snapshots, sluitingen, heropeningenEigenaar van meldingsdata en supporthistorie.
LiveMonitoringlive-sessieaudit, online-/livesessiecontextEigenaar van live-meekijkregistratie, niet van oefenvoortgang.
Adminbeheercontent, beheerlogs, configuratiebeheerEigenaar van beheerbare content en beheerhandelingen.
Reportingtijdelijke exportoutput en exportorkestratieGeen permanente brondata-eigenaar voor resultaten.
Schedulingjobmetadata, jobpogingen, foutstatussenEigenaar van technische joblifecycle en joblogging.

25.7 Identity en accountanonimisering

Accountanonimisering is een technische lifecycle-operatie op het interne OefenHub-account. De externe identity provider blijft eigenaar van credentials en providerinterne accountgegevens.

25.7.1 Technische doelen

DoelRegel
Toegang beëindigenHet interne account wordt niet langer regulier bruikbaar.
Actuele persoonsgegevens verwijderenNaam-, profiel- en identificeerbare accountvelden worden vervangen of geleegd volgens vaste anonimiseringswaarden.
Historie behoudenOefenruns, tickets, relatiehistorie, audit en beheercontext blijven reconstructeerbaar waar functioneel vereist.
Relaties beëindigenActieve relaties en uitnodigingen worden gedeactiveerd of niet langer accepteerbaar.
Geen credentialmutatieOefenHub wijzigt geen wachtwoord of providercredential.

25.7.2 Vaste anonimiseringswaarden

Voor accountanonimisering gebruikt OefenHub vaste, herkenbare maar niet tot de oorspronkelijke persoon herleidbare waarden. Deze waarden zijn onderdeel van de technische baseline en moeten consistent worden toegepast in Identity, relevante snapshots, readmodels, exports en zichtbare historische context waar persoonsgegevens worden vervangen.

Veld / gegevenstypeAnonimiseringswaarde of gedragTechnische regel
FirstName / voornaamAnoniemVaste waarde voor geanonimiseerde accounts.
MiddleName / tussenvoegsel#Gereserveerde systeemwaarde voor geanonimiseerde accounts. Een reguliere gebruiker mag # niet als tussenvoegsel invoeren.
LastName / achternaamKorte, niet-voorspelbare systeemcodeDe code is uniek genoeg voor technische onderscheiding, maar mag geen oorspronkelijke persoonsgegevens bevatten.
E-mailadres in OefenHubanoniem.<code>@verwijderd.acc<code> gebruikt dezelfde of een technisch gekoppelde niet-voorspelbare systeemcode. De waarde moet voldoen aan unieke constraints en mag niet afleverbaar of herleidbaar zijn.
WeergavenaamAfgeleid uit de geanonimiseerde naamveldenBijvoorbeeld Anoniem # <code> of een UI-specifieke samenstelling op basis van dezelfde velden.
Profielfoto/avatarNeutrale standaardavatar of geanonimiseerde avatarreferentieVrije gebruikersafbeeldingen zijn niet toegestaan; avatarreferentie wordt naar een neutrale keuze gezet waar nodig.
Weergavenaam in snapshotsVervangen door de geanonimiseerde weergave wanneer het snapshot persoonsgegevens van het geanonimiseerde account bevatSnapshots blijven historisch bruikbaar, maar tonen geen actuele persoonsgegevens van het verwijderde account.
Actorvelden in historieTechnische id of soft reference mag blijven waar dat nodig is; zichtbare naamvelden worden geanonimiseerdHistorische reconstructie blijft mogelijk zonder actuele persoonsgegevens te tonen.

De systeemcode mag niet voorspelbaar, oplopend of uit oorspronkelijke persoonsgegevens afgeleid zijn. De code wordt technisch gegenereerd als onderdeel van de anonimiseeractie en blijft stabiel voor dezelfde geanonimiseerde accountcontext, zodat historie, exports en beheeranalyse consistent blijven.

25.7.3 Transactionele afbakening accountanonimisering

Accountanonimisering is een kritieke lifecycleworkflow. Identity is eigenaar van het actuele account en voert de deactivering en vervanging van actuele identificeerbare waarden atomair uit. Domeinen blijven eigenaar van hun eigen historische brondata, snapshots en readmodels. Zij verwerken zichtbare persoonsweergave volgens eigen privacyregels via idempotente naverwerking, cache-invalidatie of rebuild.

De workflow mag niet als succesvol worden vrijgegeven wanneer actuele accountvelden nog identificeerbaar zichtbaar blijven. Afgeleide projecties, exports en caches mogen tijdelijk achterlopen zolang reguliere toegang wordt geblokkeerd of geanonimiseerde weergave server-side wordt afgedwongen totdat naverwerking gereed is.

25.8 Snapshotbeleid

Snapshots houden historische context vast zoals die gold op het moment van uitvoeren, delen, communiceren of exporteren. Zij zijn geen tweede bron van waarheid voor actuele gegevens.

SnapshottypeVoorbeeldenVulmomentMutatiegedrag
Runcontextsnapshotniveau-, categorie-, oefening-, module- en gebruikerscontext bij runBij start van run of bij ontstaan bronrecordNiet stilzwijgend bijwerken.
Gedeelde-oefening-snapshotoorspronkelijke niveau-/categorie-/oefeningnaamBij delenNiet bijwerken na cataloguswijzigingen.
Ticketsnapshotuser agent, page URL, IP-adres, rolmomentopnameBij aanmaken meldingNiet herberekenen.
Communicatiesnapshotafzenderweergave, namens-weergave, onderwerpcontextBij berichtcreatieNiet stilzwijgend aanpassen.
Audit/history-snapshotactornaam, rolcontext, oude/nieuwe waardeBij auditactieAlleen anonimiseren volgens accountregels.

25.8.1 Snapshot en anonimisering

SituatieGedrag
Snapshot bevat geen persoonsgegevensSnapshot blijft ongewijzigd.
Snapshot bevat naam/e-mailadres van geanonimiseerd accountSnapshot wordt vervangen door vastgelegde anonimiseringswaarde wanneer privacyregels dat vereisen.
Snapshot bevat onderwijscontext zonder persoonSnapshot blijft historisch leidend.
Snapshot is nodig voor PDF/exportgeschiedenisExport gebruikt geanonimiseerde snapshotwaarden wanneer account geanonimiseerd is.
Snapshot is technische supportdataZichtbaarheid en retentie worden beperkt tot beheer/support.

Cross-module verwijzingen naar gebruikers en andere domeinobjecten worden standaard als soft link opgeslagen. Dit voorkomt dat historische records onbedoeld verwijderd of onleesbaar worden door lifecycle-acties in een andere module.

VoorbeeldTechnisch patroon
practice.ExerciseRuns.UserId naar identity.UsersSoft link + relevante snapshots.
support.Tickets.CreatedByUserId naar identity.UsersSoft link + melderweergave/snapshot waar nodig.
communication.PrivateMessages.SenderUserIdSoft link + afzenderweergave/snapshot.
live.LiveViewAudit.ViewerUserIdSoft link + rolcontextsnapshot.
catalog.Levels.OwnerUserIdSoft link of modulekeuze volgens de database-informatie; zichtbare context via querycontract.

Binnen een domein blijven harde FK’s toegestaan waar de records dezelfde lifecycle delen. Over modulegrenzen is een harde FK een expliciete uitzondering.

25.10 Retentie per gegevenssoort

GegevenssoortTechnisch uitgangspuntCleanup/einde lifecycle
Actieve accountdataZolang account actief of historisch nodig isAnonimisering bij accountverwijdering.
Oefenruns en resultatenHistorische onderwijsresultaten blijven raadpleegbaar volgens toegangsregelsNiet hard verwijderen door gebruiker; anonimisering van persoonscontext waar nodig.
DocenttestrunsTijdelijk, niet in reguliere geschiedenisOpruiming via Scheduling.
PrivéberichtenFunctionele bewaartermijn van 3 maandenCleanup of participant-zichtbaarheid volgens Communication.
SysteemberichtenGeen generieke korte retentie in eerste baselineBlijven waar nodig als gebruikersgerichte logging/ingang.
Tickets/meldingenHistorisch raadpleegbaar voor beheer en gebruiker binnen toegangsgrenzenGeen hard delete als audit/reconstructie nodig is; anonimisering bij accountlifecycle.
Ticket technische snapshotsBeperkt zichtbaar, supportgerichtRetentie nader vastleggen; niet tonen aan reguliere gebruiker.
BeheerhistorieAuditbaar zolang nodig voor reconstructieGeen generieke automatische verwijdering zonder expliciet beleid.
LiveViewAuditAudit van live-meekijksessiesRetentie nader bepalen op basis van privacy en beheerbehoefte.
Technische logsOperationeel tijdelijkRetentie via logbeleid en opslagprovider.
Security/access logsLanger dan reguliere technische logs indien nodig voor analyseExacte termijn als open technisch/beleidsbesluit.
Tijdelijke PDF/exportbestandenStandaard 24 uurCleanup via Scheduling; achterstandsignalering vanaf 48 uur.
TickerQ/jobmetadataNodig voor uitvoering, retry en analyseRetentie per jobtype/status.

25.11 Retentie-implementatie

Retentie wordt niet opgelost met willekeurige hard deletes vanuit meerdere modules. Iedere module blijft eigenaar van eigen cleanup- en lifecyclebeleid.

PatroonToepassing
Soft delete/deactivatieRelaties, beheerbare content, zichtbaarheid per participant.
AnonimiseringAccountlifecycle en persoonsgegevens in historische context.
Cleanup jobTestruns, tijdelijke exports, verlopen jobs, tijdelijke bestanden.
Retentie op readmodelsHerbouwbare projecties mogen worden verwijderd en opnieuw opgebouwd.
Geen automatische cleanupBrondata die nodig is voor audit, onderwijsresultaten of historische reconstructie.

Cleanupjobs worden via Scheduling gepland en gelogd met correlation/job-id. De domeinmodule voert de inhoudelijke cleanup uit via publieke contracten.

25.12 Tijdelijke PDF- en exportbestanden

PDF’s en andere exportbestanden zijn tijdelijke output. De bron blijft de database, inclusief snapshots en module-specifieke renderrepresentaties.

AspectRegel
OpslaglocatieBuiten webroot.
ToegangAlleen via server-side geautoriseerde downloadresponse.
BestandsnaamGeschoond, begrensd en zonder gevoelige extra data.
RetentieStandaard 24 uur vanaf creatie; langer bewaren vereist expliciete beheerreden.
HerdownloadOpnieuw genereren uit brondata in plaats van permanent bestand bewaren.
CleanupVia Scheduling, minimaal iedere 6 uur; fout bij cleanup mag brondata niet verwijderen.
LoggingGeen volledige PDF-inhoud of antwoordpayloads loggen.

25.13 Logging en privacy

Technische logging is bedoeld voor analyse, beheer, foutopsporing en securitymonitoring. Logging mag geen tweede opslagplaats voor functionele inhoud of persoonsgegevens worden.

25.13.1 Verplichte technische context

VeldDoel
CorrelationIdVolgen van request, workflow, job en domeinacties.
UserId of geanonimiseerde actorreferentieHerleidbaarheid waar toegestaan.
RoleContextAnalyse van autorisatie- en contextproblemen.
ModuleHerleiden naar eigenaar.
ActionBegrijpen welke technische actie werd uitgevoerd.
EntityType en technische idAlleen waar nodig; geen inhoudelijke payload.
JobId / AttemptNumberHerleidbaarheid van scheduling.

25.13.2 Verboden loginhoud

Verboden inhoudReden
WachtwoordenCredentials horen nooit in OefenHub-logs.
Access tokens, refresh tokens, identity tokensCredential-/sessierisico.
Volledige antwoordpayloads van leerlingenOnderwijsinhoud en privacygevoelige data.
Volledige privéberichtinhoudCommunicatieprivacy.
Volledige ticketomschrijving in technische logsKan persoonsgegevens of gevoelige context bevatten.
PDF-inhoud of gegenereerde documentenTijdelijke output, niet logdata.
Ongefilterde request bodiesKan credentials, persoonsgegevens of vrije tekst bevatten.
Connectionstrings en secretsSecret disclosure.

25.14 Securitylogging en verdachte toegangspogingen

Er is geen apart OefenHub.Security project in de eerste baseline, maar securitygebeurtenissen worden wel technisch beschreven en gelogd.

GebeurtenisLoggingregel
Access denied op objectniveauLog module, actie, actor, rolcontext, objecttype en redenklasse; geen objectinhoud.
IDOR-poging of ongeldige route-idLog als securityrelevante toegangspoging zonder gevoelige data te tonen.
Herhaalde autorisatiefoutenKan gebruikt worden voor technische analyse en rate limiting; standaard geen centrale persistente securityeventtabel.
Verdachte login/provisioningfoutLog correlation en providerreferentie op veilige manier; geen tokens of credentials.
TickerQ-dashboardtoegang geweigerdLog als interne beheer-/securitygebeurtenis.
Rate-limit overschrijdingLog technische context en actor/ip waar toegestaan.

Securitylogging moet een beperkte zichtbaarheid hebben. Reguliere gebruikers krijgen nooit technische details of objectinhoud terug bij autorisatieafwijzingen.

25.15 Ticket technische snapshots

Ticket snapshots kunnen technische gegevens bevatten die nuttig zijn voor beheer en debugging.

SnapshotveldPrivacyregel
UserAgentAlleen beheer/support; niet tonen aan reguliere gebruiker.
PageUrlGeen tokens of gevoelige querystrings opslaan.
IP-adresBeperkte zichtbaarheid en retentie; niet opnemen in gebruikersweergave.
RollenmomentopnameAlleen als tekstuele snapshot voor contextanalyse.
Laatst gezienAlleen wanneer functioneel nodig voor beheeranalyse.

Bij het verzamelen van PageUrl moet de applicatie voorkomen dat gevoelige route- of querydata onnodig wordt opgeslagen.

25.16 Communicatie en privacy

CommunicatietypePrivacygedrag
SysteemberichtenMogen functionele verwijzing bevatten via EntityType + EntityId, maar geen vrije technische URL.
PrivéberichtenParticipantgebonden zichtbaarheid en readstate; rich text gesanitized; retentie toegepast.
Thread-eventsOnderdeel van privéthread, geen los systeembericht.
SysteemnotificatiesGeen mailboxdata; displayregels en browserwaarden mogen geen persoonsgegevens bevatten.
Namens-verzendingAfzenderweergave expliciet en alleen voor dat bericht.

Bij accountanonimisering wordt actuele identiteit verwijderd of vervangen zonder privéthreadinhoud generiek voor andere deelnemers te verwijderen, tenzij retentie of beleid dat vereist.

25.17 Oefengegevens en privacy

Oefengegevens kunnen privacygevoelig zijn omdat zij voortgang, resultaten, niveaucontext en gedrag van kinderen bevatten.

OnderdeelRegel
ExerciseRunAlleen raadpleegbaar via rolcontext en objectautorisatie.
ExerciseRunProgressBevat antwoorden en timing; niet loggen of breed exposen.
StatistiekveldenAlleen zichtbaar binnen toegestane context.
GeschiedenisNiet verwijderen door leerling; blijft historisch met geanonimiseerde accountcontext waar nodig.
Live meekijkenAlleen read-only en auditplichtig; geen beheerder-livefunctie.
PDF-exportTijdelijke output, server-side geautoriseerd, bron uit historische runcontext.
Gedeelde oefeningenSnapshotcontext blijft historisch; relatieveranderingen trekken gedeelde ontvangen oefening niet automatisch terug.

25.18 Readmodels, caching en privacy

Readmodels en caches mogen geen ruimere gegevensset tonen dan de onderliggende brondata.

RegelToelichting
Contextgebonden cachekeysCachekeys bevatten rolcontext, gebruiker, kind/leerling en relevante filters.
Geen autorisatie uit cacheAutorisatie wordt niet vervangen door eerdere cachebeschikbaarheid.
Anonimisering invalidatieReadmodels/caches met persoonsweergave moeten na anonimisering worden ververst of herbouwd.
BadgewaardenAfgeleid; geen brondata en geen bewijs van toegang.
RebuildbaarGematerialiseerde readmodels moeten veilig herbouwbaar zijn uit brondata.

25.19 Backup, restore en privacy

Backups kunnen persoonsgegevens bevatten en moeten daarom als gevoelige gegevensdragers behandeld worden.

AspectRegel
BackupopslagBeperkt toegankelijk en beveiligd.
HersteldoelenRPO 5 × 24 uur en RTO 3 werkdagen gelden ook wanneer privacycontroles en naverwerking nodig zijn.
Restore naar niet-productieAlleen met passende anonimisering of afgeschermde toegang.
Restore-impact op anonimiseringRestore mag geanonimiseerde accounts niet stilzwijgend terugbrengen als identificeerbaar actief account.
IncidentanalyseGebruik correlation en technische identifiers, niet vrije inhoudsdumps.
Tijdelijke exportsGeen onderdeel van noodzakelijke brondatarestore.

Wanneer een restore persoonsgegevens terugzet die inmiddels geanonimiseerd hadden moeten zijn, moet een naverwerking of beheerprocedure dat corrigeren voordat reguliere toegang wordt toegestaan. Deze privacy-naverwerking hoort bij het vrijgeven van de restore en mag niet worden overgeslagen om de RTO te halen.

25.20 Beheerrollen en gegevensbescherming

Beheerderstoegang is breed maar niet onbeperkt qua doelbinding. De technische implementatie moet onderscheid houden tussen beheer, support, configuratie en privacygevoelige inhoud.

BeheeractiePrivacyregel
Account beherenGeen wachtwoorden of providercredentials tonen/wijzigen.
Gebruikersinstellingen corrigerenAlleen ondersteunde instellingen; geen autorisatieomzeiling.
TicketanalyseTechnische snapshots zichtbaar voor beheer, niet voor reguliere gebruiker.
ResultaatanalyseAlleen via geldige beheer-/supportcontext; geen live meekijken als beheerder.
Categorie-/modulebeheerGeen historische runs herschrijven.
Failed-job analyseJobpayloads mogen geen gevoelige vrije inhoud bevatten tenzij noodzakelijk en beperkt zichtbaar.

25.21 Gegevensbescherming per technische laag

LaagPrivacy-/beschermingsmaatregel
WebGeen gevoelige browserstorage, geen autorisatie op clientstate, veilige foutmeldingen.
Application/module contractsObjectautorisatie en scopecontrole per command/query.
Data/EF CoreSoft links, snapshots, delete behavior, schema-eigenaarschap.
LoggingGeen gevoelige payloads; correlation-id verplicht.
SchedulingJobpayloads minimaliseren; failed jobs beheerbaar maar beperkt zichtbaar.
ReportingTijdelijke bestanden, geautoriseerde downloads, cleanup.
SignalRGeen gevoelige groepsnamen; server-side autorisatie bij start en reconnect.
InfrastructureSecrets buiten broncode, TLS, headers, rate limits, interne dashboards afgeschermd.

25.22 Anonimisering per domein

DomeinVerwacht gedrag bij accountanonimisering
IdentityAccount deactiveren/anonimiseren; actuele profielwaarden vervangen.
AuthorizationRollen en contexten beëindigen of niet langer autoriserend maken.
RelationshipsActieve relaties deactiveren; open uitnodigingen niet langer accepteerbaar.
CatalogEigenaarschap/collaboratorcontext volgens domeinregels overdragen of historisch maken.
PracticeRuns behouden; persoonsweergave via snapshot/anonimiseringswaarden aanpassen waar nodig.
CommunicationDeelname en mailboxzichtbaarheid volgens lifecycle; inhoud niet generiek hard verwijderen.
SupportTickets behouden voor beheer/reconstructie; melder/beheerderweergave anonimiseren waar nodig.
LiveMonitoringLive-audit behouden met geanonimiseerde viewer-/kindweergave waar nodig.
AdminBeheerhistory behouden met geanonimiseerde actorweergave waar nodig.
SchedulingJobpayloads/statussen opschonen of anonimiseren wanneer zij persoonsverwijzingen bevatten.

25.23 Implementatiechecklist

Bij iedere wijziging die persoonsgegevens, snapshots, logging, exports, jobs of retentie raakt, wordt minimaal gecontroleerd:

  • Is duidelijk welke module eigenaar is van de brondata?
  • Bevat de wijziging persoonsgegevens of privacygevoelige inhoud?
  • Is een harde FK, soft link of soft link + snapshot correct gekozen?
  • Wordt historische context behouden zonder actuele persoonsgegevens onnodig vast te houden?
  • Worden credentials, tokens, wachtwoorden en gevoelige payloads uitgesloten van logs?
  • Is retentie of cleanup nodig?
  • Is anonimisering beschreven voor nieuwe persoonsgegevens of snapshots?
  • Zijn readmodels/caches na anonimisering of verwijdering herbouwbaar of invalideerbaar?
  • Zijn tijdelijke bestanden buiten webroot en opruimbaar?
  • Is beheerzichtbaarheid beperkt tot noodzakelijke rollen/contexten?
  • Zijn backup/restore-effecten meegenomen?
  • Is er testdekking voor privacy-, retentie- of anonimiseringsgedrag?

25.24 Teststrategie

TesttypeDoel
AnonimiseringstestsControleren dat actuele persoonsgegevens verdwijnen en historische reconstructie behouden blijft.
AutorisatietestsControleren dat privacygevoelige data alleen binnen geldige context zichtbaar is.
LoggingtestsControleren dat verboden inhoud niet in logs terechtkomt.
RetentietestsControleren dat cleanup jobs alleen bedoelde data verwijderen.
ExporttestsControleren dat PDF/downloads geautoriseerd, tijdelijk en geanonimiseerd correct zijn.
SnapshottestsControleren dat snapshots immutable zijn en alleen via anonimiseringsregels wijzigen.
RestoretestsControleren dat herstelprocedures privacy- en anonimiseringsstatus respecteren.
ReadmodeltestsControleren dat caches/readmodels geen oude persoonsgegevens blijven tonen.

25.25 Implementatieverificaties

PuntTe controleren in implementatie
RetentietermijnenDefinitieve termijnen voor technische logs, securitylogs, LiveViewAudit, jobhistorie en ticket snapshots vastleggen.
TickerQ-jobpayloadsControleren dat jobpayloads geen onnodige persoonsgegevens bevatten.
RestoreprocedureTechnische procedure beschrijven voor restore na accountanonimisering.
LoggingproviderVastleggen welke velden standaard worden gescrubd of gemaskeerd.
CSP/securityheadersPrivacy- en securityimpact van externe assets en browserdata controleren tegen de vastgelegde CSP-baseline.
PDF-cleanuptermijnVerifiëren dat 24-uursretentie, 6-uurscleanup en opslag buiten webroot technisch zijn ingericht.
SecurityeventretentieControleren dat securityevents standaard in technische logging blijven en alleen domeineigen persistent worden wanneer hoofdstuk 19 dit toestaat.