Customer-Managed Keys Voor Azure Services

💼 Management Samenvatting

Deze beveiligingsmaatregel waarborgt dat Azure-services gebruik maken van customer-managed keys (CMK) voor versleuteling, waardoor organisaties volledige controle behouden over hun cryptografische sleutels en voldoen aan strikte compliancevereisten voor gegevensbescherming.

Aanbeveling
CONFIGUREER CUSTOMER-MANAGED KEYS
Risico zonder
High
Risk Score
9/10
Implementatie
12u (tech: 8u)
Van toepassing op:
Azure Key Vault
Azure Storage
Azure SQL Database
Azure Cosmos DB
Azure Data Lake Storage

Customer-managed keys bieden organisaties volledige controle over de cryptografische sleutels die worden gebruikt voor het versleutelen van gegevens in Azure-services. In tegenstelling tot Microsoft-managed keys, waarbij Microsoft de sleutels beheert, stellen customer-managed keys organisaties in staat om hun eigen sleutels te genereren, roteren en beheren via Azure Key Vault. Deze controle is essentieel voor organisaties die moeten voldoen aan strikte compliancevereisten, zoals BIO normen, AVG-regelgeving en sector-specifieke voorschriften die eisen dat organisaties volledige controle hebben over cryptografische materialen. Bovendien biedt het gebruik van customer-managed keys extra beveiligingslagen door organisaties in staat te stellen hun eigen key lifecycle management procedures te implementeren, inclusief key rotation policies, key backup strategieën en key revocation procedures.

PowerShell Modules Vereist
Primary API: Azure API
Connection: Connect-AzAccount
Required Modules: Az.Accounts, Az.KeyVault, Az.Storage, Az.Sql

Implementatie

Deze maatregel controleert en configureert customer-managed keys voor Azure-services via Azure Key Vault, waarbij cryptografische sleutels worden gegenereerd en beheerd door de organisatie in plaats van door Microsoft. De implementatie omvat het configureren van Azure Key Vault met de juiste toegangsrechten, het genereren of importeren van cryptografische sleutels, en het configureren van Azure-services om deze sleutels te gebruiken voor versleuteling van data at rest. Deze aanpak voldoet aan actuele beveiligingskaders zoals CIS Benchmarks, BIO normen, ISO 27001 richtlijnen en AVG vereisten voor gegevensbescherming.

Vereisten en Voorkennis

Voordat organisaties customer-managed keys kunnen implementeren voor Azure-services, dienen zij te beschikken over een grondig begrip van cryptografische concepten, Azure Key Vault architectuur en de manier waarop versleuteling werkt binnen verschillende Azure-services. De implementatie vereist specifieke Azure-resources, toegangsrechten en technische kennis om de juiste configuratie te kunnen waarborgen. Customer-managed keys vormen een geavanceerde beveiligingsmaatregel die organisaties volledige controle geeft over de cryptografische sleutels die worden gebruikt voor het versleutelen van gegevens in Azure-services zoals Azure Storage, Azure SQL Database, Azure Cosmos DB en Azure Data Lake Storage. Het begrijpen van de fundamentele concepten achter customer-managed keys, zoals key generation, key rotation, key backup en key lifecycle management, vormt de basis voor een succesvolle implementatie.

De primaire vereiste voor deze beveiligingsmaatregel is de aanwezigheid van een Azure Key Vault instantie die is geconfigureerd met de juiste beveiligingsinstellingen, inclusief soft-delete en purge protection. Deze Key Vault moet beschikken over de benodigde toegangsrechten voor Azure-services om cryptografische sleutels te kunnen gebruiken voor versleuteling. Organisaties moeten beschikken over Azure-abonnementen met toegang tot de Azure-services die customer-managed keys ondersteunen, waarbij de specifieke services en configuratieopties kunnen variëren afhankelijk van de Azure-service die wordt gebruikt. Het is belangrijk om te begrijpen dat niet alle Azure-services customer-managed keys ondersteunen, en dat de implementatieprocedure kan verschillen tussen services. Organisaties moeten daarom eerst verifiëren welke services customer-managed keys ondersteunen en welke specifieke configuratiestappen vereist zijn voor elke service.

Voor het uitvoeren van verificatie- en configuratietaken is toegang vereist tot de Azure Portal of Azure CLI, in combinatie met de juiste rolgebaseerde toegangscontrole machtigingen. Minimale vereiste rollen omvatten Key Vault Reader voor monitoring doeleinden, Key Vault Crypto Officer voor het beheren van cryptografische sleutels, en service-specifieke rollen zoals Storage Account Contributor of SQL Server Contributor voor het configureren van customer-managed keys op de betreffende services. Daarnaast is het essentieel dat beheerders beschikken over kennis van PowerShell of Azure CLI voor geautomatiseerde verificatiescripts, waarbij de Az.KeyVault, Az.Storage en Az.Sql modules voor PowerShell of de bijbehorende Azure CLI extensies noodzakelijk zijn. De Azure Portal biedt een gebruiksvriendelijke grafische interface voor het beheren van customer-managed keys configuraties, maar voor grootschalige omgevingen met tientallen of honderden services is geautomatiseerde verificatie via scripts essentieel voor efficiënt beheer.

Organisaties dienen te beschikken over een duidelijk overzicht van alle Azure-services binnen hun omgeving die versleuteling ondersteunen, inclusief welke services momenteel gebruik maken van Microsoft-managed keys en welke services kunnen worden gemigreerd naar customer-managed keys. Deze inventarisatie is cruciaal omdat de migratie naar customer-managed keys impact kan hebben op bestaande workloads en mogelijk downtime vereist afhankelijk van de specifieke service. Bovendien moeten beheerders rekening houden met de kostenimplicaties, hoewel customer-managed keys zelf geen extra kosten met zich meebrengen, kunnen de onderliggende Azure Key Vault operaties wel kosten genereren. Het bijhouden van een accurate inventarisatie vereist regelmatige audits van alle Azure-abonnementen en resourcegroepen, waarbij organisaties gebruik kunnen maken van Azure Resource Graph queries of geautomatiseerde inventarisatiescripts om alle services te identificeren die customer-managed keys kunnen gebruiken.

Naast technische vereisten moeten organisaties ook beschikken over duidelijke procedures en documentatie voor het beheren van customer-managed keys. Dit omvat het definiëren van verantwoordelijkheden voor verschillende rollen binnen de organisatie, het opstellen van key lifecycle management procedures voor het genereren, roteren en verwijderen van cryptografische sleutels, en het implementeren van monitoring en alerting mechanismen die beheerders waarschuwen wanneer key access problemen optreden. Organisaties moeten ook rekening houden met de integratie van customer-managed keys in hun bestaande security governance frameworks, waarbij key management wordt opgenomen als onderdeel van standaard security baselines en compliance verificatieprocessen. Het is aanbevolen om key rotation procedures te automatiseren via Azure Key Vault policies, waardoor cryptografische sleutels automatisch worden geroteerd volgens een vooraf gedefinieerd schema, ongeacht wie de sleutels beheert binnen de organisatie.

Voor organisaties die werken met gevoelige gegevens en strikte compliance vereisten, zoals Nederlandse overheidsorganisaties die moeten voldoen aan BIO normen, is het essentieel om te beschikken over gedetailleerde kennis van cryptografische best practices en key management procedures. Customer-managed keys vormen een kritieke component van deze procedures, maar moeten worden geïntegreerd in een breder encryption framework dat ook aandacht besteedt aan data classification, encryption at rest en in transit, en key recovery scenario's. Organisaties moeten begrijpen hoe customer-managed keys zich verhouden tot andere Azure encryption opties, zoals Azure Disk Encryption voor virtuele machines en Transparent Data Encryption voor databases, om een complete encryption strategie te ontwikkelen die alle aspecten van gegevensbescherming afdekt.

Monitoring en Verificatie

Gebruik PowerShell-script customer-managed-keys.ps1 (functie Invoke-Monitoring) – Controleren.

Het monitoren van customer-managed keys configuraties voor Azure-services vormt een essentieel onderdeel van een robuust cryptografisch beveiligingsbeleid. Organisaties moeten regelmatig verificatie uitvoeren om te waarborgen dat alle services die customer-managed keys moeten gebruiken correct zijn geconfigureerd, waarbij de focus ligt op zowel nieuw aangemaakte als bestaande services die mogelijk configuratie-aanpassingen vereisen. Effectieve monitoring van customer-managed keys vereist een proactieve aanpak waarbij organisaties niet alleen reageren op geïdentificeerde problemen, maar ook preventief controleren of nieuwe services voldoen aan de beveiligingsvereisten voordat ze in productie worden genomen. Dit betekent dat monitoring procedures moeten worden geïntegreerd in de volledige levenscyclus van service beheer, van initiële creatie tot continue operationele verificatie.

De verificatieprocedure begint met het inventariseren van alle Azure-services binnen de organisatie die versleuteling ondersteunen en customer-managed keys kunnen gebruiken. Voor elke service dient de encryption configuratie te worden gecontroleerd via Azure Portal, Azure CLI of PowerShell, waarbij expliciet moet worden geverifieerd of customer-managed keys zijn geconfigureerd in plaats van Microsoft-managed keys. Het inventarisatieproces moet systematisch worden uitgevoerd voor alle Azure-abonnementen en resourcegroepen waar de organisatie toegang toe heeft, waarbij gebruik wordt gemaakt van Azure Resource Graph queries om een compleet overzicht te verkrijgen van alle services. Deze inventarisatie moet regelmatig worden herhaald, bij voorkeur wekelijks voor productieomgevingen, om ervoor te zorgen dat nieuwe services die zijn aangemaakt tussen verificatiecycli ook worden gecontroleerd.

Geautomatiseerde monitoring scripts gebruiken de Azure Resource Manager API of service-specifieke management APIs om programmatisch de encryption configuratiestatus te controleren voor alle services binnen een abonnement of resourcegroep. Deze scripts kunnen worden geïntegreerd in bestaande monitoring frameworks en compliance tooling, waardoor organisaties continu zicht hebben op de naleving van deze beveiligingsvereiste. Het is aanbevolen om wekelijkse verificaties uit te voeren voor productieomgevingen, waarbij eventuele afwijkingen direct worden geëscaleerd naar beveiligingsteams voor remediatie. Geavanceerde monitoring oplossingen kunnen ook gebruik maken van Azure Policy compliance evaluaties, die automatisch de encryption configuratiestatus van alle services controleren en rapporten genereren die aangeven welke services niet voldoen aan de customer-managed keys vereisten.

Naast het monitoren van de customer-managed keys configuratie zelf, moeten organisaties ook aandacht besteden aan de status en beschikbaarheid van de cryptografische sleutels in Azure Key Vault. Monitoring omvat tevens het bijhouden van key access logs, zodat beheerders inzicht hebben in wanneer en door wie cryptografische sleutels worden gebruikt. Het monitoren van key access is belangrijk omdat ongebruikelijke access patterns kunnen wijzen op beveiligingsproblemen of onjuiste configuraties. Organisaties moeten regelmatig evalueren of cryptografische sleutels correct functioneren en of er geen key access errors optreden die kunnen leiden tot service onderbrekingen. Deze evaluatie moet worden uitgevoerd in overleg met de eigenaren van de services en de toepassingen die gebruik maken van de versleutelde gegevens.

Voor verschillende Azure-services gelden enigszins afwijkende verificatieprocedures, omdat elke service specifieke configuratieopties en management interfaces biedt. Beheerders moeten specifieke PowerShell cmdlets of Azure CLI commando's gebruiken die zijn ontworpen voor elke service, waarbij de customer-managed keys configuratie wordt gecontroleerd via de dedicated management endpoints. Het is essentieel dat monitoring procedures alle ondersteunde services adequaat afdekken om volledige dekking te waarborgen binnen de organisatie. Azure Storage accounts gebruiken bijvoorbeeld een andere configuratieprocedure dan Azure SQL Database, en beide vereisen specifieke kennis en tools voor effectief beheer. Organisaties die gebruik maken van meerdere Azure-services moeten ervoor zorgen dat hun monitoring scripts en procedures correct zijn geconfigureerd om alle relevante services te ondersteunen.

Het implementeren van effectieve monitoring voor customer-managed keys vereist ook aandacht voor logging en audit trails. Alle verificatieactiviteiten moeten worden vastgelegd in Azure Monitor logs of externe SIEM systemen, waarbij informatie wordt bijgehouden over wanneer verificaties zijn uitgevoerd, welke services zijn gecontroleerd, en welke afwijkingen zijn geïdentificeerd. Deze audit logs zijn niet alleen belangrijk voor compliance doeleinden, maar bieden ook waardevolle informatie voor het analyseren van trends en het identificeren van patronen in configuratiefouten. Organisaties moeten alerting mechanismen implementeren die beheerders waarschuwen wanneer nieuwe services worden aangemaakt zonder customer-managed keys configuratie, of wanneer bestaande services worden gewijzigd op een manier die de encryption configuratie beïnvloedt. Deze proactieve alerting zorgt ervoor dat beveiligingsafwijkingen snel worden geïdentificeerd en gecorrigeerd, voordat ze kunnen leiden tot compliance problemen of beveiligingsrisico's.

Compliance en Auditing

De implementatie van customer-managed keys voor Azure-services vormt een kritieke component van compliance met meerdere beveiligingskaders die van toepassing zijn op Nederlandse overheidsorganisaties en publieke sector instellingen. Deze beveiligingsmaatregel adresseert specifieke vereisten uit diverse internationale en nationale standaarden die gericht zijn op het beschermen van gevoelige gegevens en het waarborgen van volledige controle over cryptografische materialen.

Binnen het CIS Microsoft Azure Foundations Benchmark framework wordt customer-managed keys expliciet aanbevolen voor services die gevoelige gegevens bevatten, waarbij de nadruk ligt op het behouden van volledige controle over cryptografische sleutels. CIS Benchmarks benadrukken het belang van key management best practices en het voorkomen van vendor lock-in door het gebruik van customer-managed keys. Deze controle behoort tot Level 1 vereisten voor services die gevoelige of geclassificeerde gegevens bevatten, wat betekent dat deze als basisbeveiligingsmaatregel wordt beschouwd voor productieomgevingen met hoge beveiligingsvereisten.

De Baseline Informatiebeveiliging Overheid, beter bekend als BIO, eist via controle 10.01 dat organisaties beschikken over adequate mechanismen voor cryptografische sleutelbeheer en volledige controle over cryptografische materialen. BIO 10.01 legt de nadruk op het waarborgen van controle en beheerbaarheid van beveiligingscomponenten, waarbij customer-managed keys een directe bijdrage leveren aan deze doelstellingen. Nederlandse overheidsorganisaties moeten aantonen dat zij beschikken over procedures en technische maatregelen die het mogelijk maken om cryptografische sleutels volledig te beheren, inclusief key generation, key rotation en key revocation procedures. Customer-managed keys voldoen aan deze vereisten door organisaties volledige controle te geven over de cryptografische sleutels die worden gebruikt voor versleuteling.

ISO 27001:2022 controle A.8.24 behandelt cryptografie en eist dat organisaties passende cryptografische controles implementeren voor de bescherming van informatie, inclusief mechanismen voor het beheren van cryptografische sleutels gedurende hun volledige levenscyclus. Customer-managed keys dragen bij aan deze vereiste door te waarborgen dat organisaties volledige controle hebben over cryptografische sleutels en kunnen voldoen aan de ISO 27001 eis voor adequaat key lifecycle management. De controle vereist tevens dat organisaties beschikken over procedures voor key generation, key distribution, key storage, key rotation en key destruction, waarbij customer-managed keys de technische basis vormen voor dergelijke procedures.

Voor audit doeleinden moeten organisaties documentatie bijhouden die aantoont dat alle relevante services zijn geconfigureerd met customer-managed keys, inclusief verificatieresultaten en eventuele afwijkingen die zijn geïdentificeerd en gecorrigeerd. Deze audit evidence dient minimaal zeven jaar te worden bewaard conform algemene archiveringsvereisten voor beveiligingsconfiguraties, waarbij organisaties kunnen gebruik maken van Azure Policy compliance rapporten, Azure Monitor logs of externe compliance tooling om deze documentatie te genereren en te onderhouden. Daarnaast moeten organisaties documentatie bijhouden over key lifecycle management procedures, inclusief key rotation schedules, key backup procedures en key recovery procedures, om aan te tonen dat cryptografische sleutels op een gecontroleerde en gedocumenteerde manier worden beheerd.

Remediatie en Herstel

Gebruik PowerShell-script customer-managed-keys.ps1 (functie Invoke-Remediation) – Herstellen.

Wanneer monitoring activiteiten aantonen dat een Azure-service geen customer-managed keys heeft geconfigureerd, dienen organisaties onmiddellijk remediatiestappen te ondernemen om deze beveiligingsafwijking te corrigeren. De remediatieprocedure varieert afhankelijk van het type Azure-service en de huidige configuratiestatus, waarbij beheerders rekening moeten houden met mogelijke impact op bestaande workloads en toegankelijkheid van gegevens tijdens het configuratieproces. Het is belangrijk om te begrijpen dat remediatie niet alleen bestaat uit het technisch configureren van customer-managed keys, maar ook uit het waarborgen dat de wijziging correct wordt geïmplementeerd zonder negatieve gevolgen voor bestaande systemen en applicaties die afhankelijk zijn van de service. Organisaties moeten een gestructureerde aanpak hanteren voor remediatie, waarbij eerst een risicoanalyse wordt uitgevoerd, vervolgens een gedetailleerd remediatieplan wordt opgesteld, en ten slotte de wijziging wordt geïmplementeerd met adequate verificatie en documentatie.

Voor nieuwe Azure-services die nog geen gegevens bevatten, is de remediatie relatief eenvoudig: beheerders kunnen customer-managed keys direct configureren via Azure Portal door naar de service eigenschappen te navigeren en de encryption configuratie aan te passen. Voor Azure Storage accounts kan deze instelling worden gewijzigd via de Azure Portal interface onder de Encryption sectie, waarbij de wijziging direct van kracht wordt zonder dat bestaande gegevens worden beïnvloed. PowerShell gebruikers kunnen service-specifieke cmdlets gebruiken, terwijl Azure CLI gebruikers de bijbehorende opdrachten kunnen uitvoeren. Deze eenvoudige remediatieprocedure is ideaal voor development of test omgevingen waar services nog niet in productie gebruik zijn, of voor nieuwe services die net zijn aangemaakt maar nog geen productiegegevens bevatten. Het is aanbevolen om customer-managed keys direct te configureren bij het aanmaken van nieuwe services, zodat deze beveiligingsmaatregel vanaf het begin actief is en geen latere remediatie vereist.

Bestaande Azure-services die reeds in gebruik zijn met productiegegevens en momenteel gebruik maken van Microsoft-managed keys, vereisen een meer zorgvuldige aanpak voor remediatie. In deze gevallen moeten beheerders eerst verifiëren dat geen kritieke operaties afhankelijk zijn van de huidige encryption configuratie, waarna customer-managed keys kunnen worden geconfigureerd zonder onderbreking van services. Het is belangrijk om te begrijpen dat de migratie naar customer-managed keys voor de meeste Azure-services transparant verloopt en geen downtime vereist, omdat de versleuteling wordt toegepast op data at rest en niet op actieve operaties. Deze impactanalyse moet alle applicaties en services identificeren die gebruik maken van de Azure-service, de kritiekheid van deze afhankelijkheden beoordelen, en een plan opstellen voor het testen van de customer-managed keys configuratie voordat deze in productie wordt geactiveerd.

De remediatieprocedure begint met het voorbereiden van Azure Key Vault, waarbij beheerders moeten verifiëren dat de Key Vault correct is geconfigureerd met soft-delete en purge protection, en dat de benodigde cryptografische sleutels beschikbaar zijn. Vervolgens moeten beheerders de juiste toegangsrechten configureren zodat de Azure-service toegang heeft tot de cryptografische sleutels in Key Vault. Dit omvat het configureren van Key Vault access policies of RBAC rollen, afhankelijk van het toegangsmodel dat wordt gebruikt. Voor services die gebruik maken van managed identities is het essentieel om de managed identity de juiste Key Vault permissions te verlenen, zodat de service cryptografische sleutels kan gebruiken voor versleuteling. Het is aanbevolen om deze configuratie te testen in een niet-productieomgeving voordat deze wordt toegepast op productieservices, om ervoor te zorgen dat alle configuratiestappen correct zijn uitgevoerd en dat er geen toegangsproblemen optreden.

Na het configureren van de Key Vault toegangsrechten kunnen beheerders de customer-managed keys configuratie activeren op de Azure-service. Voor de meeste services kan dit worden gedaan via de Azure Portal door naar de Encryption configuratie te navigeren en customer-managed keys te selecteren, waarbij de Key Vault en cryptografische sleutel worden geselecteerd. PowerShell en Azure CLI bieden ook opties voor geautomatiseerde configuratie, wat bijzonder nuttig is voor grootschalige omgevingen met meerdere services. Na succesvolle configuratie moeten organisaties verificatieprocedures uitvoeren om te bevestigen dat customer-managed keys correct functioneren, bijvoorbeeld door te verifiëren dat de service succesvol toegang heeft tot de cryptografische sleutels en dat versleuteling correct wordt toegepast. Deze verificatieprocedure is essentieel om te waarborgen dat de customer-managed keys configuratie daadwerkelijk werkt zoals verwacht, en om eventuele problemen te identificeren voordat kritieke gegevens worden versleuteld.

Het implementeren van effectieve remediatieprocedures vereist ook aandacht voor change management en communicatie met stakeholders. Wanneer customer-managed keys worden geconfigureerd op bestaande services die in productie gebruik zijn, moeten organisaties alle betrokken partijen informeren over de wijziging, inclusief applicatie-eigenaren, security teams, en compliance officers. Deze communicatie moet duidelijk maken wat de impact is van de wijziging, welke voordelen het biedt voor beveiliging en compliance, en wat de verwachte impact is op bestaande systemen. Organisaties moeten ook een rollback plan opstellen voor het geval de remediatie onverwachte problemen veroorzaakt, hoewel het belangrijk is om te begrijpen dat de migratie naar customer-managed keys voor de meeste services reversibel is door terug te schakelen naar Microsoft-managed keys indien nodig. In plaats daarvan moet het rollback plan zich richten op het herstellen van eventuele problemen die ontstaan door de wijziging, zoals het oplossen van key access problemen of het aanpassen van Key Vault configuraties.

Compliance & Frameworks

Automation

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

PowerShell
<# ================================================================================ AZURE POWERSHELL SCRIPT - Nederlandse Baseline voor Veilige Cloud ================================================================================ .SYNOPSIS Customer-Managed Keys voor Azure Services .DESCRIPTION CIS Azure Foundations Benchmark - Control 8.1 Controleert of Azure-services gebruik maken van customer-managed keys voor versleuteling. .NOTES Filename: customer-managed-keys.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 CIS Control: 8.1 #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.KeyVault, Az.Storage, Az.Sql [CmdletBinding()] param([Parameter()][switch]$Monitoring) $ErrorActionPreference = 'Stop' $PolicyName = "Customer-Managed Keys" function Connect-RequiredServices { if (-not (Get-AzContext)) { Connect-AzAccount | Out-Null } } function Test-StorageAccountCMK { param([Parameter(Mandatory=$true)]$StorageAccount) try { $encryption = Get-AzStorageAccount -ResourceGroupName $StorageAccount.ResourceGroupName -Name $StorageAccount.StorageAccountName -ErrorAction SilentlyContinue if ($encryption -and $encryption.Encryption -and $encryption.Encryption.KeySource -eq 'Microsoft.Keyvault') { return $true } return $false } catch { return $false } } function Test-SqlDatabaseCMK { param([Parameter(Mandatory=$true)]$SqlServer) try { $databases = Get-AzSqlDatabase -ResourceGroupName $SqlServer.ResourceGroupName -ServerName $SqlServer.ServerName -ErrorAction SilentlyContinue $cmkCount = 0 foreach ($db in $databases) { if ($db.EncryptionProtector -and $db.EncryptionProtector -ne 'ServiceManaged') { $cmkCount++ } } return @{ Total = $databases.Count; CMK = $cmkCount } } catch { return @{ Total = 0; CMK = 0 } } } function Test-Compliance { $result = @{ StorageAccounts = @{ Total = 0; CMK = 0 } SqlServers = @{ Total = 0; CMK = 0 } TotalServices = 0 TotalCMK = 0 } try { # Check Storage Accounts $storageAccounts = Get-AzStorageAccount -ErrorAction SilentlyContinue $result.StorageAccounts.Total = $storageAccounts.Count foreach ($sa in $storageAccounts) { if (Test-StorageAccountCMK -StorageAccount $sa) { $result.StorageAccounts.CMK++ } } # Check SQL Servers $sqlServers = Get-AzSqlServer -ErrorAction SilentlyContinue $result.SqlServers.Total = $sqlServers.Count foreach ($server in $sqlServers) { $dbResult = Test-SqlDatabaseCMK -SqlServer $server $result.SqlServers.CMK += $dbResult.CMK } $result.TotalServices = $result.StorageAccounts.Total + $result.SqlServers.Total $result.TotalCMK = $result.StorageAccounts.CMK + $result.SqlServers.CMK return $result } catch { Write-Warning "Error during compliance check: $_" return $result } } try { Connect-RequiredServices if ($Monitoring) { $r = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "Storage Accounts:" -ForegroundColor White Write-Host " Total: $($r.StorageAccounts.Total)" -ForegroundColor White Write-Host " CMK Configured: $($r.StorageAccounts.CMK)" -ForegroundColor $(if ($r.StorageAccounts.CMK -eq $r.StorageAccounts.Total -and $r.StorageAccounts.Total -gt 0) { 'Green' } elseif ($r.StorageAccounts.Total -eq 0) { 'Gray' } else { 'Yellow' }) Write-Host "SQL Servers:" -ForegroundColor White Write-Host " Total: $($r.SqlServers.Total)" -ForegroundColor White Write-Host " Databases with CMK: $($r.SqlServers.CMK)" -ForegroundColor $(if ($r.SqlServers.CMK -gt 0) { 'Green' } else { 'Yellow' }) Write-Host "`nOverall:" -ForegroundColor White Write-Host " Total Services: $($r.TotalServices)" -ForegroundColor White Write-Host " Services with CMK: $($r.TotalCMK)" -ForegroundColor $(if ($r.TotalCMK -eq $r.TotalServices -and $r.TotalServices -gt 0) { 'Green' } elseif ($r.TotalServices -eq 0) { 'Gray' } else { 'Yellow' }) } else { $r = Test-Compliance Write-Host "`nCustomer-Managed Keys Status:" -ForegroundColor Cyan Write-Host "Storage Accounts: $($r.StorageAccounts.CMK)/$($r.StorageAccounts.Total) with CMK" Write-Host "SQL Databases: $($r.SqlServers.CMK) with CMK" Write-Host "Total: $($r.TotalCMK)/$($r.TotalServices) services using CMK" } } catch { Write-Error $_; exit 1 } # ================================================================================ # Standaard Invoke-* Functions (Auto-generated) # ================================================================================ function Invoke-Implementation { <# .SYNOPSIS Implementeert de configuratie #> [CmdletBinding()] param() Invoke-Remediation } function Invoke-Monitoring { <# .SYNOPSIS Controleert de huidige configuratie status #> [CmdletBinding()] param() $Monitoring = $true try { Connect-RequiredServices if ($Monitoring) { $r = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "Storage Accounts:" -ForegroundColor White Write-Host " Total: $($r.StorageAccounts.Total)" -ForegroundColor White Write-Host " CMK Configured: $($r.StorageAccounts.CMK)" -ForegroundColor $(if ($r.StorageAccounts.CMK -eq $r.StorageAccounts.Total -and $r.StorageAccounts.Total -gt 0) { 'Green' } elseif ($r.StorageAccounts.Total -eq 0) { 'Gray' } else { 'Yellow' }) Write-Host "SQL Servers:" -ForegroundColor White Write-Host " Total: $($r.SqlServers.Total)" -ForegroundColor White Write-Host " Databases with CMK: $($r.SqlServers.CMK)" -ForegroundColor $(if ($r.SqlServers.CMK -gt 0) { 'Green' } else { 'Yellow' }) Write-Host "`nOverall:" -ForegroundColor White Write-Host " Total Services: $($r.TotalServices)" -ForegroundColor White Write-Host " Services with CMK: $($r.TotalCMK)" -ForegroundColor $(if ($r.TotalCMK -eq $r.TotalServices -and $r.TotalServices -gt 0) { 'Green' } elseif ($r.TotalServices -eq 0) { 'Gray' } else { 'Yellow' }) } else { $r = Test-Compliance Write-Host "`nCustomer-Managed Keys Status:" -ForegroundColor Cyan Write-Host "Storage Accounts: $($r.StorageAccounts.CMK)/$($r.StorageAccounts.Total) with CMK" Write-Host "SQL Databases: $($r.SqlServers.CMK) with CMK" Write-Host "Total: $($r.TotalCMK)/$($r.TotalServices) services using CMK" } } catch { Write-Error $_; exit 1 } } function Invoke-Remediation { <# .SYNOPSIS Herstelt de configuratie naar de gewenste staat .DESCRIPTION Configureert customer-managed keys voor Azure-services die deze nog niet hebben geconfigureerd. Let op: Deze functie vereist handmatige configuratie via Azure Portal of specifieke service cmdlets. #> [CmdletBinding()] param() Write-Host "[INFO] Customer-Managed Keys configuratie vereist handmatige stappen" -ForegroundColor Yellow Write-Host "[INFO] Gebruik Azure Portal of service-specifieke PowerShell cmdlets" -ForegroundColor Yellow Write-Host "[INFO] Voor Storage Accounts: Set-AzStorageAccount met -KeyvaultEncryption" -ForegroundColor Cyan Write-Host "[INFO] Voor SQL Database: Set-AzSqlServerTransparentDataEncryptionProtector" -ForegroundColor Cyan Write-Host "[INFO] Running monitoring check..." -ForegroundColor Cyan Invoke-Monitoring }

Risico zonder implementatie

Risico zonder implementatie
High: Gebrek aan controle over cryptografische sleutels - Microsoft beheert keys, organisatie heeft geen key lifecycle controle. Compliance: CIS 8.1, BIO 10.01, ISO 27001 A.8.24. Het risico is hoog - compliance en controle verlies.

Management Samenvatting

Customer-Managed Keys: Configureer Azure-services om customer-managed keys te gebruiken voor versleuteling (volledige controle over cryptografische sleutels via Azure Key Vault). Configuratie: Service → Encryption → Customer-managed keys → Selecteer Key Vault en key. Gratis (Key Vault operaties kunnen kosten genereren). Verificatie: 1-2 uur. Verplicht voor gevoelige gegevens - CIS 8.1, BIO 10.01.