Privacy Assessment: Methodologie En Implementatie Voor Microsoft 365 En Azure

💼 Management Samenvatting

Privacy assessments vormen de ruggengraat van effectieve gegevensbescherming in Nederlandse overheidsorganisaties. In een tijd waarin Microsoft 365 en Azure steeds meer geavanceerde functionaliteiten bieden – van generatieve AI tot geavanceerde analytics – is het essentieel dat organisaties systematisch en proactief privacyrisico's identificeren, beoordelen en mitigeren voordat nieuwe systemen of processen worden geïmplementeerd. Een goed uitgevoerde privacy assessment helpt niet alleen om te voldoen aan AVG-verplichtingen, maar creëert ook vertrouwen bij burgers, bestuur en toezichthouders door transparantie en aantoonbare zorgvuldigheid te demonstreren.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
200u (tech: 80u)
Van toepassing op:
Rijksoverheid
Gemeenten
Zorginstellingen
Onderwijs
Vitale aanbieders

Zonder gestructureerde privacy assessments lopen Nederlandse publieke organisaties het risico dat privacyrisico's pas worden ontdekt nadat systemen al in gebruik zijn genomen, wat leidt tot dure aanpassingen, mogelijke datalekken en reputatieschade. Veel organisaties worstelen met vragen als: wanneer is een DPIA verplicht, hoe beoordeel je privacyrisico's in cloudomgevingen, welke methodologie gebruik je voor AI-toepassingen, en hoe zorg je dat assessments daadwerkelijk doorwerken in technische en organisatorische maatregelen? Bovendien zien we dat assessments vaak ad hoc worden uitgevoerd, zonder duidelijke methodologie, waardoor resultaten niet vergelijkbaar zijn en belangrijke risico's over het hoofd worden gezien. Dit artikel biedt een praktische, herbruikbare aanpak die specifiek is toegesneden op de Nederlandse publieke sector en Microsoft 365- en Azure-omgevingen.

PowerShell Modules Vereist
Primary API: Microsoft 365 Admin Center, Microsoft Purview, Azure Portal
Connection: PowerShell, Microsoft Graph, REST API's
Required Modules: Microsoft.PowerShell.Management, Microsoft.Graph

Implementatie

Dit artikel beschrijft een complete methodologie voor privacy assessments binnen de context van Microsoft 365 en Azure voor Nederlandse overheidsorganisaties. We behandelen de verschillende typen privacy assessments – van quick scans tot volledige DPIA's – en wanneer welke aanpak geschikt is. Daarnaast werken we uit hoe u assessments systematisch uitvoert, welke stakeholders betrokken moeten worden, welke documentatie vereist is en hoe u resultaten vertaalt naar concrete maatregelen. Het artikel sluit aan op AVG-artikelen 25, 32 en 35, de BIO, ISO 27001 en richtlijnen van de Autoriteit Persoonsgegevens. Het gekoppelde PowerShell-script ondersteunt u bij het inrichten van een gestructureerde assessment-workflow, het genereren van sjablonen en het monitoren van de status en kwaliteit van uitgevoerde assessments.

Typen privacy assessments en wanneer ze toe te passen

Privacy assessments zijn er in verschillende vormen, elk met een specifiek doel en reikwijdte. Een quick privacy scan is een lichte beoordeling die geschikt is voor relatief eenvoudige verwerkingen met beperkte privacyrisico's, zoals het gebruik van standaard Microsoft 365-functionaliteiten zonder bijzondere configuraties. Deze scan bestaat typisch uit een korte checklist met vragen over welke persoonsgegevens worden verwerkt, op welke grondslag, welke beveiligingsmaatregelen zijn getroffen en of er bijzondere risico's zijn. Quick scans kunnen worden uitgevoerd door proceseigenaren met ondersteuning van de privacy officer of Functionaris voor Gegevensbescherming (FG), en resulteren in een kort document dat bevestigt dat de verwerking proportioneel en rechtmatig is, of dat nader onderzoek nodig is.

Een volledige Data Protection Impact Assessment (DPIA) is verplicht wanneer verwerkingen een hoog risico voor de rechten en vrijheden van natuurlijke personen met zich meebrengen. Artikel 35 van de AVG noemt expliciet situaties waarin een DPIA verplicht is, zoals systematische en uitgebreide evaluatie van persoonlijke aspecten van natuurlijke personen (profiling), grootschalige verwerking van bijzondere persoonsgegevens, en systematische monitoring van openbaar toegankelijke ruimten. Voor Microsoft 365- en Azure-scenario's betekent dit dat DPIA's vaak nodig zijn bij de inzet van AI-functionaliteiten zoals Microsoft Copilot, geavanceerde analytics in Power BI met persoonsgegevens, gebruik van Azure Cognitive Services voor gezichtsherkenning of spraakanalyse, en grootschalige monitoring via Microsoft Sentinel. Een DPIA is een gestructureerd proces dat meerdere weken kan duren en waarbij verschillende stakeholders betrokken zijn, zoals proceseigenaren, IT-architecten, security officers, de FG en waar nodig externe experts.

Naast quick scans en DPIA's zijn er ook tussenvormen, zoals uitgebreide privacy assessments voor verwerkingen die weliswaar geen volledige DPIA vereisen, maar toch significante privacyrisico's met zich meebrengen. Denk aan de implementatie van nieuwe Microsoft 365-workloads zoals Teams voor specifieke use cases, het gebruik van Azure Data Factory voor datatransformaties met persoonsgegevens, of de inzet van Microsoft Purview voor gegevensclassificatie en -governance. Deze assessments volgen een gestructureerde methodologie maar zijn minder omvangrijk dan een volledige DPIA, en richten zich vooral op het identificeren van specifieke risico's en het vaststellen van passende maatregelen. Het is belangrijk dat organisaties duidelijke criteria hebben voor wanneer welke type assessment wordt uitgevoerd, zodat er consistentie ontstaat en geen belangrijke verwerkingen worden gemist.

Voor Nederlandse overheidsorganisaties is het bovendien relevant om periodieke privacy assessments uit te voeren op bestaande verwerkingen. De AVG vereist niet alleen dat nieuwe verwerkingen worden beoordeeld, maar ook dat bestaande verwerkingen regelmatig worden geëvalueerd om te controleren of de oorspronkelijke risicoanalyse nog actueel is, of nieuwe risico's zijn ontstaan door wijzigingen in technologie of wetgeving, en of genomen maatregelen nog steeds adequaat zijn. Dit is bijzonder relevant voor cloudomgevingen zoals Microsoft 365 en Azure, waar Microsoft regelmatig nieuwe functionaliteiten introduceert die automatisch beschikbaar kunnen worden, en waar configuraties kunnen veranderen door updates of wijzigingen in gebruikspatronen. Periodieke assessments helpen organisaties om proactief te blijven en te voorkomen dat privacyrisico's ongemerkt toenemen.

Praktische methodologie voor privacy assessments

Een effectieve privacy assessment begint met een duidelijke scope en systeembegrip. Dit betekent dat u eerst vaststelt welke verwerking precies wordt beoordeeld, welke persoonsgegevens daarbij betrokken zijn, welke systemen en processen worden gebruikt, en wie de verschillende rollen vervult – zoals verwerkingsverantwoordelijke, verwerker, betrokkenen en ontvangers. Voor Microsoft 365- en Azure-scenario's is het belangrijk om niet alleen te kijken naar de primaire workload, maar ook naar de onderliggende infrastructuur, integraties met andere systemen, datastromen tussen verschillende services, en de rol van Microsoft als verwerker. Het systeembegrip moet voldoende diepgaand zijn om alle relevante privacyaspecten te kunnen beoordelen, maar niet zo gedetailleerd dat de assessment onnodig complex wordt.

De volgende stap is risico-identificatie en -beoordeling. Hierbij worden systematisch alle mogelijke privacyrisico's geïdentificeerd die kunnen ontstaan voor betrokkenen, zoals ongeautoriseerde toegang tot persoonsgegevens, verlies of vernietiging van gegevens, onjuiste verwerking, gebrek aan transparantie, of schending van rechten van betrokkenen zoals inzage, rectificatie of verwijdering. Voor elk geïdentificeerd risico wordt beoordeeld wat de waarschijnlijkheid is dat het risico zich voordoet en wat de impact is voor betrokkenen wanneer het risico zich voordoet. Deze beoordeling resulteert in een risicomatrix die helpt om prioriteiten te stellen: risico's met hoge waarschijnlijkheid en hoge impact vereisen directe aandacht, terwijl risico's met lage waarschijnlijkheid en lage impact mogelijk acceptabel zijn of met eenvoudige maatregelen kunnen worden gemitigeerd.

Na risico-identificatie volgt de fase van maatregelselectie en -implementatie. Voor elk geïdentificeerd risico worden passende technische en organisatorische maatregelen voorgesteld die het risico reduceren tot een acceptabel niveau. In de context van Microsoft 365 en Azure betekent dit vaak het configureren van toegangsbeheer, het inschakelen van encryptie, het implementeren van logging en monitoring, het instellen van bewaartermijnen, of het aanpassen van processen rond gegevensverwerking. Het is belangrijk dat maatregelen niet alleen worden voorgesteld, maar ook worden geëvalueerd op hun effectiviteit: vermindert de maatregel daadwerkelijk het risico, is de maatregel proportioneel, en zijn er geen onbedoelde negatieve gevolgen? Daarnaast moet worden vastgelegd wie verantwoordelijk is voor de implementatie van elke maatregel, wanneer deze moet zijn geïmplementeerd, en hoe wordt gemonitord of de maatregel daadwerkelijk werkt.

De laatste fase van een privacy assessment is besluitvorming en documentatie. Op basis van de risicoanalyse en voorgestelde maatregelen wordt een besluit genomen over of de verwerking kan doorgaan, of aanvullende maatregelen nodig zijn, of de verwerking moet worden aangepast, of in uitzonderlijke gevallen de verwerking niet mag plaatsvinden. Dit besluit wordt genomen door de verwerkingsverantwoordelijke, bij voorkeur in overleg met de FG, en wordt vastgelegd in een besluitvormingsverslag. De volledige assessment – inclusief scope, risicoanalyse, maatregelen en besluit – wordt gedocumenteerd en bewaard volgens de vereiste bewaartermijnen, zodat deze beschikbaar is voor audits, toezichthouders of betrokkenen die vragen hebben over de verwerking. Het gekoppelde PowerShell-script ondersteunt deze fase door te controleren of alle vereiste documentatie aanwezig is en of assessments regelmatig worden geactualiseerd.

Betrokken stakeholders en rollen

Een succesvolle privacy assessment vereist de betrokkenheid van verschillende stakeholders, elk met hun eigen expertise en verantwoordelijkheden. De proceseigenaar of business owner is verantwoordelijk voor de verwerking en moet daarom actief betrokken zijn bij de assessment. Deze persoon heeft de beste kennis van het doel van de verwerking, welke persoonsgegevens nodig zijn, wie de betrokkenen zijn, en wat de business requirements zijn. De proceseigenaar moet kunnen uitleggen waarom de verwerking noodzakelijk is, op welke rechtsgrond deze steunt, en welke waarde de verwerking oplevert voor de organisatie en burgers. Zonder actieve betrokkenheid van de proceseigenaar bestaat het risico dat de assessment te technisch wordt en de business context mist, of dat voorgestelde maatregelen niet haalbaar zijn in de praktijk.

De Functionaris voor Gegevensbescherming (FG) of privacy officer speelt een centrale rol in privacy assessments. Deze persoon heeft expertise op het gebied van privacywetgeving, risicoanalyse en compliance, en kan adviseren over welke type assessment nodig is, welke risico's relevant zijn, en welke maatregelen passend zijn. De FG is vaak verantwoordelijk voor het opstellen of reviewen van de assessment, het begeleiden van het proces, en het adviseren van de verwerkingsverantwoordelijke bij besluitvorming. Voor complexe assessments, zoals DPIA's voor AI-toepassingen, kan de FG ook externe expertise inschakelen wanneer nodig. Het is belangrijk dat de FG onafhankelijk kan opereren en voldoende tijd en middelen heeft om assessments kwalitatief goed uit te voeren.

IT-architecten en security officers zijn essentieel voor het technische deel van de assessment. Zij hebben kennis van de Microsoft 365- en Azure-architectuur, weten welke beveiligingsmaatregelen beschikbaar zijn, en kunnen beoordelen of voorgestelde maatregelen technisch haalbaar en effectief zijn. IT-architecten kunnen helpen bij het in kaart brengen van datastromen, het identificeren van technische risico's, en het ontwerpen van oplossingen die privacy by design implementeren. Security officers kunnen adviseren over beveiligingsmaatregelen zoals encryptie, toegangsbeheer, logging en monitoring, en kunnen helpen bij het beoordelen van de effectiviteit van maatregelen. Zonder technische expertise bestaat het risico dat assessments te abstract worden en dat voorgestelde maatregelen niet praktisch uitvoerbaar zijn.

Afhankelijk van de complexiteit en het risico van de verwerking kunnen ook andere stakeholders betrokken zijn, zoals juridische adviseurs voor complexe rechtsvragen, data scientists voor AI-specifieke risico's, gebruikers of gebruikersvertegenwoordigers voor gebruikersperspectief, of externe auditors voor onafhankelijke validatie. Het is belangrijk dat de samenstelling van het assessmentteam past bij de complexiteit van de verwerking: voor eenvoudige verwerkingen kan een klein team volstaan, terwijl complexe AI-toepassingen of grootschalige verwerkingen een multidisciplinair team vereisen. Het assessmentteam moet regelmatig overleggen, duidelijke afspraken hebben over verantwoordelijkheden en deadlines, en voldoende tijd en middelen krijgen om de assessment kwalitatief goed uit te voeren.

Documentatie en bewijsvoering

Goede documentatie is essentieel voor privacy assessments, niet alleen om het proces te structureren en te begeleiden, maar ook om aantoonbaar te maken dat de organisatie zorgvuldig heeft gehandeld en om te voldoen aan de verantwoordingsplicht uit artikel 5 lid 2 van de AVG. De documentatie moet minimaal bevatten: een beschrijving van de verwerking en het doel, een overzicht van de verwerkte persoonsgegevens en betrokkenen, een analyse van de rechtsgrond, een risicoanalyse met geïdentificeerde risico's en beoordeling van waarschijnlijkheid en impact, een overzicht van voorgestelde en geïmplementeerde maatregelen, en een besluitvormingsverslag met de uitkomst van de assessment. Voor DPIA's zijn er aanvullende eisen, zoals een beschrijving van de verwerking en de doeleinden, een beoordeling van de noodzakelijkheid en proportionaliteit, een risicoanalyse, en de maatregelen om risico's te mitigeren.

Voor Microsoft 365- en Azure-scenario's is het belangrijk om ook technische documentatie op te nemen, zoals architectuurdiagrammen die datastromen tonen, configuratiedocumentatie die laat zien welke beveiligingsinstellingen zijn geactiveerd, en screenshots of exports van compliance-configuraties. Dit helpt niet alleen bij het begrijpen van de verwerking, maar ook bij het aantonen aan auditors of toezichthouders dat maatregelen daadwerkelijk zijn geïmplementeerd. Daarnaast is het zinvol om referenties op te nemen naar relevante beleidsdocumenten, procedures, verwerkersovereenkomsten, en andere assessments die relevant zijn voor de verwerking. Door deze documentatie centraal te beheren in een gestructureerde repository, bijvoorbeeld in SharePoint of een specifiek compliance-platform, wordt het eenvoudiger om assessments te vinden, te actualiseren en te gebruiken voor audits of toezichtsbezoeken.

Privacy assessments zijn geen eenmalige exercities, maar moeten regelmatig worden geactualiseerd wanneer de verwerking verandert, nieuwe risico's ontstaan, of wetgeving wijzigt. Het is daarom belangrijk om een proces in te richten voor het beheren van assessments, waarbij wordt vastgelegd wanneer assessments moeten worden herzien, wie verantwoordelijk is voor actualisatie, en hoe wijzigingen worden gedocumenteerd. Het gekoppelde PowerShell-script kan helpen bij het monitoren van de actualiteit van assessments door te controleren op de aanwezigheid van assessments, de datum van laatste update, en of vereiste onderdelen aanwezig zijn. Door assessments te koppelen aan change management-processen, bijvoorbeeld door een verplichte privacy-check in te bouwen in wijzigingsprocedures, wordt geborgd dat wijzigingen in systemen of processen ook leiden tot actualisatie van assessments wanneer nodig.

Gebruik PowerShell-script index.ps1 (functie Invoke-PrivacyAssessmentCheck) – Controleert de aanwezigheid en kwaliteit van privacy assessments, genereert sjablonen voor nieuwe assessments, en monitort de actualiteit van bestaande assessments..

Tot slot is het belangrijk om assessments te gebruiken als leermiddel en verbeterinstrument. Door regelmatig te evalueren welke risico's het vaakst worden geïdentificeerd, welke maatregelen het meest effectief zijn, en waar assessments tekortschieten, kunnen organisaties hun privacy assessment-proces continu verbeteren. Dit kan leiden tot betere sjablonen, duidelijkere richtlijnen, betere training van betrokkenen, en uiteindelijk tot betere privacybescherming. Door lessons learned te delen tussen verschillende afdelingen of projecten, kunnen organisaties voorkomen dat dezelfde fouten opnieuw worden gemaakt en kunnen best practices worden verspreid. Het assessmentproces zelf moet daarom ook regelmatig worden geëvalueerd en verbeterd, zodat het steeds effectiever wordt in het identificeren en mitigeren van privacyrisico's.

Implementatie en integratie in organisatieprocessen

Om privacy assessments effectief te maken, moeten ze worden geïntegreerd in de dagelijkse processen van de organisatie, niet als een losstaande compliance-activiteit. Dit begint bij het inrichten van een duidelijk proces voor het initiëren van assessments, waarbij wordt vastgelegd wanneer een assessment moet worden gestart, wie verantwoordelijk is voor het initiëren, en welke stappen moeten worden doorlopen. Voor nieuwe projecten of initiatieven moet een privacy assessment standaard deel uitmaken van de projectplanning, zodat privacy vanaf het begin wordt meegenomen en niet pas aan het einde als een check-box activiteit. Dit sluit aan op het privacy by design-principe uit artikel 25 van de AVG, dat vereist dat privacy al in het ontwerp van systemen en processen wordt meegenomen.

Een belangrijk aspect van implementatie is het trainen en bewustmaken van betrokkenen. Proceseigenaren, projectleiders, IT-architecten en andere stakeholders moeten begrijpen waarom privacy assessments belangrijk zijn, wanneer ze nodig zijn, en hoe ze bijdragen aan de assessment. Training moet praktisch zijn en aansluiten bij de dagelijkse werkzaamheden, bijvoorbeeld door concrete voorbeelden te geven van Microsoft 365- en Azure-scenario's, door te oefenen met het invullen van assessment-sjablonen, en door te laten zien hoe assessment-resultaten doorwerken in technische en organisatorische maatregelen. Daarnaast is het belangrijk om success stories te delen, zodat betrokkenen zien dat assessments niet alleen een verplichting zijn, maar ook daadwerkelijk helpen om risico's te voorkomen en betere oplossingen te ontwerpen.

Technische ondersteuning kan de implementatie van privacy assessments aanzienlijk vergemakkelijken. Het gekoppelde PowerShell-script biedt functionaliteit voor het genereren van assessment-sjablonen, het controleren van de aanwezigheid en kwaliteit van assessments, en het monitoren van de actualiteit. Daarnaast kunnen organisaties gebruikmaken van Microsoft Purview om dataclassificatie en -governance te ondersteunen, Microsoft Compliance Manager om compliance-status te monitoren, en Microsoft Sentinel om security- en privacy-incidenten te detecteren. Door deze tools te integreren met het assessmentproces, wordt het eenvoudiger om risico's te identificeren, maatregelen te implementeren en te monitoren, en compliance aan te tonen. Het is belangrijk dat deze tools niet worden gezien als vervanging van het assessmentproces, maar als ondersteuning die het proces efficiënter en effectiever maakt.

Gebruik PowerShell-script index.ps1 (functie New-PrivacyAssessmentTemplate) – Genereert gestandaardiseerde sjablonen voor privacy assessments, afgestemd op verschillende scenario's zoals quick scans, uitgebreide assessments en DPIA's..

Tot slot moet de implementatie worden ondersteund door duidelijke governance en verantwoordelijkheden. De verwerkingsverantwoordelijke is eindverantwoordelijk voor privacy assessments, maar moet worden ondersteund door de FG, IT, security en andere relevante afdelingen. Het is belangrijk dat er voldoende capaciteit en middelen beschikbaar zijn om assessments kwalitatief goed uit te voeren, en dat er duidelijke afspraken zijn over prioritering wanneer meerdere assessments tegelijk moeten worden uitgevoerd. Door assessments te koppelen aan bestaande governance-structuren, zoals projectboards, change advisory boards of security committees, wordt geborgd dat privacy een integraal onderdeel is van besluitvorming en niet als een losstaande activiteit wordt gezien. Dit draagt bij aan een privacybewuste cultuur waarin privacy assessments niet worden gezien als een last, maar als een waardevol instrument voor betere dienstverlening en risicobeheer.

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
<# .SYNOPSIS Privacy Assessment Monitoring en Template Generatie .DESCRIPTION Ondersteunt Nederlandse overheidsorganisaties bij het monitoren en beheren van privacy assessments voor Microsoft 365- en Azure-verwerkingen. Het script controleert de aanwezigheid en kwaliteit van privacy assessments, genereert gestandaardiseerde sjablonen voor nieuwe assessments, en monitort de actualiteit van bestaande assessments. .NOTES Filename: index.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-01-27 Last Modified: 2025-01-27 Version: 1.0 Related JSON: content/compliance/privacy-assessment/index.json .EXAMPLE .\index.ps1 -Check Controleert de aanwezigheid en kwaliteit van privacy assessments in de repository. .EXAMPLE .\index.ps1 -Template -Type "DPIA" -OutputPath ".\assessments\dpia-template.md" Genereert een DPIA-sjabloon voor een nieuwe privacy assessment. .EXAMPLE .\index.ps1 -Monitor Monitort de actualiteit van bestaande privacy assessments en identificeert assessments die herziening vereisen. #> #Requires -Version 5.1 [CmdletBinding()] param( [Parameter(HelpMessage = "Controleer de aanwezigheid en kwaliteit van privacy assessments")] [switch]$Check, [Parameter(HelpMessage = "Genereer een gestandaardiseerd sjabloon voor een nieuwe privacy assessment")] [switch]$Template, [Parameter(HelpMessage = "Type assessment: QuickScan, ExtendedAssessment of DPIA")] [ValidateSet("QuickScan", "ExtendedAssessment", "DPIA")] [string]$Type = "ExtendedAssessment", [Parameter(HelpMessage = "Pad waar het sjabloon moet worden opgeslagen")] [string]$OutputPath, [Parameter(HelpMessage = "Monitor de actualiteit van bestaande privacy assessments")] [switch]$Monitor, [Parameter(HelpMessage = "Voer een veilige lokale test uit met voorbeelddata")] [switch]$DebugMode ) $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' function Get-RepositoryRoot { <# .SYNOPSIS Bepaalt de rootmap van de repository op basis van de locatie van dit script. #> [CmdletBinding()] param() $root = Resolve-Path (Join-Path $PSScriptRoot "..\..") -ErrorAction SilentlyContinue if (-not $root) { throw "Kon de repository-root niet bepalen op basis van PSScriptRoot: $PSScriptRoot" } return $root.Path } function Get-PrivacyAssessmentPaths { <# .SYNOPSIS Bepaalt de paden voor privacy assessment-documentatie. .OUTPUTS PSCustomObject met padinformatie. #> [CmdletBinding()] param() $repoRoot = Get-RepositoryRoot $docsRoot = Join-Path $repoRoot "documentatie\privacy-assessments" $quickScanFolder = Join-Path $docsRoot "quick-scans" $extendedFolder = Join-Path $docsRoot "extended-assessments" $dpiaFolder = Join-Path $docsRoot "dpia" $templatesFolder = Join-Path $docsRoot "templates" [PSCustomObject]@{ RepositoryRoot = $repoRoot DocsRoot = $docsRoot QuickScanFolder = $quickScanFolder ExtendedFolder = $extendedFolder DpiaFolder = $dpiaFolder TemplatesFolder = $templatesFolder } } function Test-PrivacyAssessmentQuality { <# .SYNOPSIS Controleert de kwaliteit van een privacy assessment-document. .PARAMETER FilePath Pad naar het assessment-bestand. .OUTPUTS PSCustomObject met kwaliteitsresultaten. #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$FilePath ) if (-not (Test-Path -Path $FilePath)) { return [PSCustomObject]@{ Exists = $false QualityScore = 0 MissingSections = @("Bestand niet gevonden") } } $content = Get-Content -Path $FilePath -Raw -ErrorAction SilentlyContinue if (-not $content) { return [PSCustomObject]@{ Exists = $true QualityScore = 0 MissingSections = @("Bestand is leeg") } } $requiredSections = @( "Verwerking", "Persoonsgegevens", "Rechtsgrond", "Risico", "Maatregel" ) $foundSections = @() $missingSections = @() foreach ($section in $requiredSections) { if ($content -match $section) { $foundSections += $section } else { $missingSections += $section } } $qualityScore = [math]::Round(($foundSections.Count / $requiredSections.Count) * 100, 1) return [PSCustomObject]@{ Exists = $true QualityScore = $qualityScore FoundSections = $foundSections MissingSections = $missingSections FilePath = $FilePath } } function Invoke-PrivacyAssessmentCheck { <# .SYNOPSIS Controleert de aanwezigheid en kwaliteit van privacy assessments. .OUTPUTS PSCustomObject met samenvatting van de status. #> [CmdletBinding()] param() Write-Host "" Write-Host "Privacy Assessment – Controle aanwezigheid en kwaliteit" -ForegroundColor Cyan Write-Host "========================================================" -ForegroundColor Cyan if ($DebugMode) { Write-Host "DebugMode ingeschakeld: er worden geen bestanden gelezen of geschreven." -ForegroundColor Yellow $summary = [PSCustomObject]@{ DocsRootExists = $true TotalAssessments = 5 QuickScans = 2 ExtendedAssessments = 2 Dpias = 1 AverageQualityScore = 85.5 AssessmentsNeedingReview = 1 Timestamp = Get-Date } Write-Host "" Write-Host "Voorbeeldsamenvatting (debug):" -ForegroundColor Cyan $summary return $summary } $paths = Get-PrivacyAssessmentPaths Write-Verbose "Repository root: $($paths.RepositoryRoot)" Write-Verbose "Documentatiepad: $($paths.DocsRoot)" $summary = [PSCustomObject]@{ DocsRootExists = $false TotalAssessments = 0 QuickScans = 0 ExtendedAssessments = 0 Dpias = 0 AverageQualityScore = 0 AssessmentsNeedingReview = 0 Timestamp = Get-Date } if (Test-Path -Path $paths.DocsRoot) { $summary.DocsRootExists = $true } else { Write-Host "Documentatiemap voor privacy assessments bestaat nog niet: $($paths.DocsRoot)" -ForegroundColor Yellow return $summary } $allAssessments = @() $qualityScores = @() # Controleer quick scans if (Test-Path -Path $paths.QuickScanFolder) { $quickScans = Get-ChildItem -Path $paths.QuickScanFolder -File -Filter "*.md" -ErrorAction SilentlyContinue $summary.QuickScans = $quickScans.Count foreach ($file in $quickScans) { $quality = Test-PrivacyAssessmentQuality -FilePath $file.FullName $qualityScores += $quality.QualityScore $allAssessments += $quality } } # Controleer extended assessments if (Test-Path -Path $paths.ExtendedFolder) { $extended = Get-ChildItem -Path $paths.ExtendedFolder -File -Filter "*.md" -ErrorAction SilentlyContinue $summary.ExtendedAssessments = $extended.Count foreach ($file in $extended) { $quality = Test-PrivacyAssessmentQuality -FilePath $file.FullName $qualityScores += $quality.QualityScore $allAssessments += $quality } } # Controleer DPIA's if (Test-Path -Path $paths.DpiaFolder) { $dpias = Get-ChildItem -Path $paths.DpiaFolder -File -Filter "*.md" -ErrorAction SilentlyContinue $summary.Dpias = $dpias.Count foreach ($file in $dpias) { $quality = Test-PrivacyAssessmentQuality -FilePath $file.FullName $qualityScores += $quality.QualityScore $allAssessments += $quality } } $summary.TotalAssessments = $allAssessments.Count if ($qualityScores.Count -gt 0) { $summary.AverageQualityScore = [math]::Round(($qualityScores | Measure-Object -Average).Average, 1) } # Identificeer assessments die herziening vereisen (kwaliteit < 70%) $summary.AssessmentsNeedingReview = ($allAssessments | Where-Object { $_.QualityScore -lt 70 }).Count Write-Host "" Write-Host "Samenvatting:" -ForegroundColor Cyan Write-Host (" Documentatiemap aanwezig : {0}" -f ($summary.DocsRootExists)) -ForegroundColor Cyan Write-Host (" Totaal aantal assessments : {0}" -f ($summary.TotalAssessments)) -ForegroundColor Cyan Write-Host (" Quick scans : {0}" -f ($summary.QuickScans)) -ForegroundColor Cyan Write-Host (" Uitgebreide assessments : {0}" -f ($summary.ExtendedAssessments)) -ForegroundColor Cyan Write-Host (" DPIA's : {0}" -f ($summary.Dpias)) -ForegroundColor Cyan Write-Host (" Gemiddelde kwaliteitsscore : {0}%" -f ($summary.AverageQualityScore)) -ForegroundColor $(if ($summary.AverageQualityScore -ge 80) { "Green" } elseif ($summary.AverageQualityScore -ge 60) { "Yellow" } else { "Red" }) Write-Host (" Assessments die herziening vereisen : {0}" -f ($summary.AssessmentsNeedingReview)) -ForegroundColor $(if ($summary.AssessmentsNeedingReview -eq 0) { "Green" } else { "Yellow" }) return $summary } function New-PrivacyAssessmentTemplate { <# .SYNOPSIS Genereert een gestandaardiseerd sjabloon voor een privacy assessment. .PARAMETER Type Type assessment: QuickScan, ExtendedAssessment of DPIA. .PARAMETER OutputPath Pad waar het sjabloon moet worden opgeslagen. #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [ValidateSet("QuickScan", "ExtendedAssessment", "DPIA")] [string]$Type, [Parameter(Mandatory = $true)] [string]$OutputPath ) $folder = Split-Path -Path $OutputPath -Parent if (-not [string]::IsNullOrWhiteSpace($folder) -and -not (Test-Path -Path $folder)) { New-Item -Path $folder -ItemType Directory -Force | Out-Null } $template = switch ($Type) { "QuickScan" { @" # Privacy Assessment: Quick Scan **Datum opgesteld:** $(Get-Date -Format "yyyy-MM-dd") **Verantwoordelijke:** [Naam proceseigenaar] **Privacy Officer/FG:** [Naam] **Status:** Concept **Type verwerking:** [Beschrijf kort de verwerking] ## 1. Beschrijving van de verwerking ### Doel van de verwerking [Beschrijf het doel van de verwerking en waarom deze noodzakelijk is] ### Welke persoonsgegevens worden verwerkt? [Lijst de categorieën persoonsgegevens op die worden verwerkt] ### Wie zijn de betrokkenen? [Beschrijf wie de betrokkenen zijn, bijvoorbeeld burgers, medewerkers, klanten] ### Rechtsgrond [Geef aan op welke rechtsgrond de verwerking steunt, bijvoorbeeld artikel 6 lid 1 AVG] ## 2. Systemen en processen ### Welke systemen worden gebruikt? [Lijst de gebruikte systemen op, bijvoorbeeld Microsoft 365, Azure services] ### Wie heeft toegang tot de gegevens? [Beschrijf wie toegang heeft en op basis waarvan] ## 3. Beveiligingsmaatregelen ### Technische maatregelen [Beschrijf technische beveiligingsmaatregelen, zoals encryptie, toegangsbeheer] ### Organisatorische maatregelen [Beschrijf organisatorische maatregelen, zoals procedures, training] ## 4. Risicoanalyse ### Geïdentificeerde risico's [Lijst de belangrijkste privacyrisico's op] ### Beoordeling [Beoordeel of de risico's acceptabel zijn of dat aanvullende maatregelen nodig zijn] ## 5. Conclusie en besluit ### Conclusie [Geef een conclusie over of de verwerking kan doorgaan] ### Goedkeuring - **Opgesteld door:** [Naam] - [Datum] - **Goedgekeurd door:** [Naam] - [Datum] "@ } "ExtendedAssessment" { @" # Privacy Assessment: Uitgebreide Assessment **Datum opgesteld:** $(Get-Date -Format "yyyy-MM-dd") **Verantwoordelijke:** [Naam proceseigenaar] **Privacy Officer/FG:** [Naam] **Status:** Concept **Type verwerking:** [Beschrijf de verwerking] ## 1. Scope en systeembegrip ### Beschrijving van de verwerking [Gedetailleerde beschrijving van de verwerking, inclusief doel, context en betrokken partijen] ### Verwerkte persoonsgegevens [Uitgebreide lijst van alle categorieën persoonsgegevens die worden verwerkt] ### Betrokkenen [Beschrijving van de betrokkenen, inclusief aantal en categorieën] ### Systemen en datastromen [Architectuuroverzicht van gebruikte systemen en datastromen tussen systemen] ### Rechtsgrond [Uitgebreide beschrijving van de rechtsgrond, inclusief onderbouwing] ## 2. Risicoanalyse ### Geïdentificeerde risico's [Uitgebreide lijst van alle geïdentificeerde privacyrisico's] ### Risicobeoordeling Voor elk risico: - **Risico:** [Beschrijving] - **Waarschijnlijkheid:** [Laag/Medium/Hoog] - **Impact:** [Laag/Medium/Hoog] - **Risicoscore:** [Berekening] ### Risicomatrix [Visuele weergave van risico's in een matrix] ## 3. Maatregelen ### Voorgestelde maatregelen Voor elke maatregel: - **Maatregel:** [Beschrijving] - **Doel:** [Welk risico wordt gemitigeerd] - **Effectiviteit:** [Verwachte effectiviteit] - **Verantwoordelijke:** [Naam] - **Deadline:** [Datum] ### Geïmplementeerde maatregelen [Overzicht van reeds geïmplementeerde maatregelen] ## 4. Evaluatie en besluitvorming ### Evaluatie van maatregelen [Beoordeling of voorgestelde maatregelen voldoende zijn] ### Resterende risico's [Overzicht van risico's die na implementatie van maatregelen blijven bestaan] ### Besluit [Besluit over of de verwerking kan doorgaan, moet worden aangepast of niet mag plaatsvinden] ### Goedkeuring - **Opgesteld door:** [Naam] - [Datum] - **Gereviewd door FG:** [Naam] - [Datum] - **Goedgekeurd door verwerkingsverantwoordelijke:** [Naam] - [Datum] "@ } "DPIA" { @" # Data Protection Impact Assessment (DPIA) **Datum opgesteld:** $(Get-Date -Format "yyyy-MM-dd") **Verantwoordelijke:** [Naam proceseigenaar] **Privacy Officer/FG:** [Naam] **Status:** Concept **Type verwerking:** [Beschrijf de verwerking] ## 1. Beschrijving van de verwerking ### Doel en context [Uitgebreide beschrijving van het doel van de verwerking en de context waarin deze plaatsvindt] ### Noodzakelijkheid en proportionaliteit [Onderbouwing waarom de verwerking noodzakelijk is en proportioneel] ### Verwerkte persoonsgegevens [Uitgebreide lijst van alle categorieën persoonsgegevens, inclusief bijzondere persoonsgegevens indien van toepassing] ### Betrokkenen [Gedetailleerde beschrijving van betrokkenen, inclusief kwetsbare groepen] ### Rechtsgrond [Uitgebreide onderbouwing van de rechtsgrond, inclusief referenties naar relevante wetgeving] ## 2. Systeembegrip en datastromen ### Architectuuroverzicht [Gedetailleerd overzicht van gebruikte systemen, services en componenten] ### Datastromen [Uitgebreide beschrijving van datastromen tussen systemen, partijen en locaties] ### Verwerkers en subverwerkers [Overzicht van alle verwerkers en subverwerkers, inclusief Microsoft als verwerker] ### Geografische aspecten [Beschrijving van waar gegevens worden opgeslagen en verwerkt, inclusief datalocatie] ## 3. Uitgebreide risicoanalyse ### Geïdentificeerde risico's Voor elk risico: - **Risico:** [Gedetailleerde beschrijving] - **Betrokkenen:** [Wie worden getroffen] - **Waarschijnlijkheid:** [Uitgebreide onderbouwing] - **Impact:** [Uitgebreide beschrijving van impact voor betrokkenen] - **Risicoscore:** [Berekening en classificatie] ### Risicomatrix [Visuele weergave van alle risico's in een matrix] ### Kwetsbare groepen [Speciale aandacht voor risico's voor kwetsbare groepen] ## 4. Maatregelen en mitigatie ### Voorgestelde maatregelen Voor elke maatregel: - **Maatregel:** [Gedetailleerde beschrijving] - **Type:** [Technisch/Organisatorisch] - **Doel:** [Welk risico wordt gemitigeerd] - **Effectiviteit:** [Verwachte effectiviteit en onderbouwing] - **Implementatie:** [Hoe wordt de maatregel geïmplementeerd] - **Verantwoordelijke:** [Naam en rol] - **Deadline:** [Datum] - **Monitoring:** [Hoe wordt gemonitord of de maatregel werkt] ### Geïmplementeerde maatregelen [Overzicht van reeds geïmplementeerde maatregelen met bewijs] ### Resterende risico's [Overzicht van risico's die na implementatie blijven, inclusief acceptatie of aanvullende maatregelen] ## 5. Evaluatie en besluitvorming ### Evaluatie van maatregelen [Uitgebreide beoordeling of voorgestelde maatregelen voldoende zijn om risico's te mitigeren] ### Consultatie [Overzicht van consultatie met betrokkenen, experts of toezichthouders indien van toepassing] ### Besluit [Uitgebreide onderbouwing van het besluit over of de verwerking kan doorgaan] ### Goedkeuring - **Opgesteld door:** [Naam] - [Datum] - **Gereviewd door FG:** [Naam] - [Datum] - **Gereviewd door [andere stakeholders]:** [Naam] - [Datum] - **Goedgekeurd door verwerkingsverantwoordelijke:** [Naam] - [Datum] ## 6. Monitoring en actualisatie ### Monitoringplan [Plan voor het monitoren van de verwerking en de effectiviteit van maatregelen] ### Actualisatie [Wanneer en onder welke omstandigheden de DPIA moet worden geactualiseerd] ### Verantwoordelijke voor actualisatie [Wie is verantwoordelijk voor het actualiseren van de DPIA] "@ } } $template | Out-File -FilePath $OutputPath -Encoding UTF8 -Force Write-Host "Privacy assessment-sjabloon gegenereerd: $OutputPath" -ForegroundColor Green Write-Host "Type: $Type" -ForegroundColor Cyan } function Invoke-PrivacyAssessmentMonitor { <# .SYNOPSIS Monitort de actualiteit van bestaande privacy assessments. .OUTPUTS PSCustomObject met monitoringresultaten. #> [CmdletBinding()] param() Write-Host "" Write-Host "Privacy Assessment – Monitoring actualiteit" -ForegroundColor Cyan Write-Host "=============================================" -ForegroundColor Cyan if ($DebugMode) { Write-Host "DebugMode ingeschakeld: er worden geen bestanden gelezen of geschreven." -ForegroundColor Yellow $result = [PSCustomObject]@{ TotalAssessments = 5 UpToDate = 3 NeedsReview = 2 Overdue = 0 Timestamp = Get-Date } Write-Host "" Write-Host "Voorbeeldsamenvatting (debug):" -ForegroundColor Cyan $result return $result } $paths = Get-PrivacyAssessmentPaths $cutoffDate = (Get-Date).AddMonths(-12) # Assessments ouder dan 12 maanden worden als verouderd beschouwd $allAssessments = @() $needsReview = @() $overdue = @() # Verzamel alle assessments foreach ($folder in @($paths.QuickScanFolder, $paths.ExtendedFolder, $paths.DpiaFolder)) { if (Test-Path -Path $folder) { $files = Get-ChildItem -Path $folder -File -Filter "*.md" -ErrorAction SilentlyContinue foreach ($file in $files) { $lastWrite = $file.LastWriteTime $assessment = [PSCustomObject]@{ Name = $file.Name Path = $file.FullName LastWriteTime = $lastWrite AgeInMonths = [math]::Round(((Get-Date) - $lastWrite).TotalDays / 30, 1) } $allAssessments += $assessment if ($lastWrite -lt $cutoffDate) { $needsReview += $assessment if ($lastWrite -lt (Get-Date).AddMonths(-18)) { $overdue += $assessment } } } } } $result = [PSCustomObject]@{ TotalAssessments = $allAssessments.Count UpToDate = ($allAssessments.Count - $needsReview.Count) NeedsReview = $needsReview.Count Overdue = $overdue.Count Timestamp = Get-Date } Write-Host "" Write-Host "Resultaten:" -ForegroundColor Cyan Write-Host (" Totaal aantal assessments : {0}" -f ($result.TotalAssessments)) -ForegroundColor Cyan Write-Host (" Actueel (jonger dan 12 maanden) : {0}" -f ($result.UpToDate)) -ForegroundColor Green Write-Host (" Vereisen herziening (ouder dan 12 maanden): {0}" -f ($result.NeedsReview)) -ForegroundColor Yellow Write-Host (" Verouderd (ouder dan 18 maanden) : {0}" -f ($result.Overdue)) -ForegroundColor Red if ($needsReview.Count -gt 0) { Write-Host "" Write-Host "Assessments die herziening vereisen:" -ForegroundColor Yellow foreach ($assessment in $needsReview) { Write-Host (" - {0} (Laatste update: {1}, {2} maanden geleden)" -f $assessment.Name, $assessment.LastWriteTime.ToString("yyyy-MM-dd"), $assessment.AgeInMonths) -ForegroundColor Yellow } } return $result } # ============================================================================ # MAIN EXECUTION # ============================================================================ try { Write-Host "" Write-Host "========================================" -ForegroundColor Cyan Write-Host "Privacy Assessment Management" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan if ($Check) { $result = Invoke-PrivacyAssessmentCheck if ($DebugMode) { return $result } } elseif ($Template) { if ([string]::IsNullOrWhiteSpace($OutputPath)) { $paths = Get-PrivacyAssessmentPaths $fileName = "privacy-assessment-$($Type.ToLower())-$(Get-Date -Format 'yyyyMMdd').md" $OutputPath = Join-Path $paths.TemplatesFolder $fileName } New-PrivacyAssessmentTemplate -Type $Type -OutputPath $OutputPath } elseif ($Monitor) { $result = Invoke-PrivacyAssessmentMonitor if ($DebugMode) { return $result } } else { Write-Host "" Write-Host "Geen modus opgegeven. Gebruik een van de volgende opties:" -ForegroundColor Yellow Write-Host " -Check Controleer de aanwezigheid en kwaliteit van privacy assessments." -ForegroundColor Yellow Write-Host " -Template Genereer een gestandaardiseerd sjabloon (vereist -Type en optioneel -OutputPath)." -ForegroundColor Yellow Write-Host " -Monitor Monitor de actualiteit van bestaande privacy assessments." -ForegroundColor Yellow Write-Host " -DebugMode Gebruik voorbeelddata voor een veilige lokale test." -ForegroundColor Yellow } } catch { Write-Error "Fout in privacy-assessment/index.ps1: $_" throw } finally { Write-Host "" Write-Host "========================================" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder gestructureerde privacy assessments blijven privacyrisico's onzichtbaar totdat zich problemen voordoen. Dit vergroot de kans op datalekken, AVG-overtredingen, sancties van de Autoriteit Persoonsgegevens, en verlies van vertrouwen van burgers en bestuur.

Management Samenvatting

Implementeer een gestructureerde methodologie voor privacy assessments die aansluit op AVG-vereisten en specifiek is toegesneden op Microsoft 365- en Azure-omgevingen. Zorg voor duidelijke processen, betrokkenheid van relevante stakeholders, kwalitatieve documentatie en integratie in organisatieprocessen, zodat privacyrisico's proactief worden geïdentificeerd en gemitigeerd.