Intune Device Compliance Monitoring

💼 Management Samenvatting

Intune Device Compliance vormt het bewijs dat ieder apparaat voldoet aan de bestuurlijk vastgestelde norm voordat het toegang krijgt tot workloads binnen de Nederlandse Baseline voor Veilige Cloud. Het onderwerp raakt bestuurders, CISO-teams en werkplekbeheerders, omdat zij gezamenlijk verantwoordelijk zijn voor het aantonen dat hardware, configuraties en gebruikerswaarschuwingen direct worden gekoppeld aan Conditional Access en SOC-processen. Deze publicatie vertaalt beleidsbesluiten naar concreet meetbare toezichtsignalering, zodat compliance in audits niet langer een momentopname is maar een dagelijks proces met traceerbare gegevens.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
9/10
Implementatie
88u (tech: 56u)
Van toepassing op:
Windows 11
Windows 10
macOS
iOS/iPadOS
Android Enterprise
Microsoft 365

De combinatie van BIO, AVG en NIS2 verplicht overheidsorganisaties om aan te tonen dat alleen vertrouwde apparaten verbinding maken met staats- en burgerdiensten. Incidenten bij gemeenten en uitvoeringsorganisaties hebben laten zien dat zelfs perfect ontworpen beleidsdocumenten falen wanneer de daadwerkelijke device compliance niet continu wordt gemonitord. Zonder betrouwbare telemetrie ontstaat een auditgap: bestuurders kunnen niet verklaren waarom een onveilige laptop toch verbinding kreeg met gevoelige systemen, terwijl toezichthouders verwachten dat uitzonderingen worden gelogd, beëindigd en voorzien van compenserende maatregelen. Daarom is een robuust complianceprogramma met Intune, Graph en ITSM-koppelingen een cruciële pijler onder Nederlandse digitale soevereiniteit.

PowerShell Modules Vereist
Primary API: Microsoft Graph
Connection: Connect-MgGraph
Required Modules: Microsoft.Graph.DeviceManagement, Microsoft.Graph.Beta.DeviceManagement

Implementatie

Dit artikel beschrijft hoe organisaties een geïntegreerde keten bouwen rond Intune device compliance. We behandelen bestuurlijke governance, de technische architectuur van datastromen, dagelijkse operatie inclusief SOC-integratie en het opbouwen van auditdossiers die standhouden bij externe inspecties. Elk hoofdstuk maakt de koppeling tussen beleidsuitspraak en technische implementatie expliciet en verwijst naar scripts, dashboards en rapportages waarmee teams realtime transparantie creëren.

Governance en risicosturing

Bestuurlijke borging van device compliance begint bij een duidelijke risicobeslissing. De CIO en CISO stellen vast dat alleen apparaten met aantoonbare naleving toegang krijgen tot workloads met impact op burgerrechten, vergunningverlening of kritieke ketens zoals persoonsregistraties. Dit besluit wordt vastgelegd in het informatiebeveiligingsbeleid en is gekoppeld aan risicotolerantie: voor vertrouwelijke data geldt zero outstanding compliance debt, terwijl minder kritieke processen een korte hersteltermijn mogen hanteren mits compenserende maatregelen actief blijven. Door die risicoparameters te koppelen aan begrotingen weten zowel werkplekteams als leveranciers welke middelen beschikbaar zijn om compliance te borgen, zoals licenties voor geavanceerde telemetrie of extra capaciteit voor uitzonderingsbeheer.

Governance vereist dat elke organisatorische laag dezelfde taal spreekt. Proceseigenaren benoemen minimale technische eisen, zoals BitLocker, Secure Boot, jailbreak-detectie en minimumversies per platform, maar vertalen die eisen ook naar contractuele verplichtingen richting leveranciers en uitbestedingspartners. CAB-procedures, inkoopvoorwaarden en HR-processen verwijzen naar dezelfde baseline zodat laptops tijdens onboarding automatisch worden gecontroleerd en de servicedesk geen improvisatie hoeft te doen. De stuurgroep voor endpointbeveiliging bewaakt dat beleidswijzigingen hun weg vinden naar Intune policies, automatisering en rapportages, waardoor de doorlooptijd tussen besluit en uitvoering maximaal één kwartaletappe bedraagt.

Een volwassen governance-structuur verdeelt eigenaarschap over specialistische rollen. Het CISO-office definieert normen en houdt toezicht op uitzonderingen, terwijl Intune-beheerders verantwoordelijk zijn voor technische configuratie, en het SOC bewaakt signalen over non-compliant devices binnen SIEM. Juridische en privacyteams bewaken dat logbestanden en devicegegevens conform AVG worden verwerkt. Deze rolverdeling wordt ondersteund door RACI-matrices en serviceafspraken, zodat iedereen weet wie beslissingsbevoegd is bij incidenten of beleidswijzigingen. Governance betekent hier ook dat dashboards voor bestuurders dezelfde indicatoren tonen als operationele teams gebruiken, wat discussies over definitieverschillen voorkomt en besluitvorming versnelt.

Tot slot verbindt governance device compliance aan bredere veranderinitiatieven. Projecten voor Windows-upgrades, BYOD-programma's of de introductie van specialistische apparatuur worden alleen goedgekeurd wanneer het compliance-effect vooraf is doorgerekend en geautomatiseerde controles beschikbaar zijn. Hierdoor ontstaat een cultuur waarin compliance-eisen vanaf het ontwerp worden meegenomen in plaats van achteraf te worden toegevoegd. De combinatie van risicobewustzijn, contractuele borging en transparante rapportage maakt dat bestuurders aantoonbaar voldoen aan de Nederlandse Baseline voor Veilige Cloud en richting toezichthouders kunnen uitleggen hoe beslissingen doorwerken tot op het niveau van individuele apparaten.

Datastromen, telemetrie en automatisering

Gebruik PowerShell-script intune-device-compliance.ps1 (functie Invoke-DeviceComplianceSnapshot) – Maakt verbinding met Microsoft Graph, verzamelt device compliance status, setting state summaries en uitzonderingen en levert een gestructureerd overzicht voor rapportage of export..

Een betrouwbaar complianceprogramma steunt op telemetrie die zowel beleidsstatus als daadwerkelijke apparaatgedrag meet. Intune fungeert als primaire bron omdat het compliancecriteria afdwingt en statusmeldingen levert, maar alleen een Graph-gestuurde extractie garandeert dat alle gegevens centraal beschikbaar komen. Het script Invoke-DeviceComplianceSnapshot gebruikt Microsoft Graph beta-endpoints om policy-assignments, setting summaries en device state data te consolideren in één object. Hierdoor kunnen organisaties binnen enkele seconden zien welke apparaten zich buiten de norm bevinden, welke instellingen verantwoordelijk zijn en hoe lang een afwijking al loopt. Door dezelfde dataset te voeden aan Power BI of Fabric ontstaat een continue stroom van managementinformatie zonder losse exports.

Architectuurontwerpen beschrijven hoe data zich door de keten bewegen. Device compliance status uit Graph wordt direct gekoppeld aan Conditional Access beslissingen, ITSM-workflows en SOC-dashboards. Wanneer een apparaat als non-compliant wordt gemarkeerd, activeert de automatiseringslaag drie acties: Conditional Access blokkeert toegang tot vertrouwelijke apps, ServiceNow maakt een taak aan voor de verantwoordelijke beheerder inclusief deadline en context, en Defender for Endpoint ontvangt een tag om verdachte activiteiten sneller te isoleren. Deze end-to-end workflow wordt vastgelegd in architectuurdiagrammen en runbooks, zodat teams exact weten welke API-calls, webhookconfiguraties en automation accounts verantwoordelijk zijn voor de triggerketen.

Lokale debugscenario's zijn onmisbaar om scripts te testen zonder productiegegevens te raken. De PowerShell-module bevat een LocalDebug-schakelaar die een representatieve dataset teruggeeft met verschillende platformen, uitzonderingen en compliancepercentages. Hierdoor kunnen teams binnen de maximale testduur van vijftien seconden controleren of functies, exports en foutafhandeling correct werken voordat zij verbinding maken met Graph. Deze aanpak versnelt code-reviews, maakt geautomatiseerde tests mogelijk in buildpipelines en voorkomt dat ontwikkelingen stilvallen doordat admins geen toegang hebben tot productie. Tegelijkertijd documenteert het ontwerp welke attributen in de sampledata aanwezig moeten zijn, zodat toekomstige uitbreidingen dezelfde kwaliteit behouden.

Automatisering eindigt niet bij data-acquisitie. Het script levert API-ready objecten die eenvoudig kunnen worden doorgestuurd naar Fabric, Azure Data Explorer of een SIEM. Organisaties definiëren standaard JSON-schema's voor exports, inclusief hashwaarden en timestamping, zodat datasets authenticiteit behouden wanneer zij worden gedeeld met auditors of ketenpartners. Door consistent dezelfde pipelines te gebruiken voor dashboards, rapportages en incidentrespons ontstaat er één bron van waarheid. Het ontwerp voorziet daarnaast in foutscenario's: wanneer Graph tijdelijk geen data retourneert, wordt een health-check uitgevoerd en wordt een melding verstuurd naar het beheerteam met aanbevelingen om tokenverversing of throttling te controleren. Zo blijft automatisering betrouwbaar, ook tijdens piekbelasting.

Operations, monitoring en respons

Gebruik PowerShell-script intune-device-compliance.ps1 (functie Invoke-DeviceComplianceMonitoring) – Analyseert compliancepercentages, setting failures en uitzonderingen, toont deze realtime in de console en kan resultaten exporteren naar CSV voor dashboards of ITSM..

Operationele teams sturen op concrete KPI's zoals het percentage compliant apparaten per platform, het aantal openstaande uitzonderingen en de gemiddelde hersteltijd. De monitoringfunctie van het script genereert deze indicatoren binnen enkele seconden en biedt direct inzicht in trendwijzigingen. Servicedesks gebruiken de cijfers om prioriteiten te stellen, terwijl het SOC alerts koppelt aan dreigingsniveaus. Wanneer het percentage non-compliant apparaten boven een afgesproken drempel stijgt, wordt automatisch een waarschuwing naar Teams, e-mail of het SIEM gestuurd zodat responsprocessen starten voordat gebruikers hinder ervaren. Door monitoring elke dag te draaien ontstaat een levend beeld van de organisatiegezondheid.

Responsprocessen zijn nauw verbonden met andere beveiligingslagen. Conditional Access wordt gebruikt als technische blokkade, maar de communicatie naar gebruikers en managers is net zo belangrijk. Zodra een apparaat wordt geblokkeerd, ontvangt de eigenaar een duidelijk bericht via e-mail of Teams met uitleg, stappenplan en contactgegevens. Het ITSM-systeem koppelt incidenten aan proceseigenaren zodat escalaties snel plaatsvinden wanneer afgesproken termijnen verlopen. De PowerShell-module kan ticketnummers terugschrijven naar de dataset, waardoor rapportages zichtbaar maken welke acties zijn uitgezet en waar bottlenecks ontstaan. Daardoor blijft de hele keten transparant voor zowel CISO als lijnmanagement.

Continue verbetering vraagt om diepgaande analyses van terugkerende problemen. Monitoringresultaten worden samengevoegd met gegevens over patchmanagement, applicatiefouten en hardwareleveranciers. Wanneer uit data blijkt dat een specifieke BIOS-versie structureel zorgt voor BitLocker-suspensies, wordt de leverancier aangesproken en wordt een tijdelijk compenserende maatregel ingesteld zoals strengere netwerksegmentatie. Bij mobiele apparaten kan het voorkomen dat een nieuwe OS-release custom compliance scripts verbreekt; het operationele team gebruikt de debugmodus van het script om dit scenario te simuleren en past vervolgens de instelling aan voordat de release in productie gaat. Elke wijziging wordt gedocumenteerd in het ISMS zodat lessons learned voor de hele sector beschikbaar blijven.

Menselijke factoren krijgen eveneens aandacht. Trainingstrajecten voor servicedesks, field engineers en security-analisten bevatten praktijkoefeningen waarbij zij de PowerShell-tool moeten gebruiken, resultaten interpreteren en beslissen welke escalatie passend is. Door scenario's te baseren op echte incidenten leren medewerkers hoe zij bewijs verzamelen, communicatie verzorgen en residuele risico's uitleggen aan bestuurders. Deze aanpak verkort de responstijd, vermindert afhankelijkheid van individuele experts en vergroot de weerbaarheid van ketenpartners, wat essentieel is binnen de Nederlandse Baseline voor Veilige Cloud.

Audittrail en continue verbetering

Auditors en toezichthouders verwachten inzicht in beslislogica, datasets en uitzonderingen. Het complianceprogramma legt daarom elke scriptuitvoer vast met een hashwaarde, timestamp en verwijzing naar de gebruikte Graph-endpoints. De exports worden opgeslagen in een SharePoint-bibliotheek met append-only rechten of in een immutable storage-account zodat bewijs niet kan worden gemanipuleerd. Door dezelfde structuur te hanteren voor alle rapportages kunnen auditors snel verifiëren dat een dataset authentiek is en dat de resultaten overeenkomen met wat aan bestuurders is gerapporteerd. Deze discipline voorkomt discussie over de herkomst van cijfers tijdens inspecties of Wob-verzoeken.

Bewijsvoering gaat verder dan technische gegevens. Elk uitzonderingsverzoek bevat een risicoanalyse, goedkeuring door de proceseigenaar, einddatum en compenserende maatregel. Het script haalt deze metadata op via ITSM-API's of leest ze in uit een csv-bestand zodat rapportages exact aangeven waarom een apparaat toch toegang kreeg. Wanneer de einddatum verloopt, wordt automatisch een waarschuwing gegenereerd en wordt de uitzondering gesloten tenzij er een nieuw besluit is genomen. Zo blijft de organisatie aantoonbaar binnen het risicoprofiel dat door bestuurders is vastgesteld.

Continue verbetering is verankerd in een PDCA-cyclus. Elk kwartaal voert het team steekproeven uit, waarbij drie willekeurige dagen worden geselecteerd en opnieuw worden geanalyseerd met de PowerShell-tool. Verschillen tussen de historische run en de heranalyse worden onderzocht; als blijkt dat een instelling inmiddels strenger is geworden, documenteert het team hoe dat besluit tot stand kwam en welke impact het heeft gehad op auditindicatoren. Bevindingen leiden tot backlog-items, aanpassingen van KPI's of updates van communicatie-templates zodat gebruikers beter begrijpen waarom blokkerende maatregelen noodzakelijk zijn.

Door auditresultaten te delen binnen sectorbrede gremia zoals IBD of CIP ontstaat collectief leereffect. De Nederlandse Baseline voor Veilige Cloud moedigt organisaties aan om geanonimiseerde statistieken uit te wisselen, bijvoorbeeld over de gemiddelde duur van uitzonderingen of de impact van nieuwe firmware op compliance. Deze informatie voedt beleidsbeslissingen op nationaal niveau en helpt leveranciers hun producten beter af te stemmen op Nederlandse eisen. Transparantie richting ketenpartners vergroot bovendien het vertrouwen bij burgers en toezichthouders dat de overheid controle houdt over haar apparatenpark.

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 Analyseert en monitort Intune device compliance status. .DESCRIPTION Verzamelt via Microsoft Graph device compliance gegevens, setting summaries en uitzonderingen en vertaalt deze naar bruikbare rapportages voor de Nederlandse Baseline voor Veilige Cloud. .NOTES Filename : intune-device-compliance.ps1 Author : Nederlandse Baseline voor Veilige Cloud Version : 1.0 Related : content/m365/device-management/intune-device-compliance.json .EXAMPLE .\intune-device-compliance.ps1 -Assessment -LocalDebug .EXAMPLE .\intune-device-compliance.ps1 -Monitoring -ExportPath .\reports\device-status.csv .EXAMPLE .\intune-device-compliance.ps1 -Remediation -WhatIf #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph.DeviceManagement [CmdletBinding(DefaultParameterSetName = 'Assessment')] param( [Parameter(ParameterSetName = 'Assessment')] [switch]$Assessment, [Parameter(ParameterSetName = 'Monitoring')] [switch]$Monitoring, [Parameter(ParameterSetName = 'Remediation')] [switch]$Remediation, [switch]$LocalDebug, [string]$ExportPath, [string]$ExceptionExportPath, [switch]$WhatIf ) $ErrorActionPreference = 'Stop' function Initialize-DeviceComplianceContext { if ($LocalDebug) { Write-Verbose 'LocalDebug actief: Graph-verbinding wordt niet opgezet.' return } $context = Get-MgContext if (-not $context) { Write-Host 'Verbinden met Microsoft Graph...' -ForegroundColor Yellow Connect-MgGraph -Scopes @( 'DeviceManagementManagedDevices.Read.All', 'DeviceManagementConfiguration.Read.All', 'DeviceManagementConfiguration.ReadWrite.All' ) -ErrorAction Stop | Out-Null $context = Get-MgContext } if ($context.ApiVersion -ne 'beta') { Select-MgProfile -Name 'beta' } } function Invoke-GraphPagedRequest { param( [Parameter(Mandatory)] [string]$Uri ) $results = @() $nextLink = $Uri while ($nextLink) { $response = Invoke-MgGraphRequest -Method GET -Uri $nextLink -ErrorAction Stop if ($response.value) { $results += $response.value } $nextLink = $response.'@odata.nextLink' } return $results } function Get-DeviceComplianceSampleData { $now = Get-Date return [pscustomobject]@{ Devices = @( [pscustomobject]@{ deviceName = 'RvIG-LAP-0101' userPrincipalName = 'beheerder@voorbeeld.nl' operatingSystem = 'Windows' osVersion = '11.0.26100' manufacturer = 'Microsoft' model = 'Surface Laptop 6' complianceState = 'compliant' lastSyncDateTime = $now.AddMinutes(-15) }, [pscustomobject]@{ deviceName = 'Belastingdienst-MOB-22' userPrincipalName = 'inspecteur@voorbeeld.nl' operatingSystem = 'Android' osVersion = '14' manufacturer = 'Samsung' model = 'Galaxy S23' complianceState = 'nonCompliant' lastSyncDateTime = $now.AddHours(-9) }, [pscustomobject]@{ deviceName = 'DUO-MAC-008' userPrincipalName = 'ciso@voorbeeld.nl' operatingSystem = 'macOS' osVersion = '14.5' manufacturer = 'Apple' model = 'MacBook Pro' complianceState = 'unknown' lastSyncDateTime = $now.AddDays(-3) } ) Summary = [pscustomobject]@{ compliantDeviceCount = 1240 nonCompliantDeviceCount = 47 inGracePeriodCount = 19 notApplicableDeviceCount= 12 remediatedDeviceCount = 8 } Settings = @( [pscustomobject]@{ settingName = 'RequireBitLocker' nonCompliantDeviceCount = 11 }, [pscustomobject]@{ settingName = 'MinimumOSVersion' nonCompliantDeviceCount = 18 } ) Exceptions = @( [pscustomobject]@{ DeviceName = 'Forensisch-Analyse-01' Owner = 'soc@voorbeeld.nl' Reason = 'Forensisch onderzoek' ExpiresOn = $now.AddDays(2) } ) } } function Get-DeviceComplianceSnapshot { Initialize-DeviceComplianceContext if ($LocalDebug) { return Get-DeviceComplianceSampleData } $summary = Invoke-MgGraphRequest -Method GET -Uri 'https://graph.microsoft.com/beta/deviceManagement/deviceCompliancePolicyDeviceStateSummary' -ErrorAction Stop $settings = Invoke-GraphPagedRequest -Uri 'https://graph.microsoft.com/beta/deviceManagement/deviceCompliancePolicySettingStateSummaries?$top=999' $devices = Invoke-GraphPagedRequest -Uri 'https://graph.microsoft.com/beta/deviceManagement/managedDevices?$select=id,deviceName,userPrincipalName,operatingSystem,osVersion,manufacturer,model,complianceState,lastSyncDateTime&$top=999' $exceptions = @() if ($ExceptionExportPath -and (Test-Path $ExceptionExportPath)) { try { $exceptions = Import-Csv -Path $ExceptionExportPath -ErrorAction Stop } catch { Write-Warning "Kon ExceptionExportPath niet lezen: $_" } } return [pscustomobject]@{ Devices = $devices Summary = $summary Settings = $settings Exceptions= $exceptions } } function Invoke-DeviceComplianceAssessment { try { $snapshot = Get-DeviceComplianceSnapshot $issues = @() if (-not $snapshot.Devices -or $snapshot.Devices.Count -eq 0) { $issues += 'Er zijn geen apparaten gevonden in Intune. Controleer of de Graph permissies correct zijn.' } else { $nonCompliant = @($snapshot.Devices | Where-Object { $_.complianceState -eq 'nonCompliant' }) $unknown = @($snapshot.Devices | Where-Object { $_.complianceState -in @('unknown','notApplicable') }) $stale = @($snapshot.Devices | Where-Object { $_.lastSyncDateTime -and ((Get-Date) - (Get-Date $_.lastSyncDateTime)).TotalHours -gt 72 }) if ($nonCompliant.Count -gt 0) { $issues += "$($nonCompliant.Count) apparaten zijn non-compliant en vereisen directe opvolging." } if ($unknown.Count -gt 0) { $issues += "$($unknown.Count) apparaten rapporteren een onbekende status of zijn niet geevalueerd." } if ($stale.Count -gt 0) { $issues += "$($stale.Count) apparaten hebben meer dan 72 uur geen compliance-update verstuurd." } } foreach ($setting in @($snapshot.Settings)) { if ($setting.nonCompliantDeviceCount -gt 25) { $issues += "Instelling '$($setting.settingName)' heeft $($setting.nonCompliantDeviceCount) non-compliant apparaten." } } if ($issues.Count -eq 0) { Write-Host 'COMPLIANT: Device compliance voldoet aan de gestelde criteria.' -ForegroundColor Green return 0 } else { Write-Host "NON-COMPLIANT: $($issues.Count) bevinding(en) aangetroffen." -ForegroundColor Red $issues | ForEach-Object { Write-Host " - $_" -ForegroundColor Yellow } return 1 } } catch { Write-Host "ERROR tijdens assessment: $_" -ForegroundColor Red return 2 } } function Invoke-DeviceComplianceMonitoring { param( [string]$ExportPath ) try { $snapshot = Get-DeviceComplianceSnapshot $summary = $snapshot.Summary if ($summary) { Write-Host "Compliant : $($summary.compliantDeviceCount)" -ForegroundColor Cyan Write-Host "Non compliant : $($summary.nonCompliantDeviceCount)" -ForegroundColor Cyan Write-Host "Grace period : $($summary.inGracePeriodCount)" -ForegroundColor Cyan Write-Host "Niet toepasbaar: $($summary.notApplicableDeviceCount)" -ForegroundColor Cyan } $devices = @($snapshot.Devices) if ($ExportPath) { $dir = Split-Path -Parent $ExportPath if ($dir -and -not (Test-Path $dir)) { New-Item -ItemType Directory -Path $dir -Force | Out-Null } $devices | Select-Object deviceName, userPrincipalName, operatingSystem, osVersion, manufacturer, model, complianceState, lastSyncDateTime | Export-Csv -Path $ExportPath -Encoding UTF8 -NoTypeInformation Write-Host "Device-overzicht geëxporteerd naar $ExportPath" -ForegroundColor Green } if ($snapshot.Exceptions.Count -gt 0) { Write-Host 'Actieve uitzonderingen:' -ForegroundColor Yellow $snapshot.Exceptions | Format-Table -AutoSize | Out-String | Write-Host } $topSettings = @($snapshot.Settings | Sort-Object -Property nonCompliantDeviceCount -Descending | Select-Object -First 5) if ($topSettings.Count -gt 0) { Write-Host 'Belangrijkste instellingsovertredingen:' -ForegroundColor Yellow $topSettings | Format-Table settingName, nonCompliantDeviceCount -AutoSize | Out-String | Write-Host } $thresholdExceeded = $summary -and $summary.nonCompliantDeviceCount -gt [math]::Round(($summary.compliantDeviceCount + 1) * 0.05) return $thresholdExceeded ? 1 : 0 } catch { Write-Host "ERROR tijdens monitoring: $_" -ForegroundColor Red return 2 } } function Invoke-DeviceComplianceRemediation { try { Write-Host 'Remediatie-aanpak voor Intune device compliance:' -ForegroundColor Yellow Write-Host '1. Prioriteer apparaten met complianceState nonCompliant en wijs verantwoordelijkheid toe in ITSM.' -ForegroundColor Gray Write-Host '2. Controleer BitLocker, Secure Boot, minimum OS-versies en jailbreak-detectie binnen de betreffende policies.' -ForegroundColor Gray Write-Host '3. Synchroniseer resultaten met Conditional Access zodat non-compliant apparaten automatisch worden geblokkeerd.' -ForegroundColor Gray Write-Host '4. Review uitzonderingen op einddatum en documenteer compenserende maatregelen.' -ForegroundColor Gray Write-Host '5. Verfijn dynamische groepen en filters zodat nieuwe apparaten direct aan de juiste policy worden gekoppeld.' -ForegroundColor Gray if ($WhatIf) { Write-Host 'WhatIf actief: er zijn geen aanpassingen gemaakt.' -ForegroundColor Yellow } return 0 } catch { Write-Host "ERROR tijdens remediatie: $_" -ForegroundColor Red return 2 } } Write-Host "`n========================================" -ForegroundColor Cyan Write-Host 'Intune Device Compliance' -ForegroundColor Cyan Write-Host 'Nederlandse Baseline voor Veilige Cloud' -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan try { switch ($PSCmdlet.ParameterSetName) { 'Assessment' { $exitCode = Invoke-DeviceComplianceAssessment exit $exitCode } 'Monitoring' { $exitCode = Invoke-DeviceComplianceMonitoring -ExportPath $ExportPath exit $exitCode } 'Remediation' { $exitCode = Invoke-DeviceComplianceRemediation exit $exitCode } default { Write-Host 'Gebruik -Assessment, -Monitoring of -Remediation (optioneel -LocalDebug, -ExportPath, -ExceptionExportPath, -WhatIf).' -ForegroundColor Yellow } } } catch { Write-Host "Onverwachte fout: $_" -ForegroundColor Red exit 2 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder realtime zicht op device compliance ontbreekt bewijsvoering richting toezichthouders en loopt iedere keten verhoogd risico op misbruik van onbeheerde endpoints, waardoor herstelkosten en reputatieschade exponentieel toenemen.

Management Samenvatting

Koppel Intune device compliance aan governance, Graph-telemetrie en geautomatiseerde respons zodat alleen aantoonbaar veilige apparaten toegang krijgen en audits steunen op harde data.