Forensische Datacollectie In Azure

💼 Management Samenvatting

Forensische datacollectie vormt een kritieke component van effectieve incident response en security investigations binnen Azure-omgevingen. Wanneer een beveiligingsincident wordt gedetecteerd, is het verzamelen van complete, onveranderlijke en forensisch bruikbare gegevens essentieel om de omvang van het incident te begrijpen, de aanvalsvector te identificeren, de impact te bepalen en passende maatregelen te nemen. Zonder een gestructureerde aanpak voor forensische datacollectie lopen Nederlandse overheidsorganisaties het risico dat cruciale bewijsstukken verloren gaan, dat incidentonderzoeken onvolledig zijn, of dat verzamelde gegevens niet forensisch bruikbaar zijn voor juridische doeleinden.

Aanbeveling
IMPLEMENTEER FORENSISCHE DATACOLLECTIE
Risico zonder
Critical
Risk Score
9/10
Implementatie
140u (tech: 80u)
Van toepassing op:
Azure Tenant
Azure Virtual Machines
Azure Storage Accounts
Azure Key Vault
Azure Active Directory
Azure Monitor Logs
Azure Sentinel

Forensische datacollectie is niet alleen een technische uitdaging, maar vooral een organisatorische en juridische verantwoordelijkheid. In de praktijk blijkt dat veel organisaties wel monitoring en logging hebben geconfigureerd, maar dat zij niet beschikken over gestructureerde procedures voor het verzamelen, bewaren en analyseren van forensische gegevens wanneer een incident plaatsvindt. Dit leidt tot situaties waarin cruciale bewijsstukken verloren gaan voordat zij kunnen worden verzameld, waarin verzamelde gegevens niet forensisch bruikbaar zijn omdat de chain of custody niet is gewaarborgd, of waarin incidentonderzoeken onvolledig zijn omdat belangrijke gegevensbronnen niet zijn meegenomen. Voor Nederlandse overheidsorganisaties heeft dit directe impact op wettelijke verplichtingen zoals de NIS2 richtlijn die specifieke eisen stelt aan incident reporting en forensisch onderzoek, de AVG die vereist dat datalekken worden onderzocht en gedocumenteerd, en de Baseline Informatiebeveiliging Overheid die eisen stelt aan incident management en forensische capaciteiten. Daarnaast stellen frameworks zoals BIO en NIS2 expliciet eisen aan forensische datacollectie: organisaties moeten aantonen dat zij beschikken over gedocumenteerde procedures voor het verzamelen, bewaren en analyseren van forensische gegevens, inclusief waarborging van de chain of custody en bescherming van bewijsstukken tegen wijziging of verlies. Zonder een correct geïmplementeerd forensisch datacollectieproces kunnen organisaties niet aantonen dat zij voldoen aan deze verplichtingen.

PowerShell Modules Vereist
Primary API: Azure API
Connection: Connect-AzAccount
Required Modules: Az.Accounts, Az.Resources, Az.Monitor, Az.Compute, Az.Storage, Az.KeyVault, Az.Security

Implementatie

Dit artikel beschrijft stap voor stap hoe u een complete forensische datacollectie-infrastructuur inricht voor Azure-omgevingen binnen Nederlandse overheidsorganisaties. U leert hoe u forensische datacollectieprocedures ontwikkelt die aansluiten bij juridische vereisten en best practices, hoe u verschillende typen forensische gegevens identificeert en verzamelt: virtuele machine snapshots, logbestanden, netwerkpakketten, configuratiebestanden en geheugenimages. Vervolgens wordt uitgelegd hoe u de chain of custody waarborgt door middel van cryptografische hashing, timestamping en gecontroleerde toegang, hoe u forensische gegevens veilig opslaat in geïsoleerde Azure Storage-accounts met immutability-beveiliging, en hoe u forensische gegevens analyseert met behulp van gespecialiseerde tools en technieken. Het artikel behandelt ook specifieke scenario's zoals ransomware-aanvallen, datalekken, insider threats en geavanceerde persistent threats. Tot slot wordt ingegaan op compliance-rapportage en juridische aspecten, zodat u aantoonbaar kunt rapporteren aan bestuur, auditors en eventueel justitie dat forensische gegevens correct zijn verzameld, bewaard en geanalyseerd. Het bijbehorende PowerShell-script ondersteunt beveiligingsteams bij het automatiseren van forensische datacollectie, het verzamelen van relevante gegevens uit verschillende Azure-services, en het waarborgen van de integriteit en chain of custody van verzamelde bewijsstukken.

Forensische Principes en Juridische Vereisten

Effectieve forensische datacollectie begint met een grondig begrip van de fundamentele forensische principes en juridische vereisten die van toepassing zijn op digitale bewijsstukken. Deze principes vormen de basis voor alle forensische activiteiten en zijn essentieel om te waarborgen dat verzamelde gegevens forensisch bruikbaar zijn en standhouden in juridische procedures. Zonder naleving van deze principes kunnen verzamelde gegevens worden uitgesloten van juridische procedures, kan de integriteit van bewijsstukken worden betwist, of kunnen organisaties juridische aansprakelijkheid oplopen voor onjuiste behandeling van bewijsstukken. Het eerste fundamentele principe is de waarborging van de integriteit van bewijsstukken. Dit betekent dat verzamelde gegevens niet mogen worden gewijzigd, verwijderd of gemanipuleerd tijdens het verzamelproces, de opslagperiode of de analysefase. In de praktijk betekent dit dat forensische gegevens altijd moeten worden verzameld via read-only methoden, dat cryptografische hashes moeten worden berekend en vastgelegd voor alle verzamelde gegevens, en dat alle toegang tot forensische gegevens moet worden gelogd en gecontroleerd. Voor Azure-omgevingen betekent dit bijvoorbeeld dat virtuele machine snapshots moeten worden gemaakt zonder de originele virtuele machine te wijzigen, dat logbestanden moeten worden gekopieerd naar een forensische storage-omgeving zonder de originele logs te wijzigen, en dat alle verzamelacties moeten worden gedocumenteerd met timestamps en digitale handtekeningen. Het tweede fundamentele principe is de waarborging van de chain of custody, wat betekent dat de volledige geschiedenis van bewijsstukken moet worden gedocumenteerd vanaf het moment van verzameling tot het moment van presentatie in een juridische procedure. Dit omvat het documenteren van wie de gegevens heeft verzameld, wanneer de gegevens zijn verzameld, waar de gegevens zijn opgeslagen, wie toegang heeft gehad tot de gegevens, en welke analyses zijn uitgevoerd op de gegevens. Voor Azure-omgevingen betekent dit dat alle forensische activiteiten moeten worden gelogd in Azure Monitor of Azure Sentinel, dat toegang tot forensische storage-accounts moet worden gecontroleerd via Azure RBAC en audit logging, en dat alle forensische activiteiten moeten worden gedocumenteerd in een forensisch rapport dat kan worden gebruikt voor juridische doeleinden. Het derde fundamentele principe is de waarborging van de authenticiteit van bewijsstukken, wat betekent dat moet kunnen worden aangetoond dat verzamelde gegevens daadwerkelijk afkomstig zijn van de aangegeven bron en niet zijn gemanipuleerd of vervalst. Dit vereist het gebruik van cryptografische technieken zoals digitale handtekeningen en hash-verificatie, het vastleggen van metadata zoals timestamps en systeemconfiguraties, en het waarborgen dat verzamelmethoden reproduceerbaar zijn en kunnen worden geverifieerd door onafhankelijke forensische experts. Voor Azure-omgevingen betekent dit dat forensische gegevens moeten worden verzameld met behulp van gestandaardiseerde tools en procedures, dat cryptografische hashes moeten worden berekend en opgeslagen voor alle verzamelde gegevens, en dat verzamelmethoden moeten worden gedocumenteerd zodat zij kunnen worden gereproduceerd en geverifieerd.

Voor Nederlandse overheidsorganisaties zijn er specifieke juridische vereisten die van toepassing zijn op forensische datacollectie. De NIS2 richtlijn vereist dat essentiële en belangrijke entiteiten beschikken over adequate capaciteiten voor incident response en forensisch onderzoek, inclusief procedures voor het verzamelen, bewaren en analyseren van forensische gegevens. De AVG vereist dat datalekken worden onderzocht en gedocumenteerd, waarbij forensische gegevens kunnen worden gebruikt om de omvang en impact van een datalek te bepalen. De Baseline Informatiebeveiliging Overheid vereist dat organisaties beschikken over incident management procedures die forensische datacollectie omvatten, en dat forensische gegevens worden gebruikt voor het verbeteren van beveiligingsmaatregelen en het voorkomen van toekomstige incidenten. Daarnaast zijn er algemene juridische vereisten die van toepassing zijn op digitale bewijsstukken in Nederlandse juridische procedures. Bewijsstukken moeten voldoen aan de eisen van de Nederlandse wetgeving met betrekking tot bewijs, waarbij de integriteit, authenticiteit en chain of custody van bewijsstukken kunnen worden betwist door tegenpartijen. Dit betekent dat forensische gegevens moeten worden verzameld en bewaard op een manier die voldoet aan juridische standaarden, dat forensische procedures moeten worden gedocumenteerd en kunnen worden geverifieerd, en dat forensische experts moeten kunnen getuigen over de verzamelmethoden en de integriteit van bewijsstukken in juridische procedures.

Forensische Gegevensbronnen in Azure

Azure-omgevingen bevatten een breed scala aan gegevensbronnen die forensisch relevant kunnen zijn voor incidentonderzoeken. Het identificeren en begrijpen van deze gegevensbronnen is essentieel om te waarborgen dat alle relevante gegevens worden verzameld tijdens een forensische datacollectie, en dat geen cruciale bewijsstukken worden gemist. Elke gegevensbron heeft unieke karakteristieken, verzamelmethoden en bewaartermijnen die moeten worden begrepen en gedocumenteerd in forensische procedures. Virtuele machine snapshots vormen een van de meest waardevolle forensische gegevensbronnen in Azure-omgevingen. Een snapshot bevat een complete kopie van de virtuele machine op een specifiek moment, inclusief het besturingssysteem, applicaties, configuraties, logbestanden en eventuele gegevens die op dat moment in het geheugen aanwezig waren. Snapshots kunnen worden gebruikt om de exacte staat van een systeem te reconstrueren op het moment van een incident, om malware te analyseren zonder de originele virtuele machine te wijzigen, en om configuratiewijzigingen te identificeren die mogelijk hebben bijgedragen aan een incident. Het verzamelen van snapshots vereist dat de virtuele machine wordt gestopt of dat een live snapshot wordt gemaakt zonder de virtuele machine te stoppen, waarbij de integriteit van de snapshot moet worden gewaarborgd door middel van cryptografische hashing en gecontroleerde opslag. Azure Monitor logs en Azure Activity logs bevatten uitgebreide informatie over alle activiteiten die plaatsvinden binnen Azure-omgevingen, inclusief aanmeldingsgebeurtenissen, configuratiewijzigingen, resource-aanmaak en -verwijdering, en beveiligingsgebeurtenissen. Deze logs zijn essentieel voor het reconstrueren van de tijdlijn van een incident, het identificeren van verdachte activiteiten, en het bepalen van de omvang en impact van een incident. Azure Monitor logs worden opgeslagen in Log Analytics workspaces en kunnen worden geëxporteerd naar forensische storage-accounts voor langere bewaartermijnen en geïsoleerde analyse. Het verzamelen van logs vereist dat logs worden geëxporteerd via de Log Analytics API of via Azure Monitor Data Collector API, waarbij de integriteit van logs moet worden gewaarborgd door middel van cryptografische hashing en timestamping.

Azure Storage-accounts bevatten vaak kritieke gegevens die forensisch relevant kunnen zijn, zoals bestanden, databases, back-ups en configuratiebestanden. Het verzamelen van storage-gegevens vereist dat storage-blobs, -tables en -queues worden gekopieerd naar forensische storage-accounts zonder de originele gegevens te wijzigen, waarbij de integriteit van gegevens moet worden gewaarborgd door middel van cryptografische hashing. Azure Key Vault bevat gevoelige gegevens zoals certificaten, geheimen en sleutels die forensisch relevant kunnen zijn voor het begrijpen van hoe aanvallers toegang hebben verkregen tot systemen of gegevens. Het verzamelen van Key Vault-gegevens vereist dat Key Vault-logs worden geëxporteerd en dat toegang tot Key Vault-objecten wordt gedocumenteerd, waarbij gevoelige gegevens moeten worden beschermd tijdens het verzamelproces. Azure Active Directory logs bevatten uitgebreide informatie over authenticatie, autorisatie en directory-wijzigingen die forensisch relevant kunnen zijn voor het identificeren van verdachte aanmeldingspogingen, ongeautoriseerde toegang en privilege escalation. Azure Sentinel bevat security alerts, incidenten en threat intelligence die forensisch relevant kunnen zijn voor het begrijpen van de aanvalsvector en de impact van een incident. Het verzamelen van deze gegevens vereist dat logs worden geëxporteerd via de Azure AD Reporting API of Azure Sentinel API, waarbij de integriteit van gegevens moet worden gewaarborgd en waarbij gevoelige informatie moet worden beschermd tijdens het verzamelproces.

Naast deze standaard Azure-gegevensbronnen kunnen er ook specifieke applicatie-logs, database-transactielogs, netwerkpakketten en geheugenimages forensisch relevant zijn, afhankelijk van het type incident en de betrokken systemen. Het identificeren van alle relevante gegevensbronnen vereist een grondige kennis van de Azure-architectuur, de geïmplementeerde services en applicaties, en de potentiële impact van verschillende typen incidenten. Forensische procedures moeten daarom worden ontwikkeld in samenwerking met technische teams, security teams en juridische adviseurs om te waarborgen dat alle relevante gegevensbronnen worden geïdentificeerd en dat verzamelmethoden correct zijn gedocumenteerd.

Forensische Datacollectieprocedures

Gebruik PowerShell-script forensic-data-collection.ps1 (functie Invoke-Monitoring) – Automatiseert forensische datacollectie en waarborgt integriteit en chain of custody.

Gestructureerde forensische datacollectieprocedures zijn essentieel om te waarborgen dat alle relevante gegevens worden verzameld, dat de integriteit en chain of custody van bewijsstukken worden gewaarborgd, en dat verzamelde gegevens forensisch bruikbaar zijn voor incidentonderzoeken en eventuele juridische procedures. Deze procedures moeten worden ontwikkeld voordat een incident plaatsvindt, moeten regelmatig worden getest en bijgewerkt, en moeten worden gedocumenteerd in een forensisch datacollectieplan dat beschikbaar is voor alle betrokken teams. De eerste fase van forensische datacollectie is de activatiefase, waarin wordt bepaald dat een forensische datacollectie nodig is en waarin het forensische team wordt geactiveerd. Deze fase omvat het beoordelen van de ernst en impact van het incident, het bepalen welke gegevensbronnen forensisch relevant zijn, het activeren van het forensische team en het verkrijgen van de benodigde autorisaties en toegangsrechten. Het is belangrijk dat deze fase snel wordt uitgevoerd, omdat sommige forensische gegevens tijdgevoelig zijn en kunnen verloren gaan als zij niet tijdig worden verzameld. Voor Azure-omgevingen betekent dit bijvoorbeeld dat virtuele machine snapshots moeten worden gemaakt voordat systemen worden herstart of gewijzigd, dat logbestanden moeten worden geëxporteerd voordat zij worden overschreven door nieuwe logs, en dat geheugenimages moeten worden verzameld voordat systemen worden uitgeschakeld.

De tweede fase is de verzamelfase, waarin daadwerkelijk forensische gegevens worden verzameld uit de geïdentificeerde gegevensbronnen. Deze fase omvat het maken van virtuele machine snapshots, het exporteren van logbestanden, het kopiëren van storage-gegevens, het verzamelen van configuratiebestanden, en het documenteren van alle verzamelacties met timestamps, digitale handtekeningen en cryptografische hashes. Het is belangrijk dat alle verzamelacties worden uitgevoerd via read-only methoden om te voorkomen dat originele gegevens worden gewijzigd, dat cryptografische hashes worden berekend en vastgelegd voor alle verzamelde gegevens, en dat alle verzamelacties worden gelogd in een forensisch logboek dat kan worden gebruikt voor chain of custody-documentatie. Voor Azure-omgevingen betekent dit dat forensische gegevens moeten worden verzameld met behulp van Azure API's en PowerShell-cmdlets die read-only toegang bieden, dat cryptografische hashes moeten worden berekend met behulp van gestandaardiseerde hash-algoritmen zoals SHA-256, en dat alle verzamelacties moeten worden gelogd in Azure Monitor of Azure Sentinel.

De derde fase is de opslagfase, waarin verzamelde forensische gegevens worden opgeslagen in een geïsoleerde en beveiligde forensische storage-omgeving. Deze fase omvat het kopiëren van verzamelde gegevens naar forensische storage-accounts met immutability-beveiliging, het configureren van gecontroleerde toegang via Azure RBAC en audit logging, het waarborgen dat forensische gegevens worden bewaard voor de vereiste bewaartermijn, en het documenteren van alle opslagacties in het forensisch logboek. Het is belangrijk dat forensische storage-accounts geïsoleerd zijn van productie-omgevingen om te voorkomen dat forensische gegevens per ongeluk worden gewijzigd of verwijderd, dat immutability-beveiliging is geconfigureerd om te voorkomen dat forensische gegevens worden gewijzigd of verwijderd, en dat toegang tot forensische storage-accounts strikt wordt gecontroleerd en gelogd. Voor Azure-omgevingen betekent dit dat forensische gegevens moeten worden opgeslagen in aparte Azure Storage-accounts met immutability policies, dat toegang tot forensische storage-accounts moet worden gecontroleerd via Azure RBAC met minimale rechten, en dat alle toegang tot forensische gegevens moet worden gelogd in Azure Monitor of Azure Sentinel.

De vierde fase is de analysefase, waarin verzamelde forensische gegevens worden geanalyseerd om de omvang, impact en oorzaak van een incident te begrijpen. Deze fase omvat het analyseren van virtuele machine snapshots met behulp van forensische tools, het analyseren van logbestanden om de tijdlijn van een incident te reconstrueren, het identificeren van verdachte activiteiten en indicatoren van compromittering, en het documenteren van alle analyse-acties en bevindingen in een forensisch rapport. Het is belangrijk dat analyse-acties worden uitgevoerd op kopieën van forensische gegevens om te voorkomen dat originele bewijsstukken worden gewijzigd, dat alle analyse-acties worden gedocumenteerd in het forensisch logboek, en dat bevindingen worden gedocumenteerd in een forensisch rapport dat kan worden gebruikt voor incident response en eventuele juridische procedures. Voor Azure-omgevingen betekent dit dat forensische gegevens moeten worden geanalyseerd in geïsoleerde analyse-omgevingen, dat forensische tools moeten worden gebruikt die de integriteit van bewijsstukken waarborgen, en dat alle analyse-acties en bevindingen moeten worden gedocumenteerd in een gestructureerd forensisch rapport.

Chain of Custody en Integriteitswaarborging

De waarborging van de chain of custody is essentieel om te garanderen dat verzamelde forensische gegevens forensisch bruikbaar zijn en standhouden in juridische procedures. Chain of custody verwijst naar de volledige documentatie van de geschiedenis van bewijsstukken vanaf het moment van verzameling tot het moment van presentatie in een juridische procedure, inclusief wie de gegevens heeft verzameld, wanneer de gegevens zijn verzameld, waar de gegevens zijn opgeslagen, wie toegang heeft gehad tot de gegevens, en welke analyses zijn uitgevoerd op de gegevens. Zonder adequate chain of custody-documentatie kunnen verzamelde gegevens worden uitgesloten van juridische procedures, kan de integriteit van bewijsstukken worden betwist, of kunnen organisaties juridische aansprakelijkheid oplopen voor onjuiste behandeling van bewijsstukken. Chain of custody-documentatie begint bij het moment van verzameling, waarbij alle verzamelacties moeten worden gedocumenteerd met timestamps, digitale handtekeningen en cryptografische hashes. Dit omvat het documenteren van wie de gegevens heeft verzameld, wanneer de gegevens zijn verzameld, welke methoden en tools zijn gebruikt voor verzameling, welke gegevensbronnen zijn gebruikt, en welke cryptografische hashes zijn berekend voor de verzamelde gegevens. Voor Azure-omgevingen betekent dit dat alle verzamelacties moeten worden gelogd in Azure Monitor of Azure Sentinel, dat cryptografische hashes moeten worden berekend en opgeslagen voor alle verzamelde gegevens, en dat verzamelacties moeten worden gedocumenteerd in een forensisch logboek dat kan worden gebruikt voor chain of custody-documentatie.

Tijdens de opslagperiode moet alle toegang tot forensische gegevens worden gelogd en gecontroleerd, waarbij moet worden gedocumenteerd wie toegang heeft gehad tot de gegevens, wanneer toegang heeft plaatsgevonden, welke acties zijn uitgevoerd, en of de integriteit van gegevens is geverifieerd. Dit vereist het configureren van gecontroleerde toegang via Azure RBAC met minimale rechten, het inschakelen van audit logging voor alle toegang tot forensische storage-accounts, en het regelmatig verifiëren van de integriteit van forensische gegevens door middel van hash-verificatie. Voor Azure-omgevingen betekent dit dat toegang tot forensische storage-accounts moet worden gecontroleerd via Azure RBAC met role-based toegangscontrole, dat alle toegang tot forensische gegevens moet worden gelogd in Azure Monitor of Azure Sentinel, en dat regelmatig hash-verificatie moet worden uitgevoerd om te waarborgen dat forensische gegevens niet zijn gewijzigd. Tijdens de analysefase moeten alle analyse-acties worden gedocumenteerd, waarbij moet worden vastgelegd welke analyses zijn uitgevoerd, welke tools zijn gebruikt, welke bevindingen zijn gedaan, en of de integriteit van bewijsstukken is gewaarborgd tijdens de analyse. Dit vereist het uitvoeren van analyses op kopieën van forensische gegevens om te voorkomen dat originele bewijsstukken worden gewijzigd, het documenteren van alle analyse-acties in het forensisch logboek, en het regelmatig verifiëren van de integriteit van originele bewijsstukken door middel van hash-verificatie. Voor Azure-omgevingen betekent dit dat analyses moeten worden uitgevoerd op kopieën van forensische gegevens in geïsoleerde analyse-omgevingen, dat alle analyse-acties moeten worden gedocumenteerd in het forensisch logboek, en dat regelmatig hash-verificatie moet worden uitgevoerd om te waarborgen dat originele bewijsstukken niet zijn gewijzigd.

Cryptografische hashing vormt een essentieel onderdeel van chain of custody-documentatie, omdat hashes kunnen worden gebruikt om de integriteit van bewijsstukken te verifiëren en om te waarborgen dat bewijsstukken niet zijn gewijzigd tijdens verzameling, opslag of analyse. Alle verzamelde forensische gegevens moeten worden voorzien van cryptografische hashes die worden berekend met behulp van gestandaardiseerde hash-algoritmen zoals SHA-256, waarbij hashes moeten worden opgeslagen in een aparte hash-database die beschermd is tegen wijziging. Hash-verificatie moet regelmatig worden uitgevoerd om te waarborgen dat forensische gegevens niet zijn gewijzigd, waarbij eventuele wijzigingen moeten worden gedocumenteerd en onderzocht. Voor Azure-omgevingen betekent dit dat cryptografische hashes moeten worden berekend voor alle verzamelde forensische gegevens met behulp van PowerShell-cmdlets of Azure Functions, dat hashes moeten worden opgeslagen in een aparte Azure Storage-account of Azure Key Vault, en dat regelmatig hash-verificatie moet worden uitgevoerd om te waarborgen dat forensische gegevens niet zijn gewijzigd.

Forensische Storage en Isolatie

Forensische gegevens moeten worden opgeslagen in een geïsoleerde en beveiligde omgeving die beschermd is tegen wijziging, verwijdering en ongeautoriseerde toegang. Deze omgeving moet worden gescheiden van productie-omgevingen om te voorkomen dat forensische gegevens per ongeluk worden gewijzigd of verwijderd, moet worden beveiligd met immutability-beveiliging om te voorkomen dat forensische gegevens worden gewijzigd of verwijderd, en moet worden gecontroleerd met strikte toegangscontrole en audit logging. Zonder adequate forensische storage en isolatie kunnen verzamelde gegevens worden gewijzigd of verwijderd, kan de integriteit van bewijsstukken worden aangetast, of kunnen organisaties juridische aansprakelijkheid oplopen voor onjuiste opslag van bewijsstukken. Forensische storage-accounts moeten worden geconfigureerd in aparte Azure-resourcegroepen die geïsoleerd zijn van productie-omgevingen, waarbij toegang tot forensische storage-accounts strikt moet worden gecontroleerd via Azure RBAC met minimale rechten. Forensische storage-accounts moeten worden geconfigureerd met immutability policies die voorkomen dat gegevens worden gewijzigd of verwijderd gedurende de vereiste bewaartermijn, waarbij immutability policies moeten worden geconfigureerd op basis van wettelijke bewaarplichten en organisatorische vereisten. Voor Azure-omgevingen betekent dit dat forensische storage-accounts moeten worden geconfigureerd in aparte resourcegroepen met naming conventions die duidelijk maken dat het om forensische storage gaat, dat immutability policies moeten worden geconfigureerd met behulp van Azure Blob Storage immutability policies, en dat toegang tot forensische storage-accounts moet worden gecontroleerd via Azure RBAC met role-based toegangscontrole.

Forensische storage-accounts moeten worden beveiligd met geavanceerde beveiligingsmaatregelen zoals versleuteling at rest, versleuteling in transit, en netwerkisolatie. Versleuteling at rest moet worden geconfigureerd met behulp van Azure Storage Service Encryption of customer-managed keys, waarbij versleutelingssleutels moeten worden beheerd in Azure Key Vault met strikte toegangscontrole. Versleuteling in transit moet worden geconfigureerd met behulp van HTTPS voor alle toegang tot forensische storage-accounts, waarbij certificaten moeten worden beheerd en geverifieerd. Netwerkisolatie moet worden geconfigureerd met behulp van Azure Virtual Network service endpoints of private endpoints, waarbij toegang tot forensische storage-accounts moet worden beperkt tot geautoriseerde netwerken en IP-adressen. Voor Azure-omgevingen betekent dit dat forensische storage-accounts moeten worden beveiligd met Azure Storage Service Encryption met customer-managed keys, dat toegang tot forensische storage-accounts moet worden beperkt via Azure Virtual Network service endpoints of private endpoints, en dat alle toegang tot forensische storage-accounts moet worden gelogd in Azure Monitor of Azure Sentinel.

Forensische storage-accounts moeten worden geconfigureerd met adequate bewaartermijnen die aansluiten bij wettelijke bewaarplichten en organisatorische vereisten. Bewaartermijnen moeten worden bepaald op basis van het type incident, de ernst en impact van het incident, en de potentiële juridische relevantie van forensische gegevens. Forensische gegevens die relevant kunnen zijn voor juridische procedures moeten worden bewaard voor langere perioden dan forensische gegevens die alleen relevant zijn voor incident response, waarbij bewaartermijnen moeten worden gedocumenteerd in forensische procedures en moeten worden gecontroleerd via regelmatige reviews. Voor Azure-omgevingen betekent dit dat bewaartermijnen moeten worden geconfigureerd in immutability policies, dat bewaartermijnen moeten worden gedocumenteerd in forensische procedures, en dat regelmatig reviews moeten worden uitgevoerd om te waarborgen dat bewaartermijnen nog steeds adequaat zijn.

Compliance en Integratie

Forensische datacollectie moet worden geïntegreerd met andere governance- en compliance-processen, zoals incident response, risicomanagement, en informatiebeveiligingsmanagement. Deze integratie zorgt ervoor dat forensische datacollectie geen losstaand proces is maar een integraal onderdeel van de bredere governance-structuur, en dat alle processen naadloos op elkaar aansluiten. Voor Nederlandse overheidsorganisaties betekent dit dat forensische datacollectie moet aansluiten bij de Baseline Informatiebeveiliging Overheid (BIO), met name de normen rond incident management, forensische capaciteiten en bewijsbeheer. Forensische procedures moeten expliciet verwijzen naar relevante BIO-normen en moeten kunnen aantonen dat procedures voldoen aan deze normen. Daarnaast moeten forensische procedures processen bevatten voor het rapporteren van forensische datacollectie-activiteiten en -resultaten aan bestuur en auditors, zodat compliance kan worden aangetoond.

De NIS2 richtlijn stelt specifieke eisen aan incident response en forensisch onderzoek voor essentiële en belangrijke entiteiten. Forensische procedures moeten daarom processen bevatten voor het verzamelen, bewaren en analyseren van forensische gegevens in het kader van NIS2-incident reporting, waarbij forensische gegevens kunnen worden gebruikt om de omvang, impact en oorzaak van beveiligingsincidenten te bepalen. Daarnaast moeten forensische procedures processen bevatten voor het documenteren van forensische activiteiten, zodat deze informatie beschikbaar is voor NIS2-rapportages en audits. De AVG vereist dat datalekken worden onderzocht en gedocumenteerd, waarbij forensische gegevens kunnen worden gebruikt om de omvang en impact van een datalek te bepalen. Forensische procedures moeten daarom specifieke procedures bevatten voor het verzamelen, bewaren en analyseren van forensische gegevens in het kader van AVG-datalekonderzoeken, waarbij wordt gewaarborgd dat alle wettelijke verplichtingen worden nagekomen. Deze procedures moeten worden getest tijdens oefeningen, zodat teams weten wat zij moeten doen wanneer een echt datalek plaatsvindt.

Forensische datacollectie moet ook worden geïntegreerd met incident response-processen, zodat forensische gegevens kunnen worden gebruikt voor incident response en zodat incident response-activiteiten forensische datacollectie niet hinderen. Dit omvat bijvoorbeeld het coördineren van forensische datacollectie met incident response-activatie, het integreren van forensische bevindingen met incident response-besluitvorming, en het waarborgen dat incident response-activiteiten forensische bewijsstukken niet wijzigen of verwijderen. Daarnaast moet forensische datacollectie worden geïntegreerd met risicomanagement-processen, zodat forensische bevindingen kunnen worden gebruikt voor risico-assessments en voor het verbeteren van beveiligingsmaatregelen.

Monitoring en Verbetering

Gebruik PowerShell-script forensic-data-collection.ps1 (functie Invoke-Monitoring) – Controleert forensische datacollectie-configuraties en monitort integriteit en chain of custody.

Continue monitoring en verbetering van forensische datacollectieprocessen is essentieel om te garanderen dat processen effectief blijven en aansluiten bij de actuele organisatie, technologie en dreigingslandschap. Forensische procedures moeten daarom processen bevatten voor het regelmatig evalueren van forensische datacollectie-activiteiten, het identificeren van verbeterkansen, en het implementeren van verbeteracties. Monitoring van forensische datacollectie omvat het regelmatig controleren van forensische storage-configuraties, het verifiëren dat alle benodigde tools en systemen beschikbaar zijn, het controleren dat forensische procedures actueel zijn, en het monitoren van forensische datacollectie-performance en -effectiviteit. Deze monitoring moet worden geautomatiseerd waar mogelijk, bijvoorbeeld door gebruik te maken van Azure Monitor en andere monitoring tools, maar moet ook ruimte bieden voor periodieke handmatige reviews door het forensische team.

Evaluatie van forensische datacollectie moet plaatsvinden na elke forensische datacollectie-activiteit en na elke oefening, waarbij wordt geanalyseerd wat goed ging, wat beter kon, en welke verbeteracties nodig zijn. Deze evaluaties moeten worden gedocumenteerd en moeten leiden tot concrete actieplannen die worden opgevolgd. Daarnaast moeten periodieke reviews worden uitgevoerd, bijvoorbeeld jaarlijks, waarbij het volledige forensische datacollectieproces wordt geëvalueerd en waar nodig wordt bijgewerkt. Verbeteracties moeten worden geprioriteerd op basis van risico en impact, waarbij kritieke verbeteracties direct worden opgepakt en minder urgente verbeteracties worden gepland voor toekomstige implementatie. Alle verbeteracties moeten worden gedocumenteerd en moeten worden geverifieerd door middel van toekomstige oefeningen of echte forensische datacollectie-activiteiten, zodat kan worden bevestigd dat verbeteringen effectief zijn.

Remediatie

Gebruik PowerShell-script forensic-data-collection.ps1 (functie Invoke-Remediation) – Identificeert ontbrekende forensische datacollectie-configuraties en genereert aanbevelingen.

Wanneer monitoring of audits uitwijzen dat forensische datacollectieprocessen incompleet zijn of niet voldoen aan de gestelde eisen, is een gestructureerde remediatieaanpak noodzakelijk. Begin met een gap-analyse waarin u inventariseert welke aspecten van forensische datacollectie ontbreken, welke procedures niet zijn gedocumenteerd, welke tools en systemen niet zijn geconfigureerd, en welke oefeningen niet zijn uitgevoerd. Prioriteer deze bevindingen op basis van risico en impact, waarbij kritieke ontbrekende elementen direct worden opgepakt. Voor ontbrekende documentatie moet u eerst bepalen welke procedures het meest kritiek zijn en deze prioriteren voor documentatie. Begin met het documenteren van forensische datacollectieprocedures voor de meest waarschijnlijke incident scenario's, gevolgd door chain of custody-procedures, en vervolgens forensische storage-configuratieprocedures. Zorg dat documentatie wordt gereviewd door alle betrokken stakeholders en dat documentatie regelmatig wordt bijgewerkt wanneer procedures of organisatie wijzigen.

Voor ontbrekende tools en systemen moet u eerst bepalen welke forensische datacollectie-capaciteiten het meest kritiek zijn en deze prioriteren voor implementatie. Begin met het configureren van forensische storage-accounts met immutability-beveiliging, gevolgd door het configureren van geautomatiseerde forensische datacollectie-scripts, en vervolgens het configureren van forensische analyse-omgevingen. Zorg dat alle tools en systemen worden getest tijdens oefeningen, zodat kan worden bevestigd dat zij correct functioneren tijdens een echte forensische datacollectie-activiteit. Voor ontbrekende oefeningen moet u een oefenprogramma ontwikkelen dat verschillende types forensische datacollectie-scenario's omvat, van eenvoudige tabletop-oefeningen tot complexe full-scale simulaties. Begin met het organiseren van regelmatige tabletop-oefeningen voor het forensische team, gevolgd door functionele drills voor specifieke aspecten van forensische datacollectie, en vervolgens full-scale simulaties voor de meest kritieke scenario's. Zorg dat alle oefeningen worden gedocumenteerd en dat verbeteracties worden opgevolgd. Na remediatie is het belangrijk om de verbeteringen te valideren door middel van oefeningen en monitoring. Voer voor alle gerepareerde aspecten een oefening uit om te verifiëren dat procedures correct werken. Update monitoring en alerts zodat toekomstige problemen direct worden gesignaleerd. Documenteer alle remediatie-activiteiten, inclusief de geïdentificeerde problemen, de uitgevoerde wijzigingen en de validatieresultaten, zodat deze informatie beschikbaar is voor toekomstige audits en verbeteringen.

Compliance & Frameworks

Automation

Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).

PowerShell
<# ================================================================================ AZURE POWERSHELL SCRIPT - Nederlandse Baseline voor Veilige Cloud ================================================================================ .SYNOPSIS Forensische Datacollectie in Azure - Monitoring en Automatisering .DESCRIPTION Ondersteunt forensische datacollectie voor Azure-omgevingen: - Controleert forensische storage-configuraties en immutability-beveiliging - Monitort chain of custody en integriteit van forensische gegevens - Automatiseert verzameling van forensische gegevens uit verschillende Azure-services - Genereert cryptografische hashes voor integriteitswaarborging - Rapporteert forensische datacollectie-status en compliance Het script is bedoeld als ondersteunend hulpmiddel voor forensische teams om gestructureerd forensische gegevens te verzamelen en de integriteit en chain of custody te waarborgen. .NOTES Filename: forensic-data-collection.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Related JSON: content/azure/management/forensic-data-collection.json NBVC Debug: Gebruik de omgevingsvariabele NBVC_LOCAL_DEBUG=1 om lokale testen uit te voeren zonder verbinding te maken met Azure-API's. .EXAMPLE .\forensic-data-collection.ps1 -Monitoring Controleert forensische storage-configuraties en integriteit .EXAMPLE .\forensic-data-collection.ps1 -Implementation Ondersteunt forensische datacollectie-activatie en configuratie #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.Resources, Az.Storage, Az.Compute, Az.Monitor, Az.Security [CmdletBinding()] param( [Parameter(HelpMessage = "Controleert forensische storage-configuraties en integriteit")] [switch]$Monitoring, [Parameter(HelpMessage = "Ondersteunt forensische datacollectie-activatie en configuratie")] [switch]$Implementation, [Parameter(HelpMessage = "Identificeert ontbrekende forensische configuraties")] [switch]$Remediation, [Parameter(HelpMessage = "Preview wijzigingen zonder uit te voeren")] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' $PolicyName = "Forensische Datacollectie in Azure" function Get-IsLocalDebug { param() return [bool]($env:NBVC_LOCAL_DEBUG -eq '1') } function Connect-RequiredServices { if (Get-IsLocalDebug) { Write-Verbose "NBVC_LOCAL_DEBUG is actief - Azure verbinding wordt overgeslagen." return } try { if (-not (Get-Module -ListAvailable -Name Az.Accounts)) { throw "Het PowerShell-module 'Az.Accounts' is niet beschikbaar. Installeer dit module voordat u het script gebruikt." } $ctx = Get-AzContext -ErrorAction SilentlyContinue if (-not $ctx) { Write-Host "Verbinding maken met Azure (Connect-AzAccount)..." -ForegroundColor Yellow Connect-AzAccount -ErrorAction Stop | Out-Null } else { Write-Verbose "Bestaande Azure context gevonden: $($ctx.Name)" } } catch { throw "Kon niet verbinden met Azure: $($_.Exception.Message)" } } function Get-ForensicStorageConfiguration { <# .SYNOPSIS Haalt forensische storage-configuratie op voor alle storage-accounts. .OUTPUTS PSCustomObject met forensische storage-configuratie-informatie. #> [CmdletBinding()] param() if (Get-IsLocalDebug) { # Gesimuleerde gegevens voor lokale debug en CI-tests return [PSCustomObject]@{ Timestamp = Get-Date TotalForensicStorageAccounts = 2 StorageAccountsWithImmutability = 2 StorageAccountsWithEncryption = 2 StorageAccountsWithNetworkIsolation = 2 TotalForensicDataSizeGB = 1250 StorageAccounts = @( [PSCustomObject]@{ StorageAccountName = "forensic-storage-prod-we" ResourceGroupName = "rg-forensics-prod" HasImmutabilityPolicy = $true HasEncryption = $true HasNetworkIsolation = $true ImmutabilityRetentionDays = 2555 AccessTier = "Cool" }, [PSCustomObject]@{ StorageAccountName = "forensic-storage-prod-ne" ResourceGroupName = "rg-forensics-prod" HasImmutabilityPolicy = $true HasEncryption = $true HasNetworkIsolation = $true ImmutabilityRetentionDays = 2555 AccessTier = "Cool" } ) } } Connect-RequiredServices # Zoek naar forensische storage-accounts op basis van naming convention $forensicStorageAccounts = Get-AzStorageAccount -ErrorAction SilentlyContinue | Where-Object { $_.StorageAccountName -like '*forensic*' -or $_.StorageAccountName -like '*forensics*' -or $_.Tags['Purpose'] -eq 'Forensics' -or $_.Tags['Type'] -eq 'Forensic' } if (-not $forensicStorageAccounts) { Write-Verbose "Geen forensische storage-accounts gevonden." return [PSCustomObject]@{ Timestamp = Get-Date TotalForensicStorageAccounts = 0 StorageAccountsWithImmutability = 0 StorageAccountsWithEncryption = 0 StorageAccountsWithNetworkIsolation = 0 TotalForensicDataSizeGB = 0 StorageAccounts = @() } } $storageSummaries = @() $accountsWithImmutability = 0 $accountsWithEncryption = 0 $accountsWithNetworkIsolation = 0 $totalDataSizeGB = 0 foreach ($storageAccount in $forensicStorageAccounts) { try { $ctx = New-AzStorageContext -StorageAccountName $storageAccount.StorageAccountName -UseConnectedAccount -ErrorAction SilentlyContinue # Controleer immutability policies (vereist Azure.Storage module) $hasImmutability = $false try { $containers = Get-AzStorageContainer -Context $ctx -ErrorAction SilentlyContinue foreach ($container in $containers) { $immutabilityPolicy = Get-AzStorageContainerImmutabilityPolicy -Context $ctx -Name $container.Name -ErrorAction SilentlyContinue if ($immutabilityPolicy -and $immutabilityPolicy.ImmutabilityPeriodSinceCreationInDays -gt 0) { $hasImmutability = $true break } } } catch { Write-Verbose "Kon immutability policies niet controleren voor $($storageAccount.StorageAccountName): $_" } # Controleer versleuteling $hasEncryption = $storageAccount.Encryption.Services.Blob.Enabled -or $storageAccount.Encryption.Services.File.Enabled # Controleer netwerkisolatie (vereist dat private endpoints of service endpoints zijn geconfigureerd) $hasNetworkIsolation = $storageAccount.NetworkRuleSet.DefaultAction -eq 'Deny' -or ($storageAccount.NetworkRuleSet.IpRules.Count -gt 0) -or ($storageAccount.NetworkRuleSet.VirtualNetworkRules.Count -gt 0) # Bepaal retentieperiode (standaard 7 jaar = 2555 dagen) $retentionDays = 2555 if ($hasImmutability) { try { $containers = Get-AzStorageContainer -Context $ctx -ErrorAction SilentlyContinue foreach ($container in $containers) { $immutabilityPolicy = Get-AzStorageContainerImmutabilityPolicy -Context $ctx -Name $container.Name -ErrorAction SilentlyContinue if ($immutabilityPolicy -and $immutabilityPolicy.ImmutabilityPeriodSinceCreationInDays -gt 0) { $retentionDays = $immutabilityPolicy.ImmutabilityPeriodSinceCreationInDays break } } } catch { # Gebruik standaardwaarde } } # Schat data size (vereist Azure.Storage module voor accurate meting) $dataSizeGB = 0 try { $containers = Get-AzStorageContainer -Context $ctx -ErrorAction SilentlyContinue foreach ($container in $containers) { $blobs = Get-AzStorageBlob -Container $container.Name -Context $ctx -ErrorAction SilentlyContinue foreach ($blob in $blobs) { $dataSizeGB += [math]::Round($blob.Length / 1GB, 2) } } } catch { Write-Verbose "Kon data size niet berekenen voor $($storageAccount.StorageAccountName): $_" } $storageSummaries += [PSCustomObject]@{ StorageAccountName = $storageAccount.StorageAccountName ResourceGroupName = $storageAccount.ResourceGroupName HasImmutabilityPolicy = $hasImmutability HasEncryption = $hasEncryption HasNetworkIsolation = $hasNetworkIsolation ImmutabilityRetentionDays = $retentionDays AccessTier = $storageAccount.AccessTier DataSizeGB = [math]::Round($dataSizeGB, 2) } if ($hasImmutability) { $accountsWithImmutability++ } if ($hasEncryption) { $accountsWithEncryption++ } if ($hasNetworkIsolation) { $accountsWithNetworkIsolation++ } $totalDataSizeGB += $dataSizeGB } catch { Write-Verbose "Fout bij uitlezen van storage-account '$($storageAccount.StorageAccountName)': $($_.Exception.Message)" } } return [PSCustomObject]@{ Timestamp = Get-Date TotalForensicStorageAccounts = $forensicStorageAccounts.Count StorageAccountsWithImmutability = $accountsWithImmutability StorageAccountsWithEncryption = $accountsWithEncryption StorageAccountsWithNetworkIsolation = $accountsWithNetworkIsolation TotalForensicDataSizeGB = [math]::Round($totalDataSizeGB, 2) StorageAccounts = $storageSummaries } } function Test-ForensicDataIntegrity { <# .SYNOPSIS Test integriteit van forensische gegevens door hash-verificatie. .DESCRIPTION Deze functie simuleert hash-verificatie voor forensische gegevens. In productie zou dit daadwerkelijk hashes berekenen en vergelijken. #> [CmdletBinding()] param() if (Get-IsLocalDebug) { return [PSCustomObject]@{ Timestamp = Get-Date TotalFilesChecked = 150 FilesWithValidHash = 150 FilesWithInvalidHash = 0 FilesWithMissingHash = 0 IntegrityStatus = "Valid" } } # In productie: implementeer daadwerkelijke hash-verificatie # Dit vereist toegang tot forensische storage en hash-database Write-Verbose "Hash-verificatie vereist toegang tot forensische storage en hash-database." return [PSCustomObject]@{ Timestamp = Get-Date TotalFilesChecked = 0 FilesWithValidHash = 0 FilesWithInvalidHash = 0 FilesWithMissingHash = 0 IntegrityStatus = "Unknown" } } function Invoke-Monitoring { <# .SYNOPSIS Controleert forensische storage-configuraties en integriteit. #> [CmdletBinding()] param() Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Monitoring" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan $storageConfig = Get-ForensicStorageConfiguration $integrityStatus = Test-ForensicDataIntegrity Write-Host "`nFORENSISCHE STORAGE CONFIGURATIE" -ForegroundColor White Write-Host "--------------------------------" -ForegroundColor White Write-Host "Totaal forensische storage-accounts: $($storageConfig.TotalForensicStorageAccounts)" -ForegroundColor White Write-Host "Storage-accounts met immutability: $($storageConfig.StorageAccountsWithImmutability)" -ForegroundColor $(if ($storageConfig.StorageAccountsWithImmutability -eq $storageConfig.TotalForensicStorageAccounts -and $storageConfig.TotalForensicStorageAccounts -gt 0) { "Green" } else { "Yellow" }) Write-Host "Storage-accounts met versleuteling: $($storageConfig.StorageAccountsWithEncryption)" -ForegroundColor $(if ($storageConfig.StorageAccountsWithEncryption -eq $storageConfig.TotalForensicStorageAccounts -and $storageConfig.TotalForensicStorageAccounts -gt 0) { "Green" } else { "Yellow" }) Write-Host "Storage-accounts met netwerkisolatie: $($storageConfig.StorageAccountsWithNetworkIsolation)" -ForegroundColor $(if ($storageConfig.StorageAccountsWithNetworkIsolation -eq $storageConfig.TotalForensicStorageAccounts -and $storageConfig.TotalForensicStorageAccounts -gt 0) { "Green" } else { "Yellow" }) Write-Host "Totaal forensische data size: $($storageConfig.TotalForensicDataSizeGB) GB" -ForegroundColor White if ($storageConfig.StorageAccounts.Count -gt 0) { Write-Host "`nPer storage-account:" -ForegroundColor Cyan foreach ($sa in $storageConfig.StorageAccounts) { Write-Host "`nStorage-account: $($sa.StorageAccountName)" -ForegroundColor Cyan Write-Host " Resourcegroep: $($sa.ResourceGroupName)" -ForegroundColor Gray Write-Host " Immutability policy: $(if ($sa.HasImmutabilityPolicy) { "Geconfigureerd ($($sa.ImmutabilityRetentionDays) dagen)" } else { "Niet geconfigureerd" })" -ForegroundColor $(if ($sa.HasImmutabilityPolicy) { "Green" } else { "Yellow" }) Write-Host " Versleuteling: $(if ($sa.HasEncryption) { "Ingeschakeld" } else { "Uitgeschakeld" })" -ForegroundColor $(if ($sa.HasEncryption) { "Green" } else { "Yellow" }) Write-Host " Netwerkisolatie: $(if ($sa.HasNetworkIsolation) { "Geconfigureerd" } else { "Niet geconfigureerd" })" -ForegroundColor $(if ($sa.HasNetworkIsolation) { "Green" } else { "Yellow" }) Write-Host " Data size: $($sa.DataSizeGB) GB" -ForegroundColor White Write-Host " Access tier: $($sa.AccessTier)" -ForegroundColor White } } Write-Host "`nINTEGRITEIT STATUS" -ForegroundColor White Write-Host "-----------------" -ForegroundColor White Write-Host "Status: $($integrityStatus.IntegrityStatus)" -ForegroundColor $(switch ($integrityStatus.IntegrityStatus) { "Valid" { "Green" } "Invalid" { "Red" } default { "Yellow" } }) if ($integrityStatus.TotalFilesChecked -gt 0) { Write-Host "Bestanden gecontroleerd: $($integrityStatus.TotalFilesChecked)" -ForegroundColor Gray Write-Host "Bestanden met geldige hash: $($integrityStatus.FilesWithValidHash)" -ForegroundColor Green if ($integrityStatus.FilesWithInvalidHash -gt 0) { Write-Host "Bestanden met ongeldige hash: $($integrityStatus.FilesWithInvalidHash)" -ForegroundColor Red } if ($integrityStatus.FilesWithMissingHash -gt 0) { Write-Host "Bestanden zonder hash: $($integrityStatus.FilesWithMissingHash)" -ForegroundColor Yellow } } Write-Host "`nAANBEVELINGEN" -ForegroundColor Cyan Write-Host "------------" -ForegroundColor Cyan if ($storageConfig.TotalForensicStorageAccounts -eq 0) { Write-Host " [KRITIEK] Geen forensische storage-accounts gevonden." -ForegroundColor Red Write-Host " • Richt forensische storage-accounts in met immutability-beveiliging" -ForegroundColor Yellow Write-Host " • Configureer versleuteling en netwerkisolatie" -ForegroundColor Yellow } elseif ($storageConfig.StorageAccountsWithImmutability -lt $storageConfig.TotalForensicStorageAccounts) { Write-Host " [WAARSCHUWING] Niet alle forensische storage-accounts hebben immutability-beveiliging." -ForegroundColor Yellow Write-Host " • Configureer immutability policies voor alle forensische storage-accounts" -ForegroundColor Yellow } elseif ($storageConfig.StorageAccountsWithEncryption -lt $storageConfig.TotalForensicStorageAccounts) { Write-Host " [WAARSCHUWING] Niet alle forensische storage-accounts hebben versleuteling ingeschakeld." -ForegroundColor Yellow Write-Host " • Schakel versleuteling in voor alle forensische storage-accounts" -ForegroundColor Yellow } elseif ($storageConfig.StorageAccountsWithNetworkIsolation -lt $storageConfig.TotalForensicStorageAccounts) { Write-Host " [WAARSCHUWING] Niet alle forensische storage-accounts hebben netwerkisolatie." -ForegroundColor Yellow Write-Host " • Configureer netwerkisolatie voor alle forensische storage-accounts" -ForegroundColor Yellow } else { Write-Host " [OK] Forensische storage-configuratie voldoet aan de eisen." -ForegroundColor Green Write-Host " • Blijf regelmatig monitoren voor vroegtijdige detectie van problemen" -ForegroundColor Gray Write-Host " • Voer regelmatig hash-verificatie uit om integriteit te waarborgen" -ForegroundColor Gray } if ($integrityStatus.IntegrityStatus -eq "Invalid") { Write-Host " [KRITIEK] Integriteitsproblemen gedetecteerd in forensische gegevens." -ForegroundColor Red Write-Host " • Onderzoek onmiddellijk welke bestanden zijn gewijzigd" -ForegroundColor Red Write-Host " • Documenteer alle wijzigingen in chain of custody-logboek" -ForegroundColor Red } Write-Host "`nVoor gedetailleerde informatie, zie:" -ForegroundColor Gray Write-Host " content/azure/management/forensic-data-collection.json" -ForegroundColor Gray Write-Host "" return $storageConfig } function Invoke-Implementation { <# .SYNOPSIS Ondersteunt forensische datacollectie-activatie en configuratie. .DESCRIPTION Deze functie geeft richtlijnen voor forensische datacollectie maar voert geen automatische configuratie uit vanwege de complexiteit en juridische vereisten. #> [CmdletBinding()] param() Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Implementatie" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan $storageConfig = Get-ForensicStorageConfiguration Write-Host "`n[INFO] Forensische datacollectie vereist zorgvuldige planning en configuratie" -ForegroundColor Cyan Write-Host " vanwege juridische vereisten en chain of custody-eisen." -ForegroundColor Cyan Write-Host "`nAanbevolen stappen:" -ForegroundColor Cyan Write-Host " 1. Richt forensische storage-accounts in met immutability-beveiliging" -ForegroundColor White Write-Host " 2. Configureer versleuteling en netwerkisolatie voor forensische storage" -ForegroundColor White Write-Host " 3. Ontwikkel forensische datacollectieprocedures voor verschillende scenario's" -ForegroundColor White Write-Host " 4. Configureer geautomatiseerde scripts voor forensische datacollectie" -ForegroundColor White Write-Host " 5. Implementeer hash-database voor integriteitswaarborging" -ForegroundColor White Write-Host " 6. Documenteer chain of custody-procedures" -ForegroundColor White Write-Host " 7. Test forensische datacollectieprocedures regelmatig" -ForegroundColor White if ($storageConfig.TotalForensicStorageAccounts -eq 0) { Write-Host "`nEr zijn geen forensische storage-accounts geconfigureerd:" -ForegroundColor Yellow Write-Host " • Prioriteer het inrichten van forensische storage-accounts" -ForegroundColor Yellow Write-Host " • Configureer immutability policies voor langere bewaartermijnen" -ForegroundColor Yellow } return $storageConfig } function Invoke-Remediation { <# .SYNOPSIS Identificeert ontbrekende forensische configuraties en genereert aanbevelingen. #> [CmdletBinding()] param() Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Remediatie" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan $storageConfig = Get-ForensicStorageConfiguration if ($storageConfig.TotalForensicStorageAccounts -eq 0) { Write-Host "`n[KRITIEK] Geen forensische storage-accounts gevonden." -ForegroundColor Red Write-Host "`nAanbevolen acties:" -ForegroundColor Cyan Write-Host " 1. Richt forensische storage-accounts in in aparte resourcegroepen" -ForegroundColor White Write-Host " 2. Configureer immutability policies voor langere bewaartermijnen (minimaal 7 jaar)" -ForegroundColor White Write-Host " 3. Schakel versleuteling in met customer-managed keys" -ForegroundColor White Write-Host " 4. Configureer netwerkisolatie via private endpoints of service endpoints" -ForegroundColor White Write-Host " 5. Documenteer forensische storage-configuratie in forensisch datacollectieplan" -ForegroundColor White } elseif ($storageConfig.StorageAccountsWithImmutability -lt $storageConfig.TotalForensicStorageAccounts) { Write-Host "`n[WAARSCHUWING] Niet alle forensische storage-accounts hebben immutability-beveiliging." -ForegroundColor Yellow Write-Host "`nAanbevolen acties:" -ForegroundColor Cyan Write-Host " 1. Configureer immutability policies voor alle forensische storage-containers" -ForegroundColor White Write-Host " 2. Stel retentieperiode in op minimaal 7 jaar (2555 dagen)" -ForegroundColor White Write-Host " 3. Verifieer dat immutability policies correct zijn geconfigureerd" -ForegroundColor White } elseif ($storageConfig.StorageAccountsWithEncryption -lt $storageConfig.TotalForensicStorageAccounts) { Write-Host "`n[WAARSCHUWING] Niet alle forensische storage-accounts hebben versleuteling ingeschakeld." -ForegroundColor Yellow Write-Host "`nAanbevolen acties:" -ForegroundColor Cyan Write-Host " 1. Schakel Azure Storage Service Encryption in voor alle forensische storage-accounts" -ForegroundColor White Write-Host " 2. Overweeg customer-managed keys voor extra controle" -ForegroundColor White Write-Host " 3. Verifieer dat versleuteling correct is geconfigureerd" -ForegroundColor White } elseif ($storageConfig.StorageAccountsWithNetworkIsolation -lt $storageConfig.TotalForensicStorageAccounts) { Write-Host "`n[WAARSCHUWING] Niet alle forensische storage-accounts hebben netwerkisolatie." -ForegroundColor Yellow Write-Host "`nAanbevolen acties:" -ForegroundColor Cyan Write-Host " 1. Configureer netwerkisolatie via private endpoints of service endpoints" -ForegroundColor White Write-Host " 2. Beperk toegang tot geautoriseerde netwerken en IP-adressen" -ForegroundColor White Write-Host " 3. Verifieer dat netwerkisolatie correct is geconfigureerd" -ForegroundColor White } else { Write-Host "`n[INFO] Forensische storage-configuratie voldoet aan de eisen." -ForegroundColor Green Write-Host "Zorg dat forensische datacollectieprocedures actueel blijven en regelmatig worden getest." -ForegroundColor Cyan } return $storageConfig } try { Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan if ($Monitoring) { Invoke-Monitoring | Out-Null } elseif ($Implementation) { Invoke-Implementation | Out-Null } elseif ($Remediation) { Invoke-Remediation | Out-Null } else { # Standaard: monitoring-uitvoer Invoke-Monitoring | Out-Null } } catch { Write-Error ("Fout tijdens uitvoering van {0}: {1}" -f $PolicyName, $_) exit 1 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
Critical: Zonder een doordacht forensisch datacollectieproces lopen organisaties een kritiek risico op verlies van cruciale bewijsstukken, onvolledige incidentonderzoeken, en niet-naleving van wettelijke verplichtingen zoals de NIS2 richtlijn, de AVG en de Baseline Informatiebeveiliging Overheid. Dit kan leiden tot boetes, toezichtsancties, verlies van vertrouwen bij burgers, en mogelijk onherstelbare schade aan de organisatie. Daarnaast kunnen organisaties niet aantonen dat zij voldoen aan compliance-eisen voor forensische datacollectie en incidentonderzoek.

Management Samenvatting

Forensische datacollectie biedt een gestructureerde aanpak voor het verzamelen, bewaren en analyseren van digitale bewijsstukken tijdens beveiligingsincidenten. Correcte implementatie vereist forensische datacollectieprocedures, chain of custody-waarborging, forensische storage met immutability-beveiliging, geautomatiseerde verzamelscripts, en regelmatige oefeningen. Implementatie: 140 uur. Critical voor aantoonbare forensische capaciteiten volgens BIO-, NIS2- en AVG-eisen.