Laravel Package

Datalekken registreren en deadlines bewaken

Een gestructureerd register voor datalekken met een bewaakte deadline van tweeënzeventig uur en een onveranderlijk logboek van elke stap. Voor de meldplicht uit artikel drieëndertig en vierendertig van de AVG.

Installation

composer require ginkelsoft/laravel-data-breach-registry

Een datalek-register dat zichzelf bijhoudt

De AVG verplicht je om elk datalek intern te registreren, en bij risico binnen tweeënzeventig uur te melden bij de toezichthouder, in Nederland de Autoriteit Persoonsgegevens. Dat zijn de artikelen drieëndertig en vierendertig. In de praktijk gebeurt dat registreren vaak in een los Word- of Excel-bestand dat niemand bijhoudt en dat achteraf aanpasbaar is. Precies wat je niet wilt op het moment dat een toezichthouder meekijkt.

Dit package maakt er een gestructureerd register van, met een bewaakte deadline en een onveranderlijk spoor van elke stap.

Register en logboek

Twee tabellen werken samen. Het register breach_register houdt de actuele stand van elk incident bij: open, ingedamd, opgelost, gemeld aan wie en wanneer. Het mag groeien terwijl je het onderzoek aanvult. Daarnaast is er breach_event_log, het append-only, hash-geketende spoor van elke statuswijziging. Het register beantwoordt waar je staat, het logboek hoe je daar gekomen bent. Dat tweede is wat een toezichthouder onder de loep neemt, en het bevat alleen metadata, nooit de gelekte gegevens zelf.

use Ginkelsoft\DataBreachRegistry\Actions\BreachRegistry;
use Illuminate\Support\Carbon;

$registry = new BreachRegistry;

$breach = $registry->register(
    reference: 'BREACH-2026-001',
    discoveredAt: Carbon::parse('2026-05-27 09:15'),
    description: 'Verkeerd geadresseerde export naar onjuiste ontvanger.',
    severity: 'high',
    subjectsAffected: 42,
);

Levenscyclus

Een incident doorloopt statussen, van geregistreerd via ingedamd en gemeld naar opgelost. Elke wijziging werkt het register bij én schrijft een hash-geketende gebeurtenis. Een wijziging zonder echte verandering levert geen gebeurtenis op.

$registry->reportToAuthority('BREACH-2026-001', notificationReference: 'AP-2026-9999');
$registry->reportToSubjects('BREACH-2026-001', channel: 'email');
$registry->contain('BREACH-2026-001');
$registry->resolve('BREACH-2026-001');

De 72-uurs-bewaking

De deadline van tweeënzeventig uur loopt vanaf het moment van ontdekking. Het package berekent die en levert commands om incidenten op te vragen die de deadline naderen of overschrijden. Het command voor de deadlines geeft een niet-nul exitcode zodra er een incident over de tijd heen is, zodat een geplande taak iemand kan waarschuwen voordat de klok afloopt.

php artisan retention:breach:list --status=open
php artisan retention:breach:deadlines

Wat het bewust niet doet

Het verstuurt geen meldingen. Het legt vast dát je gemeld hebt en wanneer, maar de mail naar de toezichthouder of de betrokkenen blijft een proces dat jij in handen houdt. En of een lek gemeld moet worden en hoe ernstig het is, blijft een menselijke beoordeling. Het package accepteert de ernst als waarde, maar bepaalt hem niet voor je.

Open source, MIT

Open source onder de MIT-licentie, beschikbaar via GitHub en Packagist. Het bouwt op Compliance Core en deelt daarmee de hash-keten met de rest van de familie. Naast de AVG sluit het aan op ISO 27001 incidentbeheer en, in de Nederlandse zorg, op NEN 7510.

composer require ginkelsoft/laravel-data-breach-registry

Onderdeel van de AVG-familie naast bewaartermijnen, vergetelheid, inzage en toestemming. Hulp bij het inpassen valt onder maatwerk software en onderhoud en doorontwikkeling.