Azure Key Vault Veilige Deployment

💼 Management Samenvatting

Een veilige en correcte deployment van Azure Key Vault vormt de fundamentele basis voor cryptografische sleutelbeheer binnen cloudomgevingen. Zonder een goed doordachte deploymentstrategie lopen organisaties het risico op beveiligingslekken, compliance-problemen en operationele uitdagingen die de integriteit en beschikbaarheid van kritieke cryptografische materialen kunnen compromitteren.

Aanbeveling
IMPLEMENTEER VEILIGE KEY VAULT DEPLOYMENT
Risico zonder
High
Risk Score
9/10
Implementatie
24u (tech: 16u)
Van toepassing op:
Azure Key Vault
Azure Managed HSM

Azure Key Vault deployment is niet alleen een technische configuratie, maar een kritieke beveiligingscontrole die organisaties in staat stelt om cryptografische sleutels, certificaten en geheimen veilig op te slaan en te beheren. Een onjuiste deployment kan leiden tot beveiligingslekken waarbij onbevoegden toegang krijgen tot gevoelige cryptografische materialen, wat kan resulteren in datalekken, compromittering van versleutelde gegevens en niet-naleving van compliance-vereisten zoals vastgelegd in de Baseline Informatiebeveiliging Overheid (BIO), de Algemene Verordening Gegevensbescherming (AVG) en andere relevante wet- en regelgeving. Daarnaast kan een slecht geconfigureerde Key Vault deployment leiden tot operationele problemen zoals onbeschikbaarheid van cryptografische materialen, wat kan resulteren in uitval van kritieke applicaties en diensten die afhankelijk zijn van deze materialen. Voor Nederlandse overheidsorganisaties is een veilige Key Vault deployment essentieel voor het waarborgen van transparantie en verantwoording, waarbij bestuurders moeten kunnen aantonen dat zij passende controles hebben geïmplementeerd om cryptografische materialen te beveiligen.

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

Implementatie

Deze maatregel beschrijft best practices voor het veilig deployen van Azure Key Vault instanties, inclusief het configureren van netwerkisolatie via private endpoints of firewallregels, het implementeren van toegangscontrole via rolgebaseerde toegangscontrole (RBAC) of access policies, het inschakelen van soft-delete en purge protection voor key recovery, het configureren van diagnostische logging voor audit doeleinden, en het waarborgen van compliance met beveiligingskaders zoals CIS Benchmarks, BIO normen en ISO 27001 richtlijnen. De deploymentprocedure omvat zowel handmatige configuratie via Azure Portal als geautomatiseerde deployment via Infrastructure as Code (IaC) oplossingen zoals Azure Resource Manager templates, Bicep of Terraform.

Vereisten en Voorkennis

Voordat organisaties Azure Key Vault instanties kunnen deployen, dienen zij te beschikken over een grondig begrip van cryptografische concepten, Azure Key Vault architectuur en de manier waarop key management werkt binnen cloudomgevingen. De deployment vereist specifieke Azure-resources, toegangsrechten en technische kennis om de juiste configuratie te kunnen waarborgen. Azure Key Vault fungeert als een gecentraliseerde service voor het veilig opslaan en beheren van cryptografische sleutels, certificaten en geheimen die essentieel zijn voor moderne cloud applicaties en diensten. Het begrijpen van de fundamentele concepten achter Key Vault deployment, zoals netwerkisolatie, toegangscontrole, logging en monitoring, vormt de basis voor een succesvolle implementatie die voldoet aan beveiligings- en compliance-vereisten.

De primaire vereiste voor deze beveiligingsmaatregel is de aanwezigheid van een Azure-abonnement met de juiste service tier en toegangsrechten voor het aanmaken en beheren van Azure Key Vault resources. Organisaties moeten beschikken over Azure-abonnementen met toegang tot de Azure Key Vault service, waarbij de specifieke configuratieopties kunnen variëren afhankelijk van de gekozen Key Vault variant: standaard Key Vault of Managed HSM. Standaard Key Vaults zijn geschikt voor de meeste organisaties en bieden een kosteneffectieve oplossing voor het beheren van cryptografische materialen, terwijl Managed HSM instanties zijn ontworpen voor organisaties met strikte compliance vereisten die volledige controle over de hardware security modules nodig hebben. Het is belangrijk om te begrijpen dat niet alle Azure-regio's beide Key Vault varianten ondersteunen, en dat organisaties daarom eerst moeten verifiëren welke variant beschikbaar is in hun primaire Azure-regio voordat zij een deploymentstrategie opstellen.

Voor het uitvoeren van deployment- 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 Contributor voor het aanmaken en beheren van Key Vault instanties, en Key Vault Administrator voor het configureren van geavanceerde beveiligingsinstellingen zoals netwerkisolatie en toegangsbeleid. Daarnaast is het essentieel dat beheerders beschikken over kennis van Infrastructure as Code (IaC) tools zoals Azure Resource Manager templates, Bicep of Terraform voor geautomatiseerde deployment, waarbij de Az.KeyVault en Az.Resources modules voor PowerShell of de bijbehorende Azure CLI extensies noodzakelijk zijn. De Azure Portal biedt een gebruiksvriendelijke grafische interface voor het deployen van Key Vault instanties, maar voor grootschalige omgevingen met meerdere Key Vaults of voor organisaties die Infrastructure as Code gebruiken voor consistentie en herhaalbaarheid, is geautomatiseerde deployment via templates essentieel voor efficiënt beheer.

Organisaties dienen te beschikken over een duidelijk overzicht van alle applicaties en services binnen hun omgeving die cryptografische materialen nodig hebben, inclusief welke applicaties momenteel gebruik maken van hardcoded geheimen of lokaal opgeslagen sleutels en welke applicaties kunnen worden gemigreerd naar Azure Key Vault. Deze inventarisatie is cruciaal omdat de migratie naar Key Vault impact kan hebben op bestaande workloads en mogelijk wijzigingen vereist in applicatiecode of configuratiebestanden. Bovendien moeten beheerders rekening houden met de kostenimplicaties, hoewel Key Vault zelf relatief kosteneffectief is, kunnen de onderliggende operaties zoals key operations, secret operations en storage operaties wel kosten genereren. Het bijhouden van een accurate inventarisatie vereist regelmatige audits van alle applicaties en services, waarbij organisaties gebruik kunnen maken van Azure Resource Graph queries of geautomatiseerde inventarisatiescripts om alle services te identificeren die cryptografische materialen gebruiken en die kunnen profiteren van Key Vault integratie.

Naast technische vereisten moeten organisaties ook beschikken over duidelijke procedures en documentatie voor het beheren van Key Vault deployments. Dit omvat het definiëren van verantwoordelijkheden voor verschillende rollen binnen de organisatie, het opstellen van naming conventions voor Key Vault instanties en resourcegroepen, het implementeren van tagging strategieën voor resource management en kostenallocatie, en het ontwikkelen van deployment templates die standaard beveiligingsconfiguraties bevatten. Organisaties moeten ook rekening houden met de integratie van Key Vault deployment in hun bestaande security governance frameworks, waarbij Key Vault configuratie wordt opgenomen als onderdeel van standaard security baselines en compliance verificatieprocessen. Het is aanbevolen om Key Vault deployments te automatiseren via Infrastructure as Code oplossingen, waardoor nieuwe Key Vault instanties automatisch worden geconfigureerd met de juiste beveiligingsinstellingen, ongeacht wie de Key Vault aanmaakt 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. Key Vault deployment vormt een kritieke component van deze procedures, maar moet 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 Key Vault deployment zich verhoudt tot andere Azure beveiligingsfuncties, zoals Azure Private Link voor netwerkisolatie, Azure Monitor voor logging en monitoring, en Azure Policy voor governance en compliance, om een complete beveiligingsstrategie te ontwikkelen die alle aspecten van cryptografische materialenbeheer afdekt.

Deployment Strategie en Best Practices

Een effectieve Azure Key Vault deploymentstrategie begint met het definiëren van een duidelijke architectuur die rekening houdt met de specifieke behoeften van de organisatie, de compliance-vereisten en de operationele vereisten. Organisaties moeten beslissen of zij gebruik willen maken van een gecentraliseerde aanpak waarbij één of enkele Key Vault instanties worden gedeeld door meerdere applicaties, of een gedecentraliseerde aanpak waarbij elke applicatie of service zijn eigen Key Vault instantie heeft. Een gecentraliseerde aanpak biedt voordelen zoals eenvoudiger beheer, lagere kosten en consistente beveiligingsconfiguraties, maar kan leiden tot single points of failure en complexere toegangscontrole. Een gedecentraliseerde aanpak biedt betere isolatie tussen applicaties en services, maar vereist meer beheer en kan leiden tot hogere kosten en inconsistente configuraties. De keuze tussen deze aanpakken hangt af van factoren zoals de grootte van de organisatie, het aantal applicaties en services, de compliance-vereisten en de operationele voorkeuren.

Bij het deployen van een nieuwe Key Vault instantie moeten organisaties beginnen met het selecteren van de juiste Azure-regio, waarbij rekening wordt gehouden met factoren zoals data residency vereisten, latency overwegingen voor applicaties die toegang nodig hebben tot cryptografische materialen, en beschikbaarheid van de Key Vault service in de gekozen regio. Voor Nederlandse overheidsorganisaties die moeten voldoen aan data residency vereisten kan het nodig zijn om Key Vault instanties te deployen in specifieke Azure-regio's die voldoen aan deze vereisten, zoals West Europe of North Europe. Na het selecteren van de regio moeten organisaties een resourcegroep aanmaken of selecteren voor de Key Vault instantie, waarbij rekening wordt gehouden met organisatorische structuur, kostenallocatie en beheervereisten. Het is aanbevolen om resourcegroepen te organiseren op basis van omgeving (productie, test, development), applicatie of service, of organisatorische eenheid, afhankelijk van de specifieke behoeften van de organisatie.

De naamgeving van Key Vault instanties is een kritiek aspect van deployment, omdat Key Vault namen globaal uniek moeten zijn binnen Azure en niet kunnen worden gewijzigd na creatie. Organisaties moeten een consistente naming convention ontwikkelen die informatie bevat over de omgeving, het doel, de eigenaar of andere relevante metadata, terwijl rekening wordt gehouden met de beperkingen van Key Vault namen zoals lengte, toegestane karakters en uniekheid. Een goede naming convention maakt het eenvoudiger om Key Vault instanties te identificeren, te beheren en te monitoren, en kan bijdragen aan compliance en audit doeleinden. Naast de Key Vault naam moeten organisaties ook aandacht besteden aan tagging strategieën, waarbij tags worden gebruikt om metadata toe te voegen aan Key Vault instanties voor resource management, kostenallocatie en compliance doeleinden. Tags kunnen informatie bevatten zoals omgeving, eigenaar, kostencentrum, compliance classificatie en andere relevante metadata die helpen bij het beheren en monitoren van Key Vault resources.

Netwerkisolatie vormt een essentieel onderdeel van een veilige Key Vault deployment, waarbij organisaties moeten beslissen of zij gebruik willen maken van Azure Private Link voor private endpoints, Azure Key Vault firewallregels voor IP-whitelisting, of een combinatie van beide. Private endpoints bieden de hoogste mate van netwerkisolatie door Key Vault instanties alleen toegankelijk te maken via privénetwerken, wat essentieel is voor organisaties met strikte beveiligingsvereisten. Firewallregels bieden een meer flexibele aanpak waarbij specifieke IP-adressen of IP-bereiken kunnen worden geautoriseerd voor toegang tot Key Vault instanties, wat nuttig kan zijn voor scenario's waarbij applicaties draaien op virtuele machines of in andere cloudomgevingen. Organisaties moeten een netwerkisolatiestrategie ontwikkelen die rekening houdt met de specifieke behoeften van hun applicaties en services, terwijl tegelijkertijd wordt voldaan aan beveiligings- en compliance-vereisten. Het is belangrijk om te begrijpen dat netwerkisolatie alleen effectief is wanneer deze wordt gecombineerd met andere beveiligingsmaatregelen zoals toegangscontrole en logging, en dat organisaties een defense-in-depth strategie moeten implementeren die meerdere beveiligingslagen combineert.

Toegangscontrole is een ander kritiek aspect van Key Vault deployment, waarbij organisaties moeten beslissen of zij gebruik willen maken van rolgebaseerde toegangscontrole (RBAC) of access policies voor het beheren van toegang tot cryptografische materialen. RBAC biedt een modernere en meer flexibele aanpak die beter integreert met Azure Active Directory en andere Azure services, terwijl access policies een traditionelere aanpak bieden die meer gedetailleerde controle biedt over specifieke operaties. Organisaties moeten een toegangscontrole strategie ontwikkelen die rekening houdt met het principe van least privilege, waarbij gebruikers en services alleen de minimale toegang krijgen die nodig is voor hun specifieke taken. Dit omvat het definiëren van rollen en permissions voor verschillende typen gebruikers en services, het implementeren van regelmatige access reviews om te verifiëren dat toegang nog steeds nodig is, en het monitoren van toegangsactiviteiten om verdachte of ongebruikelijke patronen te detecteren. Het is aanbevolen om managed identities te gebruiken voor applicaties en services die toegang nodig hebben tot Key Vault, omdat dit de beveiliging verbetert door het elimineren van hardcoded credentials en het vereenvoudigen van toegangsbeheer.

Na het configureren van netwerkisolatie en toegangscontrole moeten organisaties ook aandacht besteden aan andere beveiligingsinstellingen zoals soft-delete en purge protection voor key recovery, diagnostische logging voor audit doeleinden, en monitoring en alerting voor het detecteren van beveiligingsincidenten. Soft-delete biedt bescherming tegen onopzettelijke verwijdering van cryptografische materialen door verwijderde objecten beschikbaar te houden voor herstel gedurende een configuratieperiode, terwijl purge protection een extra beveiligingslaag biedt door te voorkomen dat verwijderde objecten permanent worden gewist, zelfs door beheerders met de hoogste machtigingen. Diagnostische logging is essentieel voor compliance en audit doeleinden, waarbij alle toegangsactiviteiten worden vastgelegd in Azure Monitor logs of externe SIEM systemen. Monitoring en alerting helpen organisaties om beveiligingsincidenten snel te detecteren en te reageren, waarbij waarschuwingen worden gegenereerd voor verdachte activiteiten zoals ongebruikelijke toegangspatronen, mislukte authenticatiepogingen of wijzigingen in Key Vault configuraties.

Monitoring en Verificatie

Gebruik PowerShell-script key-vault-deployment.ps1 (functie Invoke-Monitoring) – Controleert de deployment configuratie van Azure Key Vault instanties.

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

De verificatieprocedure begint met het inventariseren van alle Azure Key Vault instanties binnen de organisatie, waarbij beheerders zowel standaard Key Vaults als Managed HSM exemplaren moeten identificeren. Voor elke Key Vault dient de deployment configuratie te worden gecontroleerd via Azure Portal, Azure CLI of PowerShell, waarbij expliciet moet worden geverifieerd of essentiële beveiligingsinstellingen correct zijn geconfigureerd, zoals netwerkisolatie via private endpoints of firewallregels, toegangscontrole via RBAC of access policies, soft-delete en purge protection voor key recovery, en diagnostische logging voor audit doeleinden. 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 of geautomatiseerde inventarisatiescripts om een compleet overzicht te verkrijgen van alle Key Vault instanties. Deze inventarisatie moet regelmatig worden herhaald, bij voorkeur wekelijks voor productieomgevingen, om ervoor te zorgen dat nieuwe Key Vault instanties die zijn gedeployeerd tussen verificatiecycli ook worden gecontroleerd.

Geautomatiseerde monitoring scripts gebruiken de Azure Resource Manager API of Azure Key Vault management APIs om programmatisch de deployment configuratiestatus te controleren voor alle Key Vault instanties 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 beveiligingsvereisten. 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 configuratiestatus van alle Key Vault instanties controleren en rapporten genereren die aangeven welke instanties niet voldoen aan de beveiligingsvereisten. Deze geautomatiseerde aanpak vermindert niet alleen de werklast voor beheerders, maar zorgt ook voor consistente en betrouwbare verificatieprocedures die niet afhankelijk zijn van handmatige interventie.

Naast het monitoren van de deployment configuratie zelf, moeten organisaties ook aandacht besteden aan de operationele status en beschikbaarheid van Key Vault instanties. Monitoring omvat tevens het bijhouden van toegangsactiviteiten, zodat beheerders inzicht hebben in wanneer en door wie cryptografische materialen worden gebruikt, welke operaties worden uitgevoerd en of er verdachte of ongebruikelijke patronen worden gedetecteerd. Het monitoren van toegangsactiviteiten is belangrijk omdat ongebruikelijke access patterns kunnen wijzen op beveiligingsproblemen zoals gecompromitteerde accounts, insider threats of onjuiste configuraties. Organisaties moeten regelmatig evalueren of Key Vault instanties correct functioneren en of er geen toegangsproblemen optreden die kunnen leiden tot uitval van applicaties en services die afhankelijk zijn van cryptografische materialen. Deze evaluatie moet worden uitgevoerd in overleg met de eigenaren van de Key Vault instanties en de toepassingen die gebruik maken van de opgeslagen cryptografische materialen.

Voor verschillende Key Vault varianten gelden enigszins afwijkende verificatieprocedures, omdat standaard Key Vaults en Managed HSM instanties verschillende management APIs gebruiken en verschillende configuratieopties bieden. Beheerders moeten specifieke PowerShell cmdlets of Azure CLI commando's gebruiken die zijn ontworpen voor elke Key Vault variant, waarbij de deployment configuratie wordt gecontroleerd via de dedicated management endpoints. Het is essentieel dat monitoring procedures beide Key Vault types adequaat afdekken om volledige dekking te waarborgen binnen de organisatie. Managed HSM instanties bieden aanvullende beveiligingsfuncties zoals FIPS 140-2 Level 3 certificering en volledige controle over de hardware security modules, maar vereisen ook specifieke kennis en tools voor effectief beheer. Organisaties die gebruik maken van Managed HSM instanties moeten ervoor zorgen dat hun monitoring scripts en procedures correct zijn geconfigureerd om deze specifieke Key Vault variant te ondersteunen, waarbij gebruik wordt gemaakt van de juiste management endpoints en authenticatiemethoden.

Het implementeren van effectieve monitoring voor Key Vault deployments 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 Key Vault instanties 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 Key Vault instanties worden gedeployeerd zonder de juiste beveiligingsconfiguraties, of wanneer bestaande Key Vaults worden gewijzigd op een manier die de beveiligingsinstellingen beïnvloedt. Deze proactieve alerting zorgt ervoor dat beveiligingsafwijkingen snel worden geïdentificeerd en gecorrigeerd, voordat ze kunnen leiden tot beveiligingsincidenten of compliance-problemen.

Compliance en Auditing

De implementatie van een veilige Azure Key Vault deployment 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 cryptografische materialen en het waarborgen van veilige key management procedures.

Binnen het CIS Microsoft Azure Foundations Benchmark framework worden veilige Key Vault deployment practices expliciet aanbevolen via meerdere controles, waarbij de nadruk ligt op het implementeren van netwerkisolatie, toegangscontrole, logging en monitoring. CIS Benchmarks benadrukken het belang van defense-in-depth strategieën en het voorkomen van onbevoegde toegang tot cryptografische materialen door het implementeren van meerdere beveiligingslagen. Deze controles behoren tot Level 1 vereisten voor services die gevoelige of geclassificeerde gegevens bevatten, wat betekent dat deze als basisbeveiligingsmaatregel worden 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 een veilige Key Vault deployment een directe bijdrage levert 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 recovery procedures. Een veilige Key Vault deployment voldoet aan deze vereisten door organisaties volledige controle te geven over de cryptografische sleutels die worden gebruikt voor versleuteling, terwijl tegelijkertijd wordt voldaan aan beveiligings- en compliance-vereisten.

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. Een veilige Key Vault deployment draagt 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 een goed geconfigureerde Key Vault deployment de technische basis vormt voor dergelijke procedures.

Voor audit doeleinden moeten organisaties documentatie bijhouden die aantoont dat alle Key Vault instanties correct zijn gedeployeerd met de juiste beveiligingsconfiguraties, 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 deployment procedures, inclusief Infrastructure as Code templates, deployment scripts en configuratiebestanden, om aan te tonen dat Key Vault instanties op een gecontroleerde en gedocumenteerde manier worden gedeployeerd.

Remediatie en Herstel

Gebruik PowerShell-script key-vault-deployment.ps1 (functie Invoke-Remediation) – Herstelt de deployment configuratie naar de gewenste staat.

Wanneer monitoring activiteiten aantonen dat een Azure Key Vault instantie niet correct is gedeployeerd of niet voldoet aan beveiligingsbest practices, dienen organisaties onmiddellijk remediatiestappen te ondernemen om deze beveiligingsafwijking te corrigeren. De remediatieprocedure varieert afhankelijk van het type configuratiefout en de huidige deployment status, waarbij beheerders rekening moeten houden met mogelijke impact op bestaande workloads en toegankelijkheid van cryptografische materialen tijdens het configuratieproces. Het is belangrijk om te begrijpen dat remediatie niet alleen bestaat uit het technisch corrigeren van configuratiefouten, 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 Key Vault. 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 Key Vault instanties die nog geen cryptografische materialen bevatten, is de remediatie relatief eenvoudig: beheerders kunnen de beveiligingsconfiguraties direct aanpassen via Azure Portal door naar de Key Vault eigenschappen te navigeren en de betreffende instellingen te wijzigen. Voor netwerkisolatie kunnen private endpoints worden toegevoegd of firewallregels worden geconfigureerd, voor toegangscontrole kunnen RBAC rollen worden toegewezen of access policies worden aangepast, en voor logging kunnen diagnostische instellingen worden geconfigureerd. 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 Key Vaults nog niet in productie gebruik zijn, of voor nieuwe Key Vaults die net zijn gedeployeerd maar nog geen cryptografische materialen bevatten. Het is aanbevolen om beveiligingsconfiguraties direct te implementeren bij het deployen van nieuwe Key Vault instanties, zodat deze beveiligingsmaatregelen vanaf het begin actief zijn en geen latere remediatie vereisen.

Bestaande Key Vault instanties die reeds in gebruik zijn met productie cryptografische materialen, vereisen een meer zorgvuldige aanpak voor remediatie. In deze gevallen moeten beheerders eerst verifiëren dat geen kritieke operaties afhankelijk zijn van de huidige configuratie, waarna beveiligingsinstellingen kunnen worden aangepast zonder onderbreking van services. Het is belangrijk om te begrijpen dat sommige configuratiewijzigingen, zoals het toevoegen van private endpoints of het wijzigen van firewallregels, impact kunnen hebben op de toegankelijkheid van Key Vault instanties voor applicaties en services. Deze impactanalyse moet alle applicaties en services identificeren die gebruik maken van de Key Vault, de kritiekheid van deze afhankelijkheden beoordelen, en een plan opstellen voor het testen van de gewijzigde configuratie voordat deze in productie wordt geactiveerd. Organisaties moeten ook rekening houden met mogelijke wijzigingen in het gedrag van applicaties na het aanpassen van beveiligingsconfiguraties, hoewel in de praktijk de meeste applicaties geen wijzigingen vereisen wanneer beveiligingsinstellingen worden verbeterd.

De remediatieprocedure begint met het identificeren van de specifieke configuratiefouten die moeten worden gecorrigeerd, waarbij gebruik wordt gemaakt van monitoring scripts of Azure Policy compliance evaluaties om een compleet overzicht te verkrijgen van alle afwijkingen. Vervolgens moeten beheerders prioriteit toekennen aan de verschillende remediatieacties op basis van de ernst van de beveiligingsrisico's en de impact op bestaande workloads. Kritieke beveiligingsafwijkingen, zoals het ontbreken van netwerkisolatie of onjuiste toegangscontrole, moeten onmiddellijk worden aangepakt, terwijl minder kritieke afwijkingen kunnen worden gepland voor reguliere onderhoudsvensters. Na het prioriteren van remediatieacties moeten beheerders gedetailleerde remediatieplannen opstellen die alle benodigde configuratiewijzigingen beschrijven, de verwachte impact op bestaande workloads, en de verificatieprocedures die zullen worden gebruikt om te bevestigen dat de remediatie succesvol is. Het is aanbevolen om deze remediatieplannen te documenteren en te reviewen met relevante stakeholders, inclusief applicatie-eigenaren, security teams en compliance officers, voordat de wijzigingen worden geïmplementeerd.

Na het opstellen van remediatieplannen kunnen beheerders de configuratiewijzigingen implementeren via Azure Portal, PowerShell of Azure CLI, afhankelijk van de voorkeur en expertise van de organisatie. Voor grootschalige omgevingen met meerdere Key Vault instanties is het aanbevolen om geautomatiseerde remediatie scripts te gebruiken die de configuratiewijzigingen consistent toepassen op alle relevante Key Vault instanties. Na succesvolle implementatie moeten organisaties verificatieprocedures uitvoeren om te bevestigen dat de beveiligingsconfiguraties correct zijn geïmplementeerd, bijvoorbeeld door te verifiëren dat netwerkisolatie correct werkt, dat toegangscontrole de verwachte beperkingen afdwingt, en dat logging alle relevante activiteiten vastlegt. Deze verificatieprocedure is essentieel om te waarborgen dat de remediatie daadwerkelijk werkt zoals verwacht, en om eventuele problemen te identificeren voordat kritieke cryptografische materialen worden beïnvloed.

Het implementeren van effectieve remediatieprocedures vereist ook aandacht voor change management en communicatie met stakeholders. Wanneer beveiligingsconfiguraties worden aangepast op bestaande Key Vault instanties 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 sommige configuratiewijzigingen mogelijk niet volledig reversibel zijn zonder de Key Vault te verwijderen en opnieuw te deployen. In plaats daarvan moet het rollback plan zich richten op het herstellen van eventuele problemen die ontstaan door de wijziging, zoals het aanpassen van netwerkconfiguraties of het oplossen van toegangsproblemen.

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 Azure Key Vault Veilige Deployment .DESCRIPTION CIS Azure Foundations Benchmark - Control 8.1 Controleert of Azure Key Vault instanties correct zijn gedeployeerd volgens beveiligingsbest practices. .NOTES Filename: key-vault-deployment.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.Resources [CmdletBinding()] param([Parameter()][switch]$Monitoring) $ErrorActionPreference = 'Stop' $PolicyName = "Azure Key Vault Veilige Deployment" function Connect-RequiredServices { if (-not (Get-AzContext)) { Connect-AzAccount | Out-Null } } function Test-KeyVaultDeployment { param([Parameter(Mandatory=$true)]$KeyVault) $result = @{ Name = $KeyVault.VaultName ResourceGroup = $KeyVault.ResourceGroupName SoftDelete = $false PurgeProtection = $false NetworkAcls = $false PrivateEndpoint = $false DiagnosticLogging = $false RBACEnabled = $false ComplianceScore = 0 TotalChecks = 7 } try { $vaultDetail = Get-AzKeyVault -VaultName $KeyVault.VaultName -ResourceGroupName $KeyVault.ResourceGroupName -ErrorAction SilentlyContinue if ($vaultDetail) { # Check Soft Delete if ($vaultDetail.EnableSoftDelete) { $result.SoftDelete = $true $result.ComplianceScore++ } # Check Purge Protection if ($vaultDetail.EnablePurgeProtection) { $result.PurgeProtection = $true $result.ComplianceScore++ } # Check Network ACLs (Firewall or Private Endpoint) if ($vaultDetail.NetworkAcls) { $result.NetworkAcls = $true $result.ComplianceScore++ } # Check Private Endpoint $privateEndpoints = Get-AzPrivateEndpoint -ResourceGroupName $KeyVault.ResourceGroupName -ErrorAction SilentlyContinue | Where-Object { $_.PrivateLinkServiceConnections.Id -like "*$($KeyVault.VaultName)*" } if ($privateEndpoints) { $result.PrivateEndpoint = $true $result.ComplianceScore++ } # Check Diagnostic Logging $diagnosticSettings = Get-AzDiagnosticSetting -ResourceId $vaultDetail.ResourceId -ErrorAction SilentlyContinue if ($diagnosticSettings -and $diagnosticSettings.Logs.Enabled) { $result.DiagnosticLogging = $true $result.ComplianceScore++ } # Check RBAC Enabled if ($vaultDetail.EnableRbacAuthorization) { $result.RBACEnabled = $true $result.ComplianceScore++ } # Additional check: Check if vault has tags $tags = $vaultDetail.Tags if ($tags -and $tags.Count -gt 0) { $result.ComplianceScore++ $result.TotalChecks++ } } } catch { Write-Warning "Error checking Key Vault $($KeyVault.VaultName): $_" } return $result } function Test-Compliance { $result = @{ TotalVaults = 0 CompliantVaults = 0 PartiallyCompliant = 0 NonCompliant = 0 VaultDetails = @() } try { $vaults = Get-AzKeyVault -ErrorAction SilentlyContinue $result.TotalVaults = $vaults.Count foreach ($vault in $vaults) { $vaultResult = Test-KeyVaultDeployment -KeyVault $vault $result.VaultDetails += $vaultResult $compliancePercentage = ($vaultResult.ComplianceScore / $vaultResult.TotalChecks) * 100 if ($compliancePercentage -eq 100) { $result.CompliantVaults++ } elseif ($compliancePercentage -ge 70) { $result.PartiallyCompliant++ } else { $result.NonCompliant++ } } 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 "Total Key Vaults: $($r.TotalVaults)" -ForegroundColor White Write-Host "Compliant: $($r.CompliantVaults)" -ForegroundColor Green Write-Host "Partially Compliant: $($r.PartiallyCompliant)" -ForegroundColor Yellow Write-Host "Non-Compliant: $($r.NonCompliant)" -ForegroundColor Red if ($r.VaultDetails.Count -gt 0) { Write-Host "`nDetailed Results:" -ForegroundColor Cyan foreach ($vault in $r.VaultDetails) { $compliancePercentage = [math]::Round(($vault.ComplianceScore / $vault.TotalChecks) * 100, 2) $statusColor = if ($compliancePercentage -eq 100) { 'Green' } elseif ($compliancePercentage -ge 70) { 'Yellow' } else { 'Red' } Write-Host "`n Vault: $($vault.Name)" -ForegroundColor White Write-Host " Compliance: $compliancePercentage%" -ForegroundColor $statusColor Write-Host " Soft Delete: $(if ($vault.SoftDelete) { 'Enabled' } else { 'Disabled' })" -ForegroundColor $(if ($vault.SoftDelete) { 'Green' } else { 'Red' }) Write-Host " Purge Protection: $(if ($vault.PurgeProtection) { 'Enabled' } else { 'Disabled' })" -ForegroundColor $(if ($vault.PurgeProtection) { 'Green' } else { 'Yellow' }) Write-Host " Network ACLs: $(if ($vault.NetworkAcls) { 'Configured' } else { 'Not Configured' })" -ForegroundColor $(if ($vault.NetworkAcls) { 'Green' } else { 'Red' }) Write-Host " Private Endpoint: $(if ($vault.PrivateEndpoint) { 'Configured' } else { 'Not Configured' })" -ForegroundColor $(if ($vault.PrivateEndpoint) { 'Green' } else { 'Yellow' }) Write-Host " Diagnostic Logging: $(if ($vault.DiagnosticLogging) { 'Enabled' } else { 'Disabled' })" -ForegroundColor $(if ($vault.DiagnosticLogging) { 'Green' } else { 'Red' }) Write-Host " RBAC Enabled: $(if ($vault.RBACEnabled) { 'Yes' } else { 'No' })" -ForegroundColor $(if ($vault.RBACEnabled) { 'Green' } else { 'Yellow' }) } } } else { $r = Test-Compliance Write-Host "`nKey Vault Deployment Status:" -ForegroundColor Cyan Write-Host "Total Vaults: $($r.TotalVaults)" Write-Host "Compliant: $($r.CompliantVaults)" Write-Host "Partially Compliant: $($r.PartiallyCompliant)" Write-Host "Non-Compliant: $($r.NonCompliant)" } } 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 "Total Key Vaults: $($r.TotalVaults)" -ForegroundColor White Write-Host "Compliant: $($r.CompliantVaults)" -ForegroundColor Green Write-Host "Partially Compliant: $($r.PartiallyCompliant)" -ForegroundColor Yellow Write-Host "Non-Compliant: $($r.NonCompliant)" -ForegroundColor Red if ($r.VaultDetails.Count -gt 0) { Write-Host "`nDetailed Results:" -ForegroundColor Cyan foreach ($vault in $r.VaultDetails) { $compliancePercentage = [math]::Round(($vault.ComplianceScore / $vault.TotalChecks) * 100, 2) $statusColor = if ($compliancePercentage -eq 100) { 'Green' } elseif ($compliancePercentage -ge 70) { 'Yellow' } else { 'Red' } Write-Host "`n Vault: $($vault.Name)" -ForegroundColor White Write-Host " Compliance: $compliancePercentage%" -ForegroundColor $statusColor Write-Host " Soft Delete: $(if ($vault.SoftDelete) { 'Enabled' } else { 'Disabled' })" -ForegroundColor $(if ($vault.SoftDelete) { 'Green' } else { 'Red' }) Write-Host " Purge Protection: $(if ($vault.PurgeProtection) { 'Enabled' } else { 'Disabled' })" -ForegroundColor $(if ($vault.PurgeProtection) { 'Green' } else { 'Yellow' }) Write-Host " Network ACLs: $(if ($vault.NetworkAcls) { 'Configured' } else { 'Not Configured' })" -ForegroundColor $(if ($vault.NetworkAcls) { 'Green' } else { 'Red' }) Write-Host " Private Endpoint: $(if ($vault.PrivateEndpoint) { 'Configured' } else { 'Not Configured' })" -ForegroundColor $(if ($vault.PrivateEndpoint) { 'Green' } else { 'Yellow' }) Write-Host " Diagnostic Logging: $(if ($vault.DiagnosticLogging) { 'Enabled' } else { 'Disabled' })" -ForegroundColor $(if ($vault.DiagnosticLogging) { 'Green' } else { 'Red' }) Write-Host " RBAC Enabled: $(if ($vault.RBACEnabled) { 'Yes' } else { 'No' })" -ForegroundColor $(if ($vault.RBACEnabled) { 'Green' } else { 'Yellow' }) } } } else { $r = Test-Compliance Write-Host "`nKey Vault Deployment Status:" -ForegroundColor Cyan Write-Host "Total Vaults: $($r.TotalVaults)" Write-Host "Compliant: $($r.CompliantVaults)" Write-Host "Partially Compliant: $($r.PartiallyCompliant)" Write-Host "Non-Compliant: $($r.NonCompliant)" } } catch { Write-Error $_; exit 1 } } function Invoke-Remediation { <# .SYNOPSIS Herstelt de configuratie naar de gewenste staat .DESCRIPTION Configureert Key Vault instanties met best practices voor veilige deployment. Let op: Deze functie vereist handmatige configuratie via Azure Portal of specifieke service cmdlets. #> [CmdletBinding()] param() Write-Host "[INFO] Key Vault deployment configuratie vereist handmatige stappen" -ForegroundColor Yellow Write-Host "[INFO] Gebruik Azure Portal of Infrastructure as Code templates" -ForegroundColor Yellow Write-Host "[INFO] Best practices:" -ForegroundColor Cyan Write-Host " - Enable Soft Delete: Update-AzKeyVault -EnableSoftDelete" -ForegroundColor Cyan Write-Host " - Enable Purge Protection: Update-AzKeyVault -EnablePurgeProtection" -ForegroundColor Cyan Write-Host " - Configure Network ACLs: Update-AzKeyVaultNetworkRuleSet" -ForegroundColor Cyan Write-Host " - Enable RBAC: Update-AzKeyVault -EnableRbacAuthorization" -ForegroundColor Cyan Write-Host " - Configure Diagnostic Logging: Set-AzDiagnosticSetting" -ForegroundColor Cyan Write-Host "[INFO] Running monitoring check..." -ForegroundColor Cyan Invoke-Monitoring }

Risico zonder implementatie

Risico zonder implementatie
High: Onveilige deployment kan leiden tot beveiligingslekken, onbevoegde toegang tot cryptografische materialen, datalekken en niet-naleving van compliance-vereisten. Compliance: CIS 8.1, BIO 10.01, ISO 27001 A.8.24. Het risico is hoog - beveiligings- en compliance-risico's.

Management Samenvatting

Azure Key Vault Veilige Deployment: Implementeer best practices voor het deployen van Key Vault instanties, inclusief netwerkisolatie, toegangscontrole, logging en monitoring. Configuratie: Portal of Infrastructure as Code. Verificatie: 2-4 uur. Verplicht voor cryptografische sleutelbeheer - CIS 8.1, BIO 10.01.