Back to .md Directory

AVG Compliance Documentatie

Documents how a laptop cleanup script complies with GDPR, listing what is and is not logged and how data is retained.

May 2, 2026
0 downloads
0 views
ai
View source

What this file does

Documents how a laptop cleanup script complies with GDPR, listing what is and is not logged and how data is retained.

When to use it

  • Auditing a script that handles user data for GDPR compliance
  • Writing privacy documentation for an internal IT tool
  • Reviewing logging practices to avoid storing personal information
  • Preparing for a data protection impact assessment (DPIA)

AVG Compliance Documentatie

Leenlaptop Opschoningsscript - Privacy & Gegevensbescherming

Document versie: 1.3
Datum: 14 januari 2026
Script versie: 1.6.2
Verantwoordelijke: ICT-beheerder


1. Inleiding

Dit document beschrijft hoe het leenlaptop opschoningsscript voldoet aan de Algemene Verordening Gegevensbescherming (AVG/GDPR). Het script is ontworpen volgens het privacy-by-design principe en minimaliseert de verwerking van persoonsgegevens.


2. Wettelijke Grondslag

Artikel 6 AVG - Rechtmatigheid van verwerking

De verwerking is rechtmatig op basis van:

  • Art. 6 lid 1 sub f: Gerechtvaardigd belang voor ICT-beveiliging en systeembeheer
  • Art. 6 lid 1 sub c: Wettelijke verplichting (indien van toepassing bij overheidsinstellingen)

Doel van de verwerking

  • Waarborgen van IT-beveiliging
  • Beschermen van privacy van volgende gebruikers
  • Operationele continuïteit van leenlaptop-dienst
  • Audit trails voor troubleshooting

3. Gegevensminimalisatie (Art. 5 lid 1 sub c AVG)

3.1 Wat wordt NIET gelogd (design keuze)

Het script logt expliciet GEEN persoonsgegevens zoals:

  • ❌ Gebruikersnamen
  • ❌ Wi-Fi netwerknamen (alleen aantallen)
  • ❌ Bestandsnamen met persoonlijke informatie
  • ❌ IP-adressen
  • ❌ Browser geschiedenis of URLs
  • ❌ Account informatie

3.2 Wat wordt WEL gelogd (minimaal noodzakelijk)

Het script logt alleen operationele informatie:

  • ✅ Tijdstempel van operaties
  • ✅ Soort operatie (bijv. "Browser gestopt")
  • ✅ Aantallen (bijv. "3 processen gestopt")
  • ✅ Foutcodes en technische statusmeldingen
  • ✅ Script versie
  • ✅ SUCCES/FAIL status

3.3 Code voorbeelden

FOUT (oude versie - bevat PII):

# ❌ NIET AVG-conform
Write-Log "Gebruiker $env:USERNAME heeft browser chrome gesloten"
Write-Log "Wi-Fi profiel 'Thuis_Netwerk' verwijderd"

CORRECT (huidige versie - geen PII):

# ✅ AVG-conform
Write-Log "Browser gestopt: chrome (3 processen)"
Write-Log "Wi-Fi opschoning: 5 verwijderd, 1 behouden"

4. Opslagbeperking (Art. 5 lid 1 sub e AVG)

4.1 Retentiebeleid

Data TypeRetentieperiodeRechtsgrond
Operationele logs30 dagenTroubleshooting, beveiliging
Gearchiveerde logs30 dagenAudit trail
Script backups30 dagenHerstel na fouten
Status bestandenTot volgende runOperationele noodzaak

4.2 Automatische verwijdering

Het script bevat automatische cleanup-mechanismen:

# Automatische verwijdering van oude logs (dagelijks uitgevoerd)
function Backup-Log {
    $cutoffDate = (Get-Date).AddDays(-$LogRetentionDays)  # 30 dagen
    Get-ChildItem -Filter 'script_*.log' |
        Where-Object { $_.CreationTime -lt $cutoffDate } |
        Remove-Item -Force
}

Verificatie: Controleer $LogRetentionDays variabele in script (standaard: 30)


5. Integriteit en Vertrouwelijkheid (Art. 32 AVG)

5.1 Toegangsbeveiliging

BeveiligingsmaatregelImplementatie
Bestandslocatie%LOCALAPPDATA%\HiddenScripts (verborgen, per gebruiker)
NTFS-rechtenAlleen lokale gebruiker + ICT-admins
Verborgen attribuutMap gemarkeerd als "Hidden"
SchrijfrechtenAlleen script zelf en admins

5.2 Event Log Filtering

# Privacy-filter: gevoelige berichten niet naar Event Log
Write-Log "Wi-Fi profiel verwijderd" -SkipEventLog  # Lokaal wel, Event Log niet

Rationale: Windows Event Log kan toegankelijk zijn voor meer gebruikers dan lokale logs.

5.3 Geen externe communicatie

Het script:

  • ❌ Stuurt GEEN data naar externe servers
  • ❌ Gebruikt GEEN netwerk verbindingen voor logging
  • ❌ Deelt GEEN informatie met derden
  • ✅ Werkt volledig lokaal op het apparaat

6. Rechten van Betrokkenen (Art. 15-22 AVG)

6.1 Transparantie (Art. 13-14)

  • ✅ Script-doel wordt gecommuniceerd via README en documentatie
  • ✅ Gebruikers worden geïnformeerd bij uitgifte leenlaptop
  • ✅ Logbestanden zijn leesbaar (plain text, geen encryptie)

6.2 Inzagerecht (Art. 15)

Omdat het script geen persoonsgegevens logt, is er feitelijk niets in te zien. Bij vragen kunnen gebruikers logs opvragen bij ICT, maar deze bevatten geen PII.

6.3 Recht op verwijdering (Art. 17)

  • ✅ Automatisch na 30 dagen
  • ✅ Handmatig door ICT op verzoek mogelijk
  • ✅ Geen backups buiten retentieperiode

7. Verwerkersverantwoordelijkheden

7.1 ICT-afdeling taken

  1. Toegangsbeheer: Regelmatig controleren wie toegang heeft tot log-locaties
  2. Monitoring: Periodiek controleren of retentie correct werkt
  3. Updates: Script up-to-date houden met security patches
  4. Training: Gebruikers instrueren over privacy-aspecten

7.2 Audit-vragen bij inspectie

Bij AVG-audit kunnen volgende vragen worden gesteld:

Q: Welke persoonsgegevens worden verwerkt?
A: Geen directe persoonsgegevens. Alleen operationele metadata (tijden, aantallen).

Q: Hoe lang worden logs bewaard?
A: Maximaal 30 dagen, daarna automatisch verwijderd.

Q: Wie heeft toegang tot logs?
A: Alleen ICT-beheerders met beheersrechten op betreffend apparaat.

Q: Worden logs gedeeld met derden?
A: Nee, volledig lokaal opgeslagen, geen externe toegang.

Q: Hoe wordt verwijdering gegarandeerd?
A: Automatisch via script-logica, dagelijks gecontroleerd tijdens uitvoering.


8. Risicoanalyse (DPIA Light)

8.1 Privacy Risico's

RisicoKansImpactMitigatie
Logs bevatten PIILaagHoogCode review, unit tests, -SkipEventLog flag
Onbevoegde toegang logsLaagGemiddeldNTFS-rechten, verborgen map
Logs te lang bewaardZeer laagLaagAutomatische cleanup + monitoring
Logs gekopieerd voor backupLaagGemiddeldAlleen ICT toegang, geen automatische backups

8.2 Restrisico

ACCEPTABEL - Operationele logs zonder PII vormen minimaal privacy-risico.


9. Documentatie & Verificatie

9.1 Verificatie Checklist

Gebruik deze checklist om AVG-compliance te controleren:

# 1. Controleer configuratie
$config = Get-Content "opstart-script.ps1" -Raw
$config -match '\$LogRetentionDays\s*=\s*30'  # Moet $true zijn

# 2. Controleer geen oude logs
$logFolder = "$env:LOCALAPPDATA\HiddenScripts"
Get-ChildItem $logFolder -Filter "script_*.log" | 
    Where-Object { $_.CreationTime -lt (Get-Date).AddDays(-31) }
# Moet leeg zijn

# 3. Controleer laatste log op PII
$logContent = Get-Content "$logFolder\script.log" -Tail 50
# Moet GEEN gebruikersnamen, netwerknamen, emails bevatten

# 4. Test Event Log filtering
Get-EventLog -LogName Application -Source "OpstartScript" -Newest 10
# Controleer of gevoelige berichten -SkipEventLog flag gebruiken

9.2 Periodieke Review

  • Frequentie: Elk kwartaal
  • Verantwoordelijke: ICT Security Officer
  • Onderdelen: Code review, log analyse, toegangscontrole

10. Wijzigingshistorie

VersieDatumWijzigingAVG Impact
1.4.12025-10-03Pre-AVG versieBevatte PII in logs (niet compliant)
1.5.0 (Doc 1.0)2025-10-23Initiële AVG-compliance implementatieVolledig herziening voor privacy
1.6.0 (Doc 1.1)2025-11-03Volledig configureerbare opschoning + media-mappen + desktop detectieGeen - blijft AVG-compliant
1.6.1 (Doc 1.2)2025-12-07Hybrid browser cleanup + credentials/sync-data verwijderingVerbeterd - meer privacy (account data verwijderd)
1.6.2 (Doc 1.3)2026-01-14MaxBackupCount + SHA256 verificatie + config validatie + backup cleanup loggingGeen - blijft AVG-compliant

Document Versie 1.3 (Script v1.6.2) - AVG Analyse

Nieuwe functionaliteit (v1.6.2):

  1. MaxBackupCount - Limiet aantal script backups (standaard 5, vermindert opslagverspilling)
  2. SHA256 Hash Verificatie - Script integriteit check na kopieën (verhoogt beveiliging)
  3. Configuratie Validatie - Test-Configuration functie valideert alle instellingen bij start
  4. Backup Cleanup Logging - Rapporteert hoeveel backups verwijderd/bewaard (operationeel inzicht)

Privacy Impact Assessment per feature:

1. Desktop Detectie (Get-ActualUserDesktop)

# ❌ VERMEDEN: Username logging
# Get-ActualUserDesktop detecteert gebruiker maar logt geen naam

# ✅ GEÏMPLEMENTEERD: Alleen methode logging
Write-Log "Desktop bepaald via actieve console sessie" -SkipEventLog
# Geen username, gebruik -SkipEventLog voor extra privacy
  • Detecteert gebruiker via query user/WMI maar logt GEEN username
  • Gebruikt -SkipEventLog flag voor extra privacy
  • Fallback naar Public Desktop (geen gebruikersspecifieke data)

2. Media-mappen Opschoning (Pictures/Videos/Music)

# ✅ AVG-CONFORM: Alleen aantallen, geen bestandsnamen
Write-Log "Afbeeldingen-map geleegd (45 items verwijderd)"
# Geen bestandsnamen of gebruikersspecifieke informatie
  • Logt alleen aantallen, geen bestandsnamen of paden
  • WAARSCHUWING melding in log (bevat geen PII)
  • Standaard uitgeschakeld (opt-in voor privacy)

3. Verbeterde Status Rapportage

# ✅ AVG-CONFORM: Alleen statistieken
Write-Log "Wi-Fi opschoning: 3 verwijderd, 1 behouden"
# Geen netwerknamen, alleen aantallen
  • Wi-Fi rapportage zonder netwerknamen (alleen counts)
  • Browser lijst zonder gebruikersprofielen
  • Alle statistieken geaggregeerd zonder PII

Conclusie: Geen AVG-impact. Script blijft volledig compliant.

  • Alle nieuwe functies respecteren privacy-by-design principe
  • Geen PII-logging toegevoegd
  • -SkipEventLog gebruikt waar relevant
  • Media-opschoning standaard uitgeschakeld (veilig)

10b. Privacy Impact: v1.6.2 Features

SHA256 Hash Verificatie:

# ✅ AVG-CONFORM: Verificatie zonder PII
$expectedHash = '...'  # Pre-calculated hash
$actualHash = (Get-FileHash $scriptPath -Algorithm SHA256).Hash
if ($expectedHash -eq $actualHash) {
    Write-Log "Script gekopieerd naar verborgen map (SHA256 OK)" -SkipEventLog
}
  • Verifieert script integriteit (tegen ongewenste wijzigingen)
  • Logt alleen verificatieresultaat (OK/FAILED), geen hashes
  • Verhoogt beveiliging zonder privacy-impact
  • AVG Impact: GEEN - voegt geen PII toe

MaxBackupCount Cleanup:

# ✅ AVG-CONFORM: Automatische opschoningimplementatie
# Beperkt aantal oude backups, verwijdert rest
$removedCount = 0
Get-ChildItem -Filter 'opstart-script_*.ps1' |
    Sort-Object CreationTime -Descending |
    Select-Object -Skip $MaxBackupCount |
    Remove-Item -Force
    
Write-Log "Backups opgeschoond: $removedCount verwijderd, $keptCount bewaard (MaxBackupCount)"
  • Beperkt aantal script backups (standaard 5)
  • Minimaliseert opslagverspilling van verouderde versies
  • Logt alleen aantallen, geen individuele bestandsnamen of versies
  • Respecteert 30-dagen retentieperiode (combinatie MaxBackupCount EN tijd)
  • AVG Impact: POSITIEF - minimaliseert opslaggebruik, aanhoudende cleanup

Configuratie Validatie:

# ✅ AVG-CONFORM: Validatie tegen mis-configuratie
Test-Configuration  # Voort uit bij start, voordat processing
Write-Log "Configuratie gevalideerd (PS 5.1+, instellingen OK)"

# Controleert bijv.
if ($LogRetentionDays -le 0) {
    throw "LogRetentionDays moet > 0 zijn (AVG: minimum 30 dagen)"
}
  • Detecteert mis-configuraties die AVG-compliance schaden
  • Voorkomt accidentele privacy-inbreuken (bijv. retentie=0)
  • Foutmeldingen bevatten geen PII
  • AVG Impact: POSITIEF - forceert compliance checks

Conclusie v1.6.2: Geen negatieve AVG-impact. Alle nieuwe features respecteren privacy-by-design:

  • ✅ Geen PII-logging toegevoegd
  • -SkipEventLog waar nodig
  • ✅ Automatische cleanup versterkt
  • ✅ Configuratie validatie verbetert compliance
  • ✅ Script blijft volledig AVG-compliant

11. Contactinformatie

Privacy vragen: ICT-beheerder
Functionaris Gegevensbescherming: [Indien van toepassing]
Script auteur: Ruben Draaisma
Laatste review: 14 januari 2026

Appendix A: Code Snippets ter Referentie

A.1 Logging zonder PII

function Write-Log {
    param(
        [string]$Message,
        [string]$Level = 'INFO',
        [switch]$SkipEventLog  # Privacy flag
    )
    
    # Lokaal loggen (meer detail toegestaan)
    Add-Content -Path $LogFile -Value "$timestamp [$Level] $Message"
    
    # Event Log (alleen niet-PII)
    if (-not $SkipEventLog) {
        Write-EventLog ... -Message $Message
    }
}

A.2 Automatische Retentie

function Backup-Log {
    # Rotatie bij grootte-limiet
    if ((Get-Item $LogFile).Length / 1MB -ge $MaxLogSizeMB) {
        Rename-Item -Path $LogFile -NewName "script_$(Get-Date -f 'yyyyMMdd_HHmmss').log"
    }
    
    # AVG: Verwijder oude logs
    $cutoffDate = (Get-Date).AddDays(-$LogRetentionDays)
    Get-ChildItem -Filter 'script_*.log' |
        Where-Object { $_.CreationTime -lt $cutoffDate } |
        Remove-Item -Force
}

EINDE DOCUMENT

Dit document is onderdeel van het technisch ontwerp voor het Leenlaptop Opschoningsproces en beschrijft de AVG-compliance maatregelen.

What's inside

11 sections, 4 code examples, 2 tables, 1 verification checklist, 1 change history table

Change this for your project

  • Replace Dantdmnl/leenlaptop-schoonmaak-script with your own repository name
  • Replace Ruben Draaisma with the actual script author
  • Replace ICT-beheerder with your responsible role or team
  • Replace %LOCALAPPDATA%\HiddenScripts with your script's actual log path

Where it goes

Keep it in your repository where the agent or team that needs it will read it.

Worth borrowing

  • Logging only counts and operation types instead of usernames, file names, or network names
  • Using a -SkipEventLog flag to prevent sensitive metadata from reaching the Windows Event Log
  • Enforcing a configurable retention period with automatic cleanup of old logs

Related Documents