Logboek dataverwerkingen

Logius Standaard
Werkversie

Deze versie:
https://logius-standaarden.github.io/logboek-dataverwerkingen/
Laatst gepubliceerde versie:
https://logius-standaarden.github.io/logboek-dataverwerkingen/
Laatste werkversie:
https://logius-standaarden.github.io/logboek-dataverwerkingen/
Redacteurs:
Jeroen Mulder (Ministerie van Binnenlandse Zaken en Koninkrijksrelaties)
Pieter Teekens (Ministerie van Binnenlandse Zaken en Koninkrijksrelaties)
Nil Barua (Logius)
Martin van der Plas (Logius)
Tim van der Lippe (Logius)
Auteurs:
Eelco Hotting (Ministerie van Binnenlandse Zaken en Koninkrijksrelaties)
Vedran Bilanovic (Ministerie van Binnenlandse Zaken en Koninkrijksrelaties)
Doe mee:
GitHub Logius-standaarden/logboek-dataverwerkingen
Dien een melding in
Revisiehistorie
Pull requests

Dit document is ook beschikbaar in dit niet-normatieve formaat: pdf


Context bij de standaard

De overheid wil voor burgers en bedrijven zo transparant mogelijk zijn in de omgang met hun data. Daarom is het bij de informatieverwerking in datasets belangrijk om voor elke mutatie of raadpleging vast te leggen wie deze actie wanneer uitvoert, en waarom. Voor een optimale samenwerking over organisaties en bronnen heen is voor deze logging een algemene standaard nodig.

Transparantie en verantwoording naar burgers is één van de drijfveren voor ontwikkeling van deze logging standaard maar geen onderdeel van de standaard. De standaard richt zich op vastlegging van de logging en deze eenduidige vastlegging maakt het mogelijk om, indien daar later behoefte aan is, inzage mogelijk te maken.

Het project Logboek Dataverwerkingen maakt deel uit van het actieplan Data bij de Bron en onderzoekt met Digilab of we op basis van de tot nu toe opgedane inzichten een overheidsbrede standaard kunnen vaststellen.

Verwijzingen

De Logboek Dataverwerkingen (LDV) standaard bestaat uit de volgende vier documenten:

Beschrijving van het document Gepubliceerde versie Werk versie Repository
1. De LDV Normatieve Standaard - Logboek dataverwerkingen (werkversie) logboek-dataverwerkingen
2. De Algemene Inleiding - De Algemene Inleiding (werkversie) logboek-dataverwerkingen_Inleiding
3. Het Juridische Beleidskader - Juridisch Beleidskader (werkversie) logboek-dataverwerkingen_Juridisch-beleidskader
4. LDV Extensie Guideline - Guideline voor het schrijven van een extensie voor LDV (werkversie) logboek-extensie-template

Status van dit document

Dit is een werkversie die op elk moment kan worden gewijzigd, verwijderd of vervangen door andere documenten. Het is geen door het TO goedgekeurde consultatieversie.

1. Conformiteit

Naast onderdelen die als niet normatief gemarkeerd zijn, zijn ook alle diagrammen, voorbeelden, en noten in dit document niet normatief. Verder is alles in dit document normatief.

De trefwoorden AANBEVOLEN, MAG, MOET en MOETEN in dit document moeten worden geïnterpreteerd als in BCP 14 [RFC2119] [RFC8174] als, en alleen als deze in hoofdletters zijn weergegeven, zoals hier getoond.

2. Feedback en Issues

Dit onderdeel is niet normatief.

We moedigen gebruikers aan om meldingen of suggesties aan te maken via GitHub. Mocht dit niet mogelijk zijn, dan kunt u ook een e-mail sturen naar api@logius.nl.

3. Introductie

3.1 Doelen van de standaard

De standaard Logboek Dataverwerkingen beschrijft een manier om technisch interoperabele functionaliteit voor het loggen van dataverwerkingen te implementeren, door voor de volgende functionaliteit de interface en het gedrag voor te schrijven:

Door Dataverwerkingen te loggen volgens de standaard kunnen organisaties het datagebruik verantwoorden.

3.1.1 Werkingsgebied van de standaard

Functioneel toepassingsgebied: De standaard Logboek Dataverwerkingen kan worden toegepast als data wordt verwerkt in geautomatiseerde systemen. Uitgangspunt is de verantwoordingsplicht van de overheid over de uitvoering van haar taken en de wetten en kaders die daarbij horen.

Organisatorisch werkingsgebied: Nederlandse overheden (Rijk, provincies, gemeenten en waterschappen) en instellingen uit de (semi-) publieke sector.

3.1.2 Doelgroep

De standaard heeft als doelgroep iedereen die zich bezighoudt met het implementeren van logging rond dataverwerkingen en beschrijft alleen wat relevant is voor de implementatie. Alle achterliggende overwegingen zijn te vinden in de Algemene inleiding en het Juridisch Beleidskader.

3.2 Terminologie

De volgende lijst beschrijft terminologie in de betekenis zoals deze wordt gebruikt in dit document.

Actie

Een Dataverwerking bestaat uit één of meerdere kleinere discrete stappen. Een Actie is één discrete stap binnen een Dataverwerking.

Applicatie

Iedere softwaretoepassing waarmee Dataverwerkingen worden uitgevoerd.

Betrokkene

Als gegevens van rechtssubjecten door de overheid worden verwerkt, worden subjecten van wie de organisatie gegevens verwerkt de 'Betrokkene' genoemd. Betrokkenen in het kader van deze standaard kunnen zowel natuurlijke personen als rechtspersonen (bedrijven) zijn die met de verwerkte gegevens geïdentificeerd kunnen worden. Als identificeerbaar wordt beschouwd als een (rechts)persoon die direct of indirect kan worden geïdentificeerd, met name aan de hand van een identificerend gegeven zoals een (bedrijfs)naam, een identificatienummer, locatiedata of van een of meer elementen die kenmerkend zijn voor de fysieke, fysiologische, genetische, psychische, economische, culturele of sociale identiteit van die (rechts)persoon.

Dataverwerking

Iedere bewerking (of ieder geheel van bewerkingen) met betrekking tot gegevens, al dan niet uitgevoerd via geautomatiseerde procedures, zoals het verzamelen, vastleggen, ordenen, structureren, opslaan, bijwerken of wijzigen, opvragen, raadplegen, gebruiken, verstrekken door middel van doorzending, verspreiden of op andere wijze ter beschikking stellen, aligneren of combineren, afschermen, wissen of vernietigen van gegevens wordt opgevat als een Dataverwerking. Iedere Dataverwerking bestaat uit één of meerdere Acties.

Inzage

De Betrokkene heeft het recht om van de Verantwoordelijke uitsluitsel te verkrijgen over het al dan niet verwerken van hem betreffende gegevens en, wanneer dat het geval is, om inzage te verkrijgen van die gegevens. Voor natuurlijke personen sluit dit aan bij hun recht op inzage zoals bedoeld in de AVG, voor rechtspersonen([AVG], art. 15, lid 1). Voor rechtspersonen sluit dit aan bij het recht op transparantie over besluitvorming waar zij bij betrokken zijn. Met Inzage doelen we op de handeling waarmee uitvoering wordt gegeven aan dat recht.

Logboek

Softwaretoepassing waarmee het log van Dataverwerkingen wordt bijgehouden.

Logregel

Resultaat van een enkele gebeurtenis in de logging.

Register

Register waarin statische data over Verwerkingsactiviteiten worden geregistreerd en ter beschikking gesteld.

Trace

Concept waarmee bij elkaar behorende Dataverwerkingen binnen de grenzen van een systeem worden gegroepeerd.

Verwerkingsverantwoordelijke

Een natuurlijke persoon of rechtspersoon, een overheidsinstantie, een dienst of een ander orgaan die/dat, alleen of samen met anderen, het doel van en de middelen voor de verwerking van data vaststelt. Deze definitie is gebaseerd op ([AVG] art. 4, lid 7.), maar laat de verantwoordelijkheid betrekking hebben op de verwerking van álle data, niet alleen persoonsdata.

Noot

In de standaard wordt de Verwerkingsverantwoordelijke aangeduid als de Verantwoordelijke voor de leesbaarheid.

Verwerker

Een natuurlijke persoon of rechtspersoon, een overheidsinstantie, een dienst of een ander orgaan die/dat ten behoeve van de Verwerkingsverantwoordelijke persoonsdata verwerkt. Deze definitie is gebaseerd op ([AVG] art. 4, lid 8.), maar laat de verantwoordelijkheid betrekking hebben op de verwerking van álle data, niet alleen persoonsdata.

Verwerkingsactiviteit

Activiteiten die een organisatie onderkent heeft als activiteiten waarbinnen Dataverwerkingen plaatsvinden.

3.3 Algemene werking van de standaard

Applicaties loggen metadata over Dataverwerkingen in een daarvoor ingerichte softwaretoepassing, het Logboek Dataverwerkingen. Elke Dataverwerking wordt apart gelogd. Dataverwerkingen binnen dezelfde context (bijvoorbeeld een organisatie of een verantwoordelijkheid binnen een organisatie) worden gegroepeerd met behulp van een Trace. Wanneer een Dataverwerking een andere Dataverwerking tot gevolg heeft worden de logregels van beide Dataverwerkingen aan elkaar gelinkt. Statische informatie over Dataverwerkingen kan worden opgezocht in Registers op basis van een verwijzing die in elke logregel wordt opgenomen.

3.3.1 Extensies

De standaard Logboek Dataverwerkingen specificeert de basis voor het loggen en aan elkaar relateren van Dataverwerkingen. Aanvullende functionaliteit wordt gestandaardiseerd in extensies:

  • Extensie Betrokkenen
    Met deze extensie wordt meer precies uitgewerkt hoe de identiteit van een Betrokkene wordt gerelateerd aan een verwerking, zodat actief informeren of het faciliteren van inzageverzoeken gestandaardiseerd mogelijk wordt. Dit is een nadere uitwerking van wat in de kern van de standaard al mogelijk is rond vastlegging van de Betrokkene.

  • Extensie Verwerkte Data
    Deze extensie specificeert een uniforme manier om verwerkte data in logregels op te nemen.

  • Extensie Inzage
    Deze extensie heeft een afhankelijkheid van de extensies Betrokkenen en Verwerkte Data, en biedt een interface op de logs vanuit een bepaald perspectief.

  • Extensie (geo)objecten
    Deze extensie specificeert hoe dataverwerkingen voor objecten kunnen worden vastgelegd en beheerd in een logboek.

3.3.2 Profielen

In een profiel worden aanvullende beperkingen en verplichtingen vastgelegd over het gebruik van de standaard. Op deze manier kan een groep organisaties interoperabiliteit organiseren. Voorbeelden van aanvullende afspraken in een profiel zijn:

  • De combinatie van extensies die gebruikt wordt
  • Afspraken over specifieke aanvullende eisen (bijvoorbeeld over TLS configuratie)
  • Afspraken over data-retentie
  • De wijze waarop pseudonimisering van persoonsdata plaatsvindt

3.3.3 Use case

Een typische use case voor het gebruik van de standaard is een samenwerking tussen meerdere organisaties die interoperabiliteit willen bereiken bij het loggen van Dataverwerkingen, om zo op eenduidige manier te kunnen verantwoorden over de dataverwerking.

4. Architectuur

Deze sectie beschrijft de algemene architectuur voor het loggen van dataverwerkingen bij toepassing van deze standaard.

4.1 Context

Op hoog abstractieniveau zijn voor het begrijpen van deze standaard de volgende componenten te onderscheiden:

Applicaties schrijven logs over Dataverwerkingen weg in een Logboek. Logregels in het Logboek verwijzen naar nadere informatie in een Register.

Een Dataverwerking kan plaatsvinden over de grenzen van een verantwoordelijkheid. In dat geval roept een Applicatie van Verantwoordelijke A de Applicatie van Verantwoordelijke B aan. Denk bijvoorbeeld aan het bevragen of muteren van data via een Application Programming Interface (API).

Een Verantwoordelijke is bijvoorbeeld een organisatie, maar kan ook bestaan uit meerdere organisaties die allemaal onder dezelfde Verantwoordelijke werk uitvoeren. Denk daarbij aan Verwerkers in het kader van de AVG.

Iedere Verantwoordelijke kan een veelheid aan Applicaties, Logboeken en Registers gebruiken. Iedere Verantwoordelijke houdt alleen Logregels bij over eigen Dataverwerkingen. Op basis van metadata die tussen Applicaties wordt uitgewisseld is het mogelijk om bij elkaar behorende Logregels in meerdere Logboeken aan elkaar te relateren.

Registers bevatten statische informatie waar vanuit Logregels naar verwezen kan worden voor extra informatie over een Dataverwerking.

architecture
Figuur 1 Componenten in context

De standaard beschrijft de interfaces (in het diagram aangeduid met groene lijnen), en het gedrag van de componenten voor zover relevant om technisch interoperabel te worden.

De relatie tussen Logboek en Registers is los. Een Register hoeft niet digitaal te bestaan, wel moet een relatie gelegd kunnen worden vanuit de logregels in het Logboek naar aanvullende data in Registers die de Logregels van nedere context voorzien.

4.2 Componenten

4.2.1 Applicatie

Een Applicatie is een softwarecomponent of groep van softwarecomponenten waarmee een Dataverwerking wordt uitgevoerd. Een Applicatie kan in allerlei vormen voorkomen. Voor de architectuur is niet relevant welke vorm de Applicatie heeft, het is slechts relevant dat dit de component is waar een Dataverwerking wordt uitgevoerd.

In een Applicatie is de context van de Dataverwerking bekend, zoals welke Verwerkingsactiviteit wordt uitgevoerd met de Dataverwerking. Het is dan ook de Applicatie die het loggen van de Dataverwerking initiëert.

4.2.2 Logboek

Een Logboek is een Applicatie met een specifieke rol in de context van deze standaard. In het Logboek worden Dataverwerkingen gelogd.

Dataverwerkingen in het Logboek zelf worden niet gelogd in een Logboek Dataverwerkingen, dit zou een oneindige recursiviteit veroorzaken.

4.2.3 Register

Een Register bevat statische informatie over Dataverwerkingen. Elk record in een Register heeft een unieke identificatiecode waarmee de Verwerkingsactiviteit kan worden aangeduid. Deze identificatiecode wordt gebruikt om vanuit een Logregel te linken naar aanvullende informatie in een Register.

Het Register kan een Applicatie zijn, in dat geval is het een Applicatie met een specifieke rol in de context van deze standaard. Eventueel kan het ook een Register in de vorm van een document zijn.

Dataverwerkingen in het Register worden gelogd in een Logboek Dataverwerkingen.

Voor alle Dataverwerkingen waarbij persoonsdata worden verwerkt is wettelijk geregeld dat de Verwerkingsactiviteiten moeten worden beschreven in het zogenaamde Register van Verwerkingsactiviteiten (AVG art. 30). Dit Register wordt verondersteld aanwezig te zijn in iedere organisatie die de standaard Logboek Dataverwerkingen toepast.

Verwerkingsactiviteiten waarin geen persoonsdata worden verwerkt staan niet verplicht in het Register van Verwerkingsactiviteiten. De standaard laat ruimte om dit op te lossen naar eigen voorkeur:

  • In het bestaande Register ook Verwerkingsactiviteiten opnemen zonder persoonsdata, al is dit niet wettelijk verplicht
  • Zelf een ander Register opzetten met gelijke interface maar specifiek voor Verwerkingsactiviteiten zonder persoonsdata

Het is daarnaast ook mogelijk om Registers te gebruiken met heel andere statische informatie die meer context geeft over een Logregel, bijv. informatie over de gebruikte beslisregels of van toepassing zijnde normen. Dit wordt niet verder uitgewerkt.

4.3 Scope

In deze sectie wordt de scope van de standaard afgebakend.

4.3.1 Vastlegging door Verantwoordelijke

Voor een juiste toepassing van de standaard is het nodig om strict de grenzen aan te houden die passen bij de Verantwoording die een Verantwoordelijke af moet kunnen leggen. Het wordt AANBEVOLEN om alle Dataverwerkingen te loggen alsof zij persoonsdata bevatten, ook wanneer de Dataverwerking geen persoonsdata betreft. Dit omdat het wettelijk kader dat leidt tot verantwoordingsplicht breder is dan alleen de AVG. Logregels kunnen ook worden gebruikt voor bijvoorbeeld het verantwoorden welke data gebruikt zijn bij het nemen van een besluit.

Belangrijk uitgangspunt is dat een Verantwoordelijke alleen Logregels bijhoudt voor Dataverwerkingen die onder eigen verantwoordelijkheid plaatsvinden.

Een zogenaamde Verwerker die Dataverwerkingen uitvoert in opdracht van een Verantwoordelijke wordt in deze standaard beschouwd als deel van de Verantwoordelijke. Van welke Logboeken en Registers een Verwerker gebruik maakt is een implementatiekeuze.

4.3.2 Geen inhoudelijke uitwisseling tussen Verantwoordelijken

Er wordt met de standaard geen inhoudelijke informatie over Dataverwerkingen uitgewisseld tussen Verantwoordelijken. Dit is niet nodig, aangezien iedere Verantwoordelijke alleen Logregels over eigen Dataverwerkingen vastlegt. De informatie die wordt uitgewisseld is beperkt tot zogenaamde Trace-informatie waarmee Logregels van de ene Verantwoordelijke gerelateerd kunnen worden aan Logregels bij de andere Verantwoordelijke.

architecture
Figuur 2 Context Dataverwerking meegeven over Grenzen

4.3.3 Geen specificatie voor het beheren van Logboeken

De standaard specificeert een interface voor het wegschrijven van Logregels. Dit is het deel dat in alle organisaties hetzelfde moet zijn om interoperabel te zijn. Het beheren van een Logboek is vrij in te vullen per implementatie.

Dit betekent o.a. dat de standaard geen gedrag of interfaces specificeert voor:

  • het verwijderen of muteren van Logregels
  • het regelen van toegang tot het Logboek
  • het regelen van duurzame toegankelijkheid
  • het regelen van archivering en verwijdering van Logregels

4.3.4 Geen data over gebruikers in Logregels

In Logregels ligt geen informatie vast over welke specifieke medewerker van de Verantwoordelijke ofwel de gebruiker de Dataverwerking heeft uitgevoerd. Deze informatie hoort niet in het Logboek maar in een auditlog, en is daarmee buiten scope van de standaard. Wel is het mogelijk om vanuit auditlogs de relatie te leggen naar specifieke Logregels in het Logboek. (toevoegen link naar Algemene inleiding, besluit over gebruikers)

4.4 Flows

4.4.1 Wegschrijven van een logregel na een Dataverwerking

Deze transactie is geoptimaliseerd op eenvoud en snelheid, want deze heeft rechtstreeks invloed op de snelheid van Dataverwerkingen. Deze transactie moet schaalbaar zijn naar bijv. honderdduizenden transacties per seconde, o.a. omdat wanneer bij een enkele Dataverwerking meerdere Betrokkenen gerelateerd zijn, voor elk van deze Betrokkenen een logregel wordt weggeschreven.

4.4.2 Tonen van informatie over een Dataverwerking

Voor het op betekenisvolle manier tonen van informatie over Dataverwerkingen aan bijvoorbeeld een Betrokkene is het nodig om data op te vragen uit zowel het Logboek als het Register. Deze flow mag wat complexer zijn, omdat deze niet voor alle vastgelegde data wordt uitgevoerd en het belang van de bevraging rechtvaardigt dat een bevraging wat langer kan duren.

5. Specificaties

Deze sectie geeft de specificatie voor de te gebruiken protocollen en interfaces en het verwachte gedrag van de componenten.

5.1 Protocollen

De protocollen die worden gebruikt tussen applicatie en logboek en voor het uitvoeren van transacties tussen applicaties worden niet voorgeschreven in de standaard.

Noot

Let wel, met "de protocollen" bedoelen we de manier van afleveren van berichten tussen de componenten. Deze standaard beschrijft wel degelijk interfaces van de berichten zelf waar de componenten aan MOETEN voldoen, met als doel interopabiliteit tussen functionaliteit van componenten. De standaard laat vrij hoe die informatie tussen componenten wordt doorgegeven, omdat dat afhangt van de technische/architecturele keuzes die software ontwikkelaars maken. Dit biedt de vrijheid om de standaard toe te voegen aan vrijwel iedere softwareoplossing.

Het is AANBEVOLEN om het OpenTelemetry Protocol (OTLP) te gebruiken in de interactie tussen Applicatie en Logboek.

Noot

OpenTelemetry is een standaard en open source framework voor het beheren, genereren, verzamelen en exporteren van telemetriedata. Door het gebruik van deze open standaard kunnen leverancierspecifieke integraties voorkomen worden. OpenTelemetry is een CNCF incubating project.

Als gebruik wordt gemaakt van HTTP/1.1 [RFC9112] of HTTP/2 [RFC9113] voor het uitvoeren van dataverwerkingen in meerdere applicaties MOET gebruik worden gemaakt van de Trace Context specificatie voor het uitwisselen van metadata over Traces.

5.2 Component: Logboek

Voor ieder Logboek waarin Dataverwerkingen worden gelogd gelden de volgende specificaties voor gedrag en interface.

5.2.1 Gedrag

Het Logboek MOET TLS afdwingen op connecties volgens de binnen de organisatie gangbare standaard.

Het Logboek MOET het wegschrijven van elke logregel bevestigen.

5.2.2 Interface

De interface MOET de volgende velden implementeren:

Veld Type optioneel Omschrijving
trace_id 16 byte verplicht Unieke identificerende code van Trace die Dataverwerking volgt
span_id 8 byte verplicht Unieke identificerende code van Actie binnen de Dataverwerking
status_code enum verplicht Status van de Actie
name string verplicht Naam van de specifieke Actie binnen de Dataverwerking
start_time timestamp (ms) verplicht Tijdstip waarop de Actie gestart is
end_time timestamp (ms) verplicht Tijdstip waarop de Actie beëindigd is
parent_span_id 8 byte optioneel Unieke identificerende code aanroepende Actie binnen huidige Trace
foreign_operation message optioneel Unieke identificerende code aanroepende Actie bij externe partij
resource message optioneel Zie toelichting hieronder
attributes list verplicht Verplichte key-value pairs

Het veld span_id is in implementaties voor logging.

Het veld status_code is een enumeratie die de volgende waarden kan bevatten:

  • 0: STATUS_CODE_UNKNOWN:
  • 1: STATUS_CODE_OK:
  • 2: STATUS_CODE_ERROR:

Het veld foreign_operation is een message, opgebouwd uit de volgende velden:

Veld Type optioneel Omschrijving
trace_id 16 byte verplicht Unieke identificerende code van Trace bij externe partij
span_id 8 byte verplicht Unieke identificerende code van de Actie bij externe partij
entity URI verplicht URI verwijzend naar externe partij

Deze velden worden optioneel aangeboden door een aanroepende Applicatie, zie de specificatie van het gedrag van Applicaties.

Het veld resource is een bericht, opgebouwd uit het volgende veld:

  • attributes: Lijst attributen in de vorm van KeyValue pairs. De organisatie kan deze lijst gebruiken om een systeem, applicatie of component aan te duiden op een manier die binnen de organisatie gebruikelijk is. Dit zijn bijvoorbeeld naam en versienummer van een applicatie, of een verwijzing naar een record in een CMDB.

Het veld attributes is een lijst van key-value pairs, in een namespace met prefix dpl. (data processing log). De volgende attributen zijn mogelijk in de namespace core:

  • dpl.core.processing_activity_id: URI; Verwijzing naar Register met meer informatie over de Verwerkingsactiviteit
  • dpl.core.data_subject_id: Unieke identificerende code van de Betrokkene; versleuteld. Hiermee wordt aangeduid welke persoon Betrokkene is bij de verwerking, gelet op de AVG.
  • dpl.core.data_subject_id_type: Type van het veld data_subject_id. Dit is bijvoorbeeld BSN, Personeelsnummer of Vreemdelingennummer, of een URI naar een Register waar het veld meer precies wordt geduid.

5.3 Component: Applicatie

Voor iedere Applicatie waarin Dataverwerkingen plaatsvinden gelden de volgende specificaties voor gedrag.

5.3.1 Gedrag

Het gespecificeerde gedrag van Applicaties is erop gericht om de interface van het Logboek te gebruiken. Voor alle metadata geldt dat de specificatie te vinden is in de interface van het Logboek.

De Applicatie MOET een nieuwe Trace met een uniek trace_id starten voor iedere nieuwe Dataverwerking. In een Trace wordt de metadata bijgehouden die nodig is om de interface van een Logboek te gebruiken.

Een Dataverwerking kan uit meerdere acties bestaan. De applicatie MOET een voor iedere nieuwe actie een unieke span_id bijhouden. Iedere Trace heeft tenminste één span_id.

Wanneer een actie binnen een Applicatie is gestart door een andere actie, dan MOET de Applicatie de trace_id ongewijzigd overnemen en de span_id opnemen in een veld genaamd parent_span_id voor deze nieuwe actie.

Als een Dataverwerking meerdere Betrokkenen heeft dan MOET de applicatie voor iedere Betrokkene een aparte logregel wegschrijven. Een logregel kan naar 0 of 1 Betrokkenen verwijzen.

De Applicatie MOET voor iedere actie (span_id) een logregel wegschrijven via de interface van het Logboek.

De Applicatie MOET bijhouden of een actie geslaagd of mislukt is en dit per Dataverwerking als status (status_code) meegeven in de Logregel.

Als de Applicatie een verzoek van een andere Applicatie kan ontvangen, MOET de Applicatie metadata volgens de W3C Trace Context standaard kunnen verwerken en gebruiken in de eigen Trace(s). Metadata verkregen via W3C Trace Context MOET als foreign_operation worden opgenomen in de Logregel.

Als de Applicatie een verzoek aan een andere Applicatie kan versturen, MOET de Applicatie metadata volgens de W3C Trace Context standaard meegeven aan dit verzoek.

De Applicatie MAG NIET gebruik maken van Log Sampling.

5.3.1.1 Loggen van Dataverwerkingen met persoonsdata

Voor iedere Betrokkene moet iedere Dataverwerking apart gelogd worden. De Applicatie MOET in elke Logregel een identificerende code van de Betrokkene opnemen in dpl.core.data_subject_id en aan te duiden welk soort identificerende code wordt gebruikt in dpl.core.data_subject_id_type. Het wordt AANBEVOLEN om de identificerende code te pseudonimiseren.

Wanneer een enkele Dataverwerking meerdere Betrokkenen heeft, MOET de Applicatie voor elke Betrokkene een nieuwe actie met unieke span_id starten en deze onder de reeds bekende actie voegen door het span_id daarvan op te nemen als parent_span_id in de nieuwe actie. Voor iedere betrokkene wordt een child operation bijgehouden.

Let op: het kan zijn dat pas na een antwoord van een externe Applicatie bekend is dat er meerdere Betrokkenen zijn bij een Dataverwerking, in dat geval moeten na ontvangst van het antwoord de nieuwe acties ten behoeve van correcte logging gestart worden.

Iedere Dataverwerking van persoonsdata betreft een Verwerkingsactiviteit die in het Register van Verwerkingsactiviteiten moet zijn opgenomen. De Applicatie MOET in de Logregel een verwijzing naar de juiste Verwerkingsactiviteit in het Register van Verwerkingsactiviteiten opnemen in het veld dpl.core.processing_activity_id.

5.3.1.2 Loggen van Dataverwerkingen zonder data

Dataverwerkingen zonder persoonsdata zijn over het algemeen niet als Verwerkingsactiviteit opgenomen in het Register van Verwerkingsactiviteiten. Het wordt aanbevolen om wel een soortgelijk register bij te houden voor alle Dataverwerkingen zonder persoonsdata.

Het wordt AANBEVOLEN dat de Applicatie in de Logregel een verwijzing naar de juiste Verwerkingsactiviteit in een daarvoor aan te wijzen Register opneemt in het veld dpl.core.processing_activity_id.

5.4 Component: Register

Voor ieder Register met statische data over Dataverwerkingen gelden de volgende specificaties voor het gedrag en de interface.

5.4.1 Gedrag

Het Register MOET iedere relevante wijziging van een Verwerkingsactiviteit opslaan met een nieuwe identifier, zodat de dpl.core.processing_activity_id naar een eenduidige versie van de verwerkingsactiviteit verwijst.

5.4.2 Interface

Voor de werking van het Logboek is het niet nodig de Registers te ontsluiten met een API. Wel moeten de Verwerkingsactiviteiten die gebruikt worden in de logregels ook voorkomen in een register. Wanneer bij het raadplegen van de logregels geautomatiseerd context aan de logregels moet worden gegeven is een read-only interface op het Register nodig. Deze interface wordt hieronder gespecificeerd.

Nog uitwerken, REST API, Read-only OpenAPI 3 specificatie.

6. Volwassenheidsniveaus

Logging kan op verschillende Volwassenheidsniveaus: hoe hoger het volwassenheidsniveau, hoe gedetailleerder er wordt gelogd.

6.1 Definities van niveaus

We maken drie verschillende niveaus op. Ter verduidelijking van elk niveau gebruiken we een niet-normatief voorbeeld van het opvragen van informatie over een auto.

6.1.1 Niveau 1: registerverwijzing

Op het laagste niveau wordt er enkel naar het Register verwezen. Dit betekent dat de Logregel enkel de referentie naar het register bevat. Hieruit kan worden opgemaakt welke potentiële data is verwerkt, maar hiermee kan niet worden herleid welke data is verwerkt op basis van enkel de Logregel. Dit kan wel op basis van de verwerkingsactiviteit ID.

Voorbeeld referentie: er is informatie over het bezit van een auto opgevraagd. Dit register bevat informatie zoals BSN, Adres, Kenteken, Lease-contract, APK gekeurd. Er wordt hier niet verder gespecificeerd welke categorieën van informatie zijn opgevraagd. De Logregel bevat dus "Bezit van auto opgevraagd uit RDW-register: verwerkingsactiviteit ID <<UUID>>"

6.1.2 Niveau 2: kolomverwijzing

Op dit niveau wordt er zowel naar het betreffende Register verwezen alsmede de specifieke categorieën van data die zijn verwerkt. Hieruit kan dus worden opgemaakt welke specifieke categorieën van data zijn verwerkt, maar kan er niet worden herleid wat de waarde van de data is tijdens het loggen.

Voorbeeld referentie: er is informatie over het bezit van een auto opgevraagd. Dit register bevat informatie zoals BSN, Adres, Kenteken, Lease-contract, APK gekeurd. De Dataverwerking betrof het BSN, Kenteken en APK gekeurd. Omdat de overige categorien niet werden gebruikt, zijn die ook niet gelogd. De Logregel bevat dus "Bezit van auto opgevraagd uit RDW-register: BSN, Kenteken, APK gekeurd, verwerkingsactiviteit ID <<UUID>>"

6.1.3 Niveau 3: concrete data

Op het hoogste niveau wordt alle data in de Logregel gezet. Dit betekent dat alle relevante categorieën uit het Register met bijbehorende concrete data worden gelogd. Op dit niveau kan de gehele Dataverwerking worden gereconstrueerd.

Voorbeeld referentie: er is informatie over het bezit van een auto opgevraagd. Dit register bevat informatie zoals BSN, Adres, Kenteken, Lease-contract, APK gekeurd. De Dataverwerking bevat de BSN, Kenteken en APK gekeurd met specifieke data. De Logregel bevat dus "Bezit van auto opgevraagd uit RDW-register: BSN 1234, Kenteken 1-ABC-23, APK gekeurd: ja, verwerkingsactiviteit ID <<UUID>>"

6.2 Implicaties van niveaus

Hoe hoger het niveau, hoe bruikbaarder de data is die uit het Logboek kan worden opgemaakt. Echter, de consequenties van een hoger niveau brengen ook lastigere vraagstukken met zich mee omtrent schaalbaarheid en technische haalbaarheid. Als voor elke Dataverwerking alle informatie wordt gelogd, dan kan dat problemen opleveren voor de hoeveelheid data en ook of het doenlijk is om de data te verwijderen als de Betrokkene daar om vraagt.

Tegelijkertijd is het laagste niveau van logging niet per definitie voldoende om de vereiste verantwoordelijkheid af te kunnen leggen. Dit hangt af van de situatie en de wettelijke bepalingen die verbonden zijn aan een Dataverwerking. Daarom is het van belang dat bij elke dataverwerking er wordt gekeken welk niveau van toepassing is, in plaats van een generiek niveau voor alle dataverwerkingen te bepalen. Hierbij is het niet noodzakelijk dat altijd het meest gedetailleerde niveau wordt gekozen.

Noot

Op dit moment is de standaard geschikt voor implementaties van volwassenheidsniveau 1. De uitwerking van volwassenheidsniveau 2 en 3 worden op dit moment uitgeprobeerd in een project van Geonovum waarbij een extensie voor object wordt beschreven. Volwassenheidsniveau 3 is vanwege technische limitaties nog niet aan te raden, omdat dit verder wordt uitgewerkt op basis van de bevindingen voor niveau 2.

7. Lijst met figuren

A. Index

A.1 Begrippen gedefinieerd door deze specificatie

A.2 Begrippen gedefinieerd door verwijzing

B. Referenties

B.1 Normatieve referenties

[AVG]
Algemene Verordening Gegevensbescherming. Verordening (EU) 2016/679 van het Europees Parlement. 27 april 2016. URL: https://eur-lex.europa.eu/legal-content/NL/TXT/?uri=CELEX%3A32016R0679
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[RFC9112]
HTTP/1.1. R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed. IETF. June 2022. Internet Standard. URL: https://httpwg.org/specs/rfc9112.html
[RFC9113]
HTTP/2. M. Thomson, Ed.; C. Benfield, Ed. IETF. June 2022. Proposed Standard. URL: https://httpwg.org/specs/rfc9113.html
[trace-context-1]
Trace Context. Sergey Kanzhelev; Morgan McLean; Alois Reitbauer; Bogdan Drutu; Nik Molnar; Yuri Shkuro. W3C. 23 November 2021. W3C Recommendation. URL: https://www.w3.org/TR/trace-context-1/
Logius Standaard - Werkversie