Logboek dataverwerkingen

Logius Standaard
Werkversie

Deze versie:
https://logius-standaarden.github.io/logboek-dataverwerkingen/
Laatst gepubliceerde versie:
https://gitdocumentatie.logius.nl/publicatie/api/logboek-dataverwerkingen/
Laatste werkversie:
https://logius-standaarden.github.io/logboek-dataverwerkingen/
Redacteurs:
Jeroen Mulder (Ministerie van Binnenlandse Zaken en Koninkrijksrelaties)
Pieter Teekens (Ministerie van Binnelandse Zaken en Koninkrijksrelaties)
Nil Barua (Logius)
Martin van der Plas (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


Samenvatting

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

Verwijzingen

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

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. Introductie

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.

1.1 Doel

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.

1.1.1 Werkingsgebied

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.

1.1.2 Doelgroep

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.

1.2 Terminologie

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.

1.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 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.

1.3.1 Extensies

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.

1.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 persoonsgegevens plaatsvindt

1.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.

2. Architectuur

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

2.1 Context

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.

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 Register heeft geen technische interface, wel moet een relatie gelegd kunnen worden tussen de logregels in het Logboek en de Verwerkingsactiviteiten in het Register.

2.2 Componenten

2.2.1 Applicatie

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.

2.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.

2.2.3 Register

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.

2.3 Verantwoordelijkheden

2.3.1 Grenzen

architecture
Figuur 2 Context Dataverwerking meegeven over Grenzen

-- Uitwerken --

2.4 Flows

2.4.1 Wegschrijven van een logregel na een Dataverwerking

ApplicatieLogboekDataverwerking in ApplicatieSchrijf logregel in LogboekackApplicatieLogboek

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.

2.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 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.

Inzage ApplicatieLogboekRegisterBetrokkene vraagt om inzageVraag logregels van BetrokkenelogregelsVraag Verwerkingsactiviteiten bij logregelsverwerkingsactiviteitenCombineeerInzage ApplicatieLogboekRegister

3. Specificaties

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

3.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. 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.

3.2 Component: Logboek

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

3.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.

3.2.2 Interface

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:

  • 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 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 verwerkingsactiviteit
  • dpl.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.

3.3 Component: Applicatie

Voor iedere applicatie waarin dataverwerkingen plaatsvinden die gelogd moeten worden gelden de volgende specificaties voor het gedrag.

3.3.1 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.

3.3.2 Interface

De Applicatie heeft geen voor deze standaard relevante interface. Voor het uitwisselen van de Trace wordt W3C Trace Context gebruikt.

3.4 Component: Register

Voor ieder register met statische gegevens over dataverwerkingen die gelogd moeten worden gelden de volgende specificaties voor het gedrag en de interface.

3.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.

3.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.

4. 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 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.

5. 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
Logius Standaard - Werkversie