Gedeelde basis voor de AVG-packages
Levert de tamper-evident hash-keten, de anonimisatie-strategieën en de contracten waarop de andere AVG-packages bouwen. Zelf geen AVG-controle, maar de fundering eronder.
Installation
composer require ginkelsoft/laravel-compliance-coreEen fundament, geen functie
Dit package doet in zijn eentje niets aan de AVG. Het is bewust leeg op dat punt. Wat het wel bevat is de fundering waar de rest van de GinkelSoft AVG-familie op staat: de hash-keten die logboeken onveranderlijk maakt, de strategieën om persoonsgegevens te anonimiseren, en de contracten die de losse packages met elkaar laten rijmen.
Toen de familie groeide van één naar vijf controles, bleek dat ze allemaal op precies dezelfde basis leunden. Die basis vijf keer kopiëren betekent vijf keer dezelfde fout kunnen maken en vijf keer een beveiligingspatch moeten uitrollen. Daarom woont die basis nu op één plek, hier, en hangt elk ander familielid hiervan af.
De hash-keten
Het hart van de familie is een tamper-evident logboek. Elke regel bevat een SHA-256 die wordt berekend over de eigen inhoud, de hash van de vorige regel en een geheim uit je .env. Wijzig je achteraf één regel, dan klopt vanaf dat punt geen enkele volgende regel meer. Dit package levert die HashChain en de verificatie ervan, zodat elk familielid hetzelfde, bewezen mechaniek gebruikt in plaats van een eigen variant.
use Ginkelsoft\ComplianceCore\Support\HashChain;
$intact = HashChain::verify($entries, config('compliance.log_secret'));
Het geheim leeft in .env, niet in de database. Een aanvaller met lees- en schrijfrechten op de database kan daardoor geen kloppende keten vervalsen zonder ook dat geheim te bemachtigen.
Anonimisatie-strategieën
Persoonsgegevens onleesbaar maken kan op meer dan één manier, en welke manier past hangt af van het veld. Een naam vervang je door een vaste tekst, een BSN hash je onomkeerbaar, een telefoonnummer maak je leeg. Dit package levert die strategieën als herbruikbare bouwstenen: null, hash en placeholder, plus de mogelijkheid om met een closure een eigen strategie mee te geven. De packages voor bewaartermijnen en het recht op vergetelheid gebruiken precies deze strategieën.
SubjectHash en contracten
Wil je in een logboek vastleggen dat je iets met de gegevens van een persoon hebt gedaan, zonder de identiteit van die persoon in het log te zetten, dan heb je een onomkeerbare verwijzing nodig. De SubjectHash levert dat. Daarnaast bevat dit package de gedeelde contracten en de resolver-stijl waarmee de andere packages bepalen welke records bij welk subject horen.
Voor wie dit package is
In de praktijk installeer je dit package zelden direct. Het komt mee als afhankelijkheid zodra je een van de functionele familieleden binnenhaalt, zoals bewaartermijnen, toestemming of het datalek-register. Je hebt er rechtstreeks mee te maken wanneer je een eigen anonimisatie-strategie schrijft of de hash-keten van een logboek wilt verifiëren in je eigen code.
Open source, MIT
Het package is open source onder de MIT-licentie en beschikbaar via GitHub en Packagist. Het leunt alleen op illuminate-componenten, geen zware externe dependencies. PHPStan draait op niveau max, met Pint voor de code style en Pest voor de tests.
composer require ginkelsoft/laravel-compliance-core
De rest van de familie
Op deze core bouwen de losse packages voort: bewaartermijnen, het recht op vergetelheid, inzageverzoeken, een toestemmingsregister en een datalek-register, met een overkoepelende hub die alles samen verifieert. Je vindt ze op de overzichtspagina met packages. Wil je hulp bij het inpassen, dat valt onder maatwerk software en onderhoud en doorontwikkeling.