EU AI Act Documentatievereisten

💼 Management Samenvatting

De EU AI Act vereist uitgebreide documentatie voor alle AI-systemen die binnen de Europese Unie worden gebruikt. Nederlandse overheidsorganisaties die AI-toepassingen implementeren, moeten voldoen aan specifieke documentatievereisten om transparantie, traceerbaarheid en verantwoordingsplicht te waarborgen.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
100u (tech: 40u)
Van toepassing op:
Azure
M365
AI Services

Zonder adequate documentatie kunnen organisaties niet aantonen dat hun AI-systemen voldoen aan de Europese regelgeving, wat kan leiden tot boetes tot zes procent van de wereldwijde omzet, reputatieschade, vertragingen in projecten en mogelijk een verbod op het gebruik van bepaalde AI-systemen. Bovendien maakt gebrek aan documentatie het onmogelijk om te verantwoorden hoe beslissingen zijn genomen, wat kritiek is voor overheidsorganisaties die verantwoording moeten afleggen aan burgers en toezichthouders.

PowerShell Modules Vereist
Primary API: Microsoft Graph API, Azure Portal
Connection: Connect-MgGraph, Connect-AzAccount
Required Modules: Microsoft.Graph, Az.Accounts

Implementatie

Dit artikel beschrijft de volledige documentatiestructuur die vereist is onder de EU AI Act, inclusief technische documentatie over systeemarchitectuur, trainingsdata, algoritmes en besluitvormingsprocessen. Daarnaast worden organisatorische aspecten behandeld zoals risicobeoordelingen, menselijke toezicht procedures, gebruiksrichtlijnen en auditlogs. Het artikel biedt praktische templates en checklists voor Nederlandse publieke organisaties om hun AI-documentatie op te zetten en te onderhouden volgens de eisen van artikel 11 en 13 van de EU AI Act.

Vereisten en Juridische Context

De EU AI Act, die in 2024 is aangenomen en gefaseerd wordt ingevoerd vanaf 2025, legt specifieke documentatieverplichtingen op aan alle organisaties die AI-systemen ontwikkelen, implementeren of gebruiken binnen de Europese Unie. Artikel 11 vereist dat high-risk AI-systemen uitgebreide technische documentatie bevatten, terwijl artikel 13 specifieke vereisten stelt voor transparantie en gebruikersinformatie. Nederlandse overheidsorganisaties vallen automatisch onder deze verplichtingen wanneer zij AI-toepassingen gebruiken voor besluitvorming die gevolgen heeft voor burgers, zoals automatische besluitvorming in uitkeringsprocessen, risicoclassificatie in fraudedetectie of content filtering in digitale dienstverlening.

De documentatievereisten variëren naargelang het risiconiveau van het AI-systeem. Voor high-risk systemen, die het merendeel vormen van overheidsapplicaties, is een volledig technisch dossier vereist dat de systeemarchitectuur, trainingsmethodologie, data-herkomst, prestatiespecificaties, risicobeoordelingen en mitigatiemaatregelen beschrijft. Daarnaast moeten organisaties gebruiksprotocollen opstellen, menselijke toezicht procedures documenteren en audit trails bijhouden die aantonen hoe het systeem in de praktijk functioneert.

Voor Nederlandse publieke organisaties komt hier nog de verplichting bij om te voldoen aan de Wet open overheid (Woo), wat betekent dat bepaalde documentatie openbaar gemaakt moet worden op verzoek, en aan de AVG wanneer persoonsgegevens worden verwerkt. Dit vereist een zorgvuldige balans tussen transparantie enerzijds en bescherming van intellectueel eigendom, beveiligingsdetails en persoonsgegevens anderzijds.

Organisaties die Microsoft AI-services gebruiken, zoals Azure OpenAI Service, Azure Cognitive Services of Microsoft Copilot, moeten bovendien de documentatie aanpassen aan de specifieke configuratie en aanpassingen die zij hebben doorgevoerd. Standaard documentatie van Microsoft is niet voldoende; elke organisatie moet haar eigen risicobeoordeling en gebruiksspecifieke documentatie opstellen die laat zien hoe de service wordt toegepast in hun context.

Implementatie van Documentatiestructuur

Het opzetten van een robuuste documentatiestructuur voor AI-systemen vereist een systematische aanpak die begint bij de ontwikkeling en doorloopt tot en met de ingebruikname en monitoring. Start met het identificeren van alle AI-systemen binnen de organisatie, inclusief systemen die mogelijk niet expliciet als AI worden erkend maar wel machine learning of automatische besluitvorming bevatten. Dit omvat niet alleen nieuwe projecten, maar ook bestaande systemen die moeten worden geïnventariseerd en gedocumenteerd.

Voor elk AI-systeem moet een technisch document worden opgesteld dat minimaal de volgende elementen bevat: een overzicht van de systeemdoelstellingen en gebruikssituaties, een gedetailleerde beschrijving van de systeemarchitectuur inclusief alle componenten en hun interacties, een overzicht van de gebruikte trainingsdatasets met herkomst, kwaliteit en vooroordelen analyse, een beschrijving van het trainingsproces inclusief hyperparameters en validatiemethoden, prestatieresultaten op verschillende testdatasets met duidelijke uitleg van beperkingen, een risicobeoordeling die specifieke risico's identificeert en mitigatiestrategieën beschrijft, en procedures voor menselijke toezicht en interventie.

Naast de technische documentatie moeten organisaties gebruikersdocumentatie ontwikkelen die duidelijk uitlegt hoe het systeem werkt, wat de beperkingen zijn, wanneer menselijke interventie nodig is en hoe gebruikers kunnen klagen of bezwaar maken tegen automatische beslissingen. Deze documentatie moet toegankelijk zijn voor de doelgroep, wat betekent dat technisch jargon moet worden vermeden en praktische voorbeelden moeten worden gegeven.

Een kritisch onderdeel van de documentatie is het bijhouden van audit logs die alle belangrijke gebeurtenissen vastleggen, zoals wijzigingen aan het systeem, incidenten waarbij het systeem onjuist functioneerde, updates aan trainingsdata of modellen, en alle beslissingen waarbij menselijke interventie nodig was. Deze logs moeten minimaal zeven jaar worden bewaard in lijn met de Archiefwet en moeten zodanig zijn gestructureerd dat ze efficiënt kunnen worden doorzocht tijdens audits of incidentonderzoeken.

Het beheren van deze documentatie vereist een gecentraliseerd systeem, bij voorkeur geïntegreerd met het bestaande document management systeem van de organisatie. Documentatie moet worden versiebeheerd, zodat wijzigingen worden bijgehouden en eerdere versies beschikbaar blijven voor historische analyses. Werk daarnaast met duidelijke verantwoordelijkheden waarbij voor elk AI-systeem een documentatie-eigenaar wordt aangewezen die verantwoordelijk is voor het actueel houden van de documentatie.

Compliance en Framework Mapping

De EU AI Act documentatievereisten overlappen met verschillende andere compliance frameworks die Nederlandse overheidsorganisaties moeten volgen. De BIO (Baseline Informatiebeveiliging Overheid) vereist bijvoorbeeld dat alle kritieke systemen, inclusief AI-systemen, gedocumenteerd zijn in het informatiebeveiligingssysteem. ISO 27001 eist dat risicoanalyses en beheersmaatregelen worden vastgelegd. De AVG verplicht documentatie over de rechtmatigheid van gegevensverwerking, wat bij AI-systemen bijzonder relevant is wanneer persoonsgegevens worden gebruikt voor training of besluitvorming.

Een effectieve aanpak is om de documentatie zodanig te structureren dat deze tegelijkertijd voldoet aan meerdere frameworks. Begin met een kern documentatiepakket dat de EU AI Act vereisten volledig afdekt, en breid dit vervolgens uit met secties die specifiek zijn voor BIO, ISO 27001, AVG of andere relevante frameworks. Dit voorkomt dubbele documentatie en zorgt voor consistentie tussen verschillende compliance verplichtingen.

Voor high-risk AI-systemen moet bovendien een conformity assessment worden uitgevoerd, waarbij een onafhankelijke partij beoordeelt of het systeem voldoet aan de EU AI Act eisen. Deze assessment moet worden gedocumenteerd en regelmatig worden herhaald, vooral wanneer significante wijzigingen worden doorgevoerd aan het systeem. Nederlandse overheidsorganisaties kunnen hiervoor gebruik maken van gecertificeerde conformity assessment bodies of interne audit teams die voldoende kennis hebben van zowel AI-technologie als de juridische vereisten.

Monitoring en Onderhoud

Gebruik PowerShell-script eu-ai-act-documentation.ps1 (functie Invoke-Monitoring) – Controleert of alle vereiste AI-documentatie aanwezig is en up-to-date is.

Documentatie is geen eenmalige activiteit maar vereist continu onderhoud. AI-systemen evolueren, krijgen nieuwe trainingsdata, worden aangepast op basis van feedback, en moeten daarom regelmatig worden gereviewd en bijgewerkt. Stel een schema op waarbij alle AI-documentatie minimaal jaarlijks wordt beoordeeld, en direct na significante wijzigingen aan het systeem.

Implementeer een monitoring proces dat automatisch controleert of documentatie nog actueel is, bijvoorbeeld door de laatste wijzigingsdatum te vergelijken met de laatste systeemupdate, of door te controleren of nieuwe risico's zijn geïdentificeerd die nog niet in de risicobeoordeling zijn opgenomen. Dit kan worden geautomatiseerd met behulp van scripts die de documentatie metadata analyseren en waarschuwingen genereren wanneer updates nodig lijken te zijn.

Remediatie en Verbetering

Gebruik PowerShell-script eu-ai-act-documentation.ps1 (functie Invoke-Remediation) – Genereert documentatietemplates en checklists voor ontbrekende documentatie.

Wanneer tijdens monitoring wordt vastgesteld dat documentatie ontbreekt of verouderd is, moet direct actie worden ondernomen. Start met het identificeren van de ontbrekende onderdelen en prioriteer deze op basis van het risiconiveau van het betreffende AI-systeem. High-risk systemen moeten prioriteit krijgen bij het opstellen of bijwerken van documentatie.

Voor systemen waar documentatie volledig ontbreekt, gebruik gestandaardiseerde templates die zijn gebaseerd op de EU AI Act vereisten. Deze templates zorgen ervoor dat alle benodigde elementen worden opgenomen en dat de documentatiestructuur consistent is tussen verschillende systemen. Organiseer workshops met technische teams, compliance officers en juristen om gezamenlijk de documentatie op te stellen, zodat alle perspectieven worden meegenomen.

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 EU AI Act Documentatie Monitoring en Remediatie .DESCRIPTION Controleert of alle vereiste documentatie voor AI-systemen aanwezig is volgens EU AI Act vereisten. Genereert documentatietemplates wanneer documentatie ontbreekt. .NOTES Filename: eu-ai-act-documentation.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-01-15 Last Modified: 2025-01-15 Version: 1.0 Related JSON: content/ai/compliance/eu-ai-act-documentation.json .LINK https://github.com/[org]/m365-tenant-best-practise .EXAMPLE .\eu-ai-act-documentation.ps1 -Monitoring Controleert of alle AI-documentatie aanwezig is .EXAMPLE .\eu-ai-act-documentation.ps1 -Remediation Genereert documentatietemplates voor ontbrekende documentatie #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph [CmdletBinding()] param( [Parameter()] [switch]$WhatIf, [Parameter()] [switch]$Monitoring, [Parameter()] [switch]$Remediation ) $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' # Configuratie $RequiredDocumentationSections = @( "Systeemdoelstellingen", "Systeemarchitectuur", "Trainingsdata", "Trainingsproces", "Prestatieresultaten", "Risicobeoordeling", "Menselijk toezicht procedures", "Gebruikersdocumentatie", "Audit logs" ) $DocumentationPath = "D:\Github\m365-tenant-best-practise\documentatie\ai-systemen" $MaxDocumentationAgeDays = 365 function Connect-RequiredServices { <# .SYNOPSIS Verbindt met benodigde Microsoft services #> [CmdletBinding()] param() Write-Verbose "Controleren van Microsoft Graph verbinding..." try { $context = Get-MgContext -ErrorAction SilentlyContinue if (-not $context) { Write-Host "Verbinding maken met Microsoft Graph..." -ForegroundColor Yellow Connect-MgGraph -Scopes "User.Read.All", "Group.Read.All" -ErrorAction Stop Write-Host "Verbonden met Microsoft Graph" -ForegroundColor Green } else { Write-Verbose "Reeds verbonden met Microsoft Graph" } } catch { Write-Error "Kon niet verbinden met Microsoft Graph: $_" throw } } function Test-AISystemDocumentation { <# .SYNOPSIS Test of documentatie aanwezig is voor AI-systemen .OUTPUTS PSCustomObject met compliance resultaten #> [CmdletBinding()] param() Write-Verbose "Controleren van AI-systeem documentatie..." # Check of documentatie folder bestaat if (-not (Test-Path -Path $DocumentationPath)) { Write-Host " Documentatie folder bestaat niet: $DocumentationPath" -ForegroundColor Red return @{ IsCompliant = $false TotalSystems = 0 DocumentedSystems = 0 MissingDocumentation = @() OutdatedDocumentation = @() } } # Zoek naar AI-systeem documentatie (vereenvoudigde check) $documentationFiles = Get-ChildItem -Path $DocumentationPath -Filter "*.md" -Recurse -ErrorAction SilentlyContinue $aiSystems = @() # Simuleer AI-systemen (in productie zou dit uit een configuratie of inventarisatie komen) $aiSystems = @( @{ Name = "Azure OpenAI Service"; Path = "$DocumentationPath\azure-openai-service.md" } @{ Name = "Microsoft Copilot"; Path = "$DocumentationPath\microsoft-copilot.md" } @{ Name = "Azure Cognitive Services"; Path = "$DocumentationPath\azure-cognitive-services.md" } ) $documentedSystems = 0 $missingDocs = @() $outdatedDocs = @() foreach ($system in $aiSystems) { $docExists = Test-Path -Path $system.Path if (-not $docExists) { Write-Host " ❌ Ontbrekende documentatie: $($system.Name)" -ForegroundColor Red $missingDocs += $system.Name } else { $docFile = Get-Item -Path $system.Path $daysSinceUpdate = (Get-Date) - $docFile.LastWriteTime if ($daysSinceUpdate.Days -gt $MaxDocumentationAgeDays) { Write-Host " ⚠️ Verouderde documentatie: $($system.Name) (laatste update: $($daysSinceUpdate.Days) dagen geleden)" -ForegroundColor Yellow $outdatedDocs += $system.Name } else { Write-Host " ✅ Documentatie aanwezig en actueel: $($system.Name)" -ForegroundColor Green $documentedSystems++ } } } $isCompliant = ($missingDocs.Count -eq 0) -and ($outdatedDocs.Count -eq 0) return @{ IsCompliant = $isCompliant TotalSystems = $aiSystems.Count DocumentedSystems = $documentedSystems MissingDocumentation = $missingDocs OutdatedDocumentation = $outdatedDocs } } function Invoke-Monitoring { <# .SYNOPSIS Monitort de compliance status van AI-documentatie #> [CmdletBinding()] param() Write-Host "`nMonitoring: EU AI Act Documentatie Vereisten" -ForegroundColor Yellow Write-Host "=============================================" -ForegroundColor Yellow $result = Test-AISystemDocumentation Write-Host "`nResultaten:" -ForegroundColor Cyan Write-Host " Totaal AI-systemen: $($result.TotalSystems)" -ForegroundColor Cyan Write-Host " Gedocumenteerde systemen: $($result.DocumentedSystems)" -ForegroundColor Cyan Write-Host " Ontbrekende documentatie: $($result.MissingDocumentation.Count)" -ForegroundColor $(if ($result.MissingDocumentation.Count -eq 0) { "Green" } else { "Red" }) Write-Host " Verouderde documentatie: $($result.OutdatedDocumentation.Count)" -ForegroundColor $(if ($result.OutdatedDocumentation.Count -eq 0) { "Green" } else { "Yellow" }) if ($result.MissingDocumentation.Count -gt 0) { Write-Host "`n Ontbrekende documentatie voor:" -ForegroundColor Red foreach ($system in $result.MissingDocumentation) { Write-Host " - $system" -ForegroundColor Red } } if ($result.OutdatedDocumentation.Count -gt 0) { Write-Host "`n Verouderde documentatie voor:" -ForegroundColor Yellow foreach ($system in $result.OutdatedDocumentation) { Write-Host " - $system" -ForegroundColor Yellow } } if ($result.IsCompliant) { Write-Host "`n✅ COMPLIANT - Alle AI-documentatie is aanwezig en actueel" -ForegroundColor Green exit 0 } else { Write-Host "`n❌ NON-COMPLIANT - Actie vereist voor ontbrekende of verouderde documentatie" -ForegroundColor Red Write-Host " Gebruik -Remediation om documentatietemplates te genereren" -ForegroundColor Yellow exit 1 } } function New-DocumentationTemplate { <# .SYNOPSIS Genereert een documentatietemplate voor een AI-systeem #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$SystemName, [Parameter(Mandatory = $true)] [string]$OutputPath ) $template = @" # EU AI Act Documentatie: $SystemName **Laatst bijgewerkt:** $(Get-Date -Format "yyyy-MM-dd") **Documentatie-eigenaar:** [Naam eigenaar] **Status:** Concept ## 1. Systeemdoelstellingen en Gebruikssituaties [Beschrijf hier de doelen van het AI-systeem en in welke situaties het wordt gebruikt] ## 2. Systeemarchitectuur [Geef een overzicht van de systeemarchitectuur, componenten en hun interacties] ## 3. Trainingsdata ### 3.1 Data-herkomst [Beschrijf waar de trainingsdata vandaan komt] ### 3.2 Data-kwaliteit [Beschrijf de kwaliteit en validatie van de trainingsdata] ### 3.3 Bias-analyse [Analyseer potentiële vooroordelen in de trainingsdata] ## 4. Trainingsproces [Beschrijf het trainingsproces, hyperparameters en validatiemethoden] ## 5. Prestatieresultaten [Presenteer prestatieresultaten op verschillende testdatasets en beschrijf beperkingen] ## 6. Risicobeoordeling [Identificeer specifieke risico's en beschrijf mitigatiestrategieën] ## 7. Menselijk Toezicht Procedures [Beschrijf wanneer en hoe menselijke interventie plaatsvindt] ## 8. Gebruikersdocumentatie [Gebruikersvriendelijke documentatie over hoe het systeem werkt en wat de beperkingen zijn] ## 9. Audit Logs [Documenteer hoe audit logs worden bijgehouden en wat wordt vastgelegd] ## 10. Compliance Mapping - EU AI Act: [Artikel referenties] - AVG: [Relevante artikelen] - BIO: [Relevante controls] - ISO 27001: [Relevante controls] "@ # Zorg dat de folder bestaat $folder = Split-Path -Path $OutputPath -Parent if (-not (Test-Path -Path $folder)) { New-Item -Path $folder -ItemType Directory -Force | Out-Null } $template | Out-File -FilePath $OutputPath -Encoding UTF8 Write-Host " Template gegenereerd: $OutputPath" -ForegroundColor Green } function Invoke-Remediation { <# .SYNOPSIS Genereert documentatietemplates voor ontbrekende documentatie #> [CmdletBinding()] param() Write-Host "`nRemediatie: EU AI Act Documentatie Templates Genereren" -ForegroundColor Yellow Write-Host "========================================================" -ForegroundColor Yellow $result = Test-AISystemDocumentation if ($result.MissingDocumentation.Count -eq 0) { Write-Host " Geen ontbrekende documentatie gevonden" -ForegroundColor Green exit 0 } Write-Host "`nGenereren van documentatietemplates..." -ForegroundColor Cyan # AI-systemen lijst (vereenvoudigd) $aiSystems = @{ "Azure OpenAI Service" = "$DocumentationPath\azure-openai-service.md" "Microsoft Copilot" = "$DocumentationPath\microsoft-copilot.md" "Azure Cognitive Services" = "$DocumentationPath\azure-cognitive-services.md" } foreach ($systemName in $result.MissingDocumentation) { if ($aiSystems.ContainsKey($systemName)) { $outputPath = $aiSystems[$systemName] if ($WhatIf) { Write-Host " [WhatIf] Zou template genereren voor: $systemName -> $outputPath" -ForegroundColor Yellow } else { New-DocumentationTemplate -SystemName $systemName -OutputPath $outputPath } } } Write-Host "`n✅ Templates gegenereerd. Vul de templates aan met systeemspecifieke informatie." -ForegroundColor Green exit 0 } # ============================================================================ # MAIN EXECUTION # ============================================================================ try { Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "EU AI Act Documentatie Monitoring" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan # Connect to services (indien nodig) # Connect-RequiredServices # Execute based on parameters if ($Monitoring) { Invoke-Monitoring } elseif ($Remediation) { Invoke-Remediation } else { # Default: Compliance check $result = Test-AISystemDocumentation if ($result.IsCompliant) { Write-Host "`n✅ COMPLIANT" -ForegroundColor Green } else { Write-Host "`n❌ NON-COMPLIANT" -ForegroundColor Red Write-Host "`nRun met -Monitoring voor gedetailleerde rapportage" -ForegroundColor Yellow Write-Host "Run met -Remediation om templates te genereren" -ForegroundColor Yellow } return $result } } catch { Write-Error "Error: $_" throw } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Critical - Organisaties kunnen niet aantonen dat AI-systemen voldoen aan EU AI Act, wat kan leiden tot boetes tot 6% van wereldwijde omzet, verbod op gebruik van AI-systemen, en reputatieschade. Bovendien is volledige documentatie vereist voor transparantie en verantwoording aan burgers.

Management Samenvatting

EU AI Act vereist uitgebreide documentatie voor alle AI-systemen. Opzetten documentatiestructuur met technische specs, risicoanalyses, gebruiksprotocollen en auditlogs. Implementatie: 100 uur. Critical compliance vereiste vanaf 2025.