Dit document is ook beschikbaar in dit niet-normatieve formaat: pdf
Dit document valt onder de volgende licentie:
Creative Commons Attribution 4.0 International Public License
De overheid wil voor burgers en bedrijven zo transparant mogelijk zijn in de omgang met hun gegevens. 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. Deze herleidbaarheid speelt zowel een rol in het kader van de wetgeving op het gebied van privacy als ook het streven naar openheid en transparantie bij de overheid. Voor een optimale samenwerking over organisaties en bronnen heen is voor deze logging een algemene standaard nodig.
Het project Logboek Dataverwerkingen (voorheen: Verwerkingenlogging) maakt deel uit van het actieplan Data bij de Bron en onderzoekt met Digilab in samenwerking met diverse overheidspartijen (ministeries, uitvoeringsorganisaties en gemeentes) of we op basis van de tot nu toe opgedane inzichten een overheidsbrede standaard kunnen vaststellen. Na het succesvol beproeven van de standaard wordt deze voorgesteld voor opname in de ‘Pas toe of leg uit’-lijst van het Forum voor Standaardisatie.
bron: Digitale overheid.nl
De Logboek Dataverwerkingen (LDV) standaard bestaat uit de volgende drie 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 |
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.
Deze sectie geeft een introductie op de standaard. Sectie 2 beschrijft de architectuur van systemen die de standaard gebruiken. Sectie 3 beschrijft de interfaces en het gedrag van componenten die de standaard volgen in detail. Sectie 4 beschrijft een optionele extensie waarmee de interface van externe registers wordt gestandaardiseerd.
Sectie 5 is tijdelijk en geeft een lijst achterliggende besluiten bij 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. De standaard is gericht op verantwoording van Dataverwerkingen door Nederlandse (overheids)organisaties, gelet op onder meer de Algemene Verordening Gegevensbescherming en de Algemene Wet Bestuursrecht.
Functioneel toepassingsgebied: De standaard Logboek Dataverwerkingen kan worden toegepast als data wordt verwerkt in overheidssystemen. 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.
De standaard heeft als doelgroep iedereen die zich bezig houdt 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.
De volgende lijst beschrijft terminologie in de betekenis zoals deze wordt gebruikt in dit document.
Applicatie
Iedere softwaretoepassing waarmee dataverwerkingen worden uitgevoerd.
Betrokkene
Als persoonsgegevens worden verwerkt, wordt de persoon van wie de organisatie persoonsgegevens verwerkt de 'Betrokkene' genoemd. Dat is dus degene over wie de dataverwerking gaat. De Betrokkene is degene op wie een persoonsgegeven betrekking heeft en die daarmee geïdentificeerd kan worden. Als identificeerbaar wordt beschouwd een natuurlijke persoon die direct of indirect kan worden geïdentificeerd, met name aan de hand van een identificator zoals een naam, een identificatienummer, locatiegegevens, een online identificator of van een of meer elementen die kenmerkend zijn voor de fysieke, fysiologische, genetische, psychische, economische, culturele of sociale identiteit van die natuurlijke persoon [NORA: De Privacy Baseline/Persoonsgegevens en bijzondere persoonsgegevens]
Dataverwerking
Aansluitend bij de Algemene Verordening Gegevensbescherming (art. 4 lid 2), maar breder toegepast dan alleen persoonsgegevens, wordt voor deze standaard ‘elke bewerking of elk 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’ opgevat als een dataverwerking.
Inzage
De Betrokkene heeft het recht om van de verwerkingsverantwoordelijke
uitsluitsel te verkrijgen over het al dan niet verwerken van hem betreffende persoonsgegevens en, wanneer dat het geval is, om inzage te verkrijgen van die persoonsgegevens ([AVG], art. 15, lid 1). Met Inzage doelen we op de handeling waarmee uitvoering wordt gegeven aan dat recht.
Logboek
Softwaretoepassing waarmee het log van Dataverwerkingen
wordt bijgehouden.
Operatie
--nog definiëren--
Register
Register waarin statische gegevens over Verwerkingsactiviteiten
worden geregistreerd en ter beschikking gesteld, zoals het Register van Verwerkingsactiviteiten
uit [AVG] art. 30.
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 persoonsgegevens vaststelt ([AVG] art. 4, lid 7.)
Verwerkingsactiviteit
Verwerkingsactiviteiten
zijn de activiteiten die een organisatie onderkent heeft als activiteiten waarbinnen Dataverwerkingen
plaatsvinden.
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 Dataverwerkingen
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.
De standaard Logboek Dataverwerkingen
specificeert de basis voor het loggen en aan elkaar relateren van Dataverwerkingen
.
Het standaardiseren van aanvullende functionaliteit wordt gedaan met behulp van extensies
:
-- NB. De scope van onderstaande extensies is nog onderwerp van gesprek. --
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 meest basale variant 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 Manipulatiebestendigheid
Deze extensie beschrijft hoe Logboeken zodanig kunnen worden ingericht dat manipulatie van de Logregels kan worden aangetoond,
en hierover zinnige uitspraken kunnen worden gedaan wanneer de Logregels van meerdere organisaties aan elkaar worden gerelateerd.
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:
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.
Deze sectie beschrijft de algemene architectuur voor het loggen van dataverwerkingen bij toepassing van deze standaard.
Op hoog abstractieniveau zijn voor het begrijpen van deze standaard de volgende componenten te onderscheiden:
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 gegevens via een 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 gebruiken.
Applicaties schrijven logs over Dataverwerkingen weg in een Logboek. Logregels in het Logboek verwijzen naar nadere informatie in een Register. Iedere Verantwoordelijke houdt alleen logs 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.
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 Register heeft geen technische interface, wel moet een relatie gelegd kunnen worden tussen de logregels in het Logboek en de Verwerkingsactiviteiten in het Register.
Een Applicatie
is een software component of groep van software componenten 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.
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.
Een Register
bevat statische informatie over Verwerkingsactiviteiten die voorkomen bij een Verantwoordelijke. Elke Verwerkingsactiveit heeft een unieke code waarmee de Verwerkingsactiviteit kan worden aangeduid. Deze code wordt gebruikt om logregels te relateren aan een Verwerkingsactiviteit.
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. Bijvoorbeeld: het toevoegen van een Verwerkingsactiviteit of een Verantwoordelijke.
Voor alle Dataverwerkingen waarbij persoonsgegevens worden verwerkt is wettelijk geregeld dat de Verwerkingsactiviteiten moeten worden beschreven in het zogenaamde Register van Verwerkingsactiviteiten (AVG art. 30). Vanwege deze wettelijke plicht zal dit Register in veel organisaties beschikbaar zijn.
-- Uitwerken --
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.
Voor het op betekenisvolle manier tonen van informatie over Dataverwerkingen aan bijvoorbeeld een Betrokkene is het nodig om gegevens 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.
Deze sectie geeft de specificatie voor de te gebruiken protocollen en interfaces en het verwachte gedrag van de componenten.
De protocollen die worden gebruikt tussen applicatie en logboek en voor het uitvoeren van transacties tussen applicaties worden niet voorgeschreven in de standaard. 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.
OpenTelemetry is een open source framework voor het beheren, genereren, verzamelen en exporteren van telemetriegegevens. Door het gebruik van deze open standaard kunnen leverancierspecifieke integraties voorkomen worden.
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 context informatie.
Voor ieder Logboek waarin dataverwerkingen worden gelogd gelden de volgende specificaties voor gedrag en interface.
Het Logboek MOET TLS afdwingen op connecties volgens de binnen de organisatie gangbare standaard.
Het Logboek MOET het wegschrijven van elke logregel bevestigen.
De interface MOET de volgende velden implementeren:
Veld | Type | optioneel | Omschrijving |
---|---|---|---|
trace_id |
16 byte | verplicht | Uniek ID van Trace, een groep bij elkaar behorende Dataverwerkingen |
operation_id |
8 byte | verplicht | Uniek ID van de Dataverwerking |
status_code |
enum | verplicht | Status van de Dataverwerking |
name |
string | verplicht | Naam van de specifieke operatie binnen de Dataverwerking |
start_time |
timestamp (ms) | verplicht | Tijdstip waarop de Dataverwerking gestart is |
end_time |
timestamp (ms) | verplicht | Tijdstip waarop de Dataverwerking beëindigd is |
parent_operation_id |
8 byte | optioneel | ID van aanroepende Dataverwerking binnen de huidige Verwerkingsactiviteit |
foreign_operation |
message | optioneel | |
resource |
message | optioneel | |
attributes |
list | verplicht | Verplichte key-value pairs |
Het veld status_code
is een enumeratie die de volgende waarden kan bevatten:
Het veld foreign_operation
is een message
, opgebouwd uit de volgende velden:
Veld | Type | optioneel | Omschrijving |
---|---|---|---|
trace_id |
16 byte | verplicht | Uniek ID van Trace bij externe partij |
operation_id |
8 byte | verplicht | Uniek ID van de Dataverwerking bij externe partij |
entity |
URI | verplicht | URI verwijzend naar externe partij |
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 verwerkingsactiviteitdpl.core.data_subject_id
: ID van de Betrokkene; versleuteld. Dit is bijvoorbeeld een BSN
of Vreemdelingennummer
waarmee wordt aangeduid welke persoon Betrokkene is bij de verwerking, gelet op de AVG.Voor iedere applicatie waarin dataverwerkingen plaatsvinden die gelogd moeten worden gelden de volgende specificaties voor het gedrag.
De applicatie MOET een Trace starten voor iedere Dataverwerking waarvan nog geen Trace bekend is.
De applicatie MOET voor iedere Dataverwerking een logregel wegschrijven in een Logboek. Log Sampling is niet toegestaan.
De applicatie MOET bijhouden of een Dataverwerking geslaagd of mislukt is en dit per Dataverwerking als status meegeven aan het Logboek.
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.
Als een applicatie aangeroepen kan worden vanuit een andere applicatie MOET de applicatie Trace Context metadata accepteren bij een dergelijke aanroepen deze metadata kunnen omzetten naar een foreign_operation
bericht.
De Applicatie heeft geen voor deze standaard relevante interface. Voor het uitwisselen van de Trace wordt W3C Trace Context gebruikt.
Voor ieder register met statische gegevens over dataverwerkingen die gelogd moeten worden gelden de volgende specificaties voor het gedrag en de interface.
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.
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.
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 en MOET 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.
Referenced in: