Azure Policy Assignments Configuratie Voor Consistente Governance

💼 Management Samenvatting

Azure Policy assignments vormen de praktische implementatie van organisatorische beveiligingsstandaarden en compliance-vereisten binnen Azure-omgevingen. Door policy assignments correct te configureren, kunnen Nederlandse overheidsorganisaties garanderen dat alle cloud-resources automatisch worden beschermd door consistente beveiligingsmaatregelen, ongeacht wie de resources aanmaakt of wanneer ze worden gecreëerd. Een goed geconfigureerde policy assignment-structuur voorkomt configuratiedrift, vermindert handmatige fouten en biedt aantoonbare compliance voor audits en certificeringen.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
100u (tech: 60u)
Van toepassing op:
Azure Subscriptions
Management Groups
Resource Groups

Zonder correct geconfigureerde policy assignments staan organisaties bloot aan aanzienlijke risico's op het gebied van beveiliging, compliance en governance. Het grootste probleem is configuratiedrift: wanneer resources handmatig worden geconfigureerd zonder automatische afdwinging van standaarden, ontstaan onvermijdelijk inconsistenties waarbij sommige resources correct zijn geconfigureerd terwijl andere resources beveiligingshiaten bevatten. Deze inconsistentie wordt verergerd naarmate teams groeien, nieuwe medewerkers worden toegevoegd, of wanneer resources worden aangemaakt onder tijdsdruk zonder volledige aandacht voor beveiligingsvereisten. Zonder geautomatiseerde policy enforcement is het praktisch onmogelijk om te garanderen dat alle honderden of duizenden resources in een Azure-omgeving voldoen aan dezelfde beveiligingsstandaarden. Compliance-risico's nemen exponentieel toe wanneer policy assignments niet correct zijn geconfigureerd. Nederlandse overheidsorganisaties moeten voldoen aan strikte compliance-frameworks zoals de BIO-normen, NIS2-richtlijn, ISO 27001 en AVG-vereisten. Deze frameworks vereisen expliciet dat organisaties kunnen aantonen dat beveiligingsmaatregelen consistent worden toegepast over alle cloud-resources. Zonder correct geconfigureerde policy assignments kunnen organisaties niet bewijzen dat resources voldoen aan vereisten zoals versleuteling, logging, netwerksegmentatie of toegangscontrole. Dit leidt tot het falen van audits, mogelijke boetes, reputatieschade en in het ergste geval tot het verlies van certificeringen of contracten met overheidsorganisaties. Beveiligingsincidenten zijn vaak het gevolg van resources die niet voldoen aan basale beveiligingsvereisten. Een virtuele machine zonder versleuteling kan bijvoorbeeld leiden tot datalekken wanneer de schijf wordt gestolen of gecompromitteerd. Een opslagaccount met publieke toegang kan gevoelige data blootstellen aan onbevoegden. Een subnet zonder netwerkbeveiligingsgroep is volledig open voor aanvallers. Policy assignments voorkomen deze scenario's door automatisch te eisen dat resources correct worden geconfigureerd voordat ze operationeel worden, of door bestaande resources automatisch te corrigeren wanneer ze niet voldoen aan vereisten. Zonder deze automatische handhaving zijn organisaties afhankelijk van menselijke alertheid en discipline, wat onbetrouwbaar is gebleken in praktijk. Operationale inefficiëntie ontstaat wanneer security teams handmatig moeten controleren of resources voldoen aan beveiligingsvereisten. In grote organisaties met honderden abonnementen en duizenden resources is dit een onmogelijke taak zonder automatisering. Policy assignments elimineren de noodzaak voor handmatige controles door automatisch te verifiëren dat resources compliant zijn en door waarschuwingen te genereren wanneer problemen worden gedetecteerd. Dit stelt security teams in staat zich te focussen op strategische beveiligingsinitiatieven in plaats van reactieve compliance-controles. Bovendien besparen correct geconfigureerde policy assignments aanzienlijke tijd en kosten door automatische remediatie van veelvoorkomende configuratiefouten. Governance-problemen ontstaan wanneer verschillende teams verschillende standaarden hanteren voor het configureren van resources. Zonder gecentraliseerde policy assignments kan elk team zijn eigen interpretatie hebben van wat 'veilig' betekent, wat leidt tot fragmentatie en inconsistentie. Policy assignments zorgen voor een centrale, geautoriseerde bron van waarheid voor beveiligingsvereisten, die automatisch wordt afgedwongen over alle teams en afdelingen. Dit vereenvoudigt governance aanzienlijk en zorgt ervoor dat bestuurders en CISO's kunnen vertrouwen op consistente beveiligingsstandaarden door de gehele organisatie.

PowerShell Modules Vereist
Primary API: Azure Policy API, Azure Resource Manager API
Connection: Connect-AzAccount
Required Modules: Az.Resources, Az.PolicyInsights, Az.ManagementGroups

Implementatie

Dit artikel beschrijft in detail hoe Azure Policy assignments moeten worden geconfigureerd voor optimale governance en compliance binnen Nederlandse overheidsorganisaties. We behandelen de architectuur van policy assignments, inclusief hiërarchische toewijzingen via Management Groups, scope-definitie, effecten (Deny, Audit, DeployIfNotExists), en parameters. Daarnaast leggen we uit hoe policy assignments moeten worden gegroepeerd in policy sets of initiatives voor beheersbaarheid, hoe uitzonderingen moeten worden beheerd, en hoe compliance moet worden gemonitord en gerapporteerd. Het artikel behandelt ook best practices voor het configureren van automatische remediatie, het omgaan met bestaande niet-compliant resources, en het implementeren van een gestructureerd proces voor het beheren van policy assignment-wijzigingen. Het bijbehorende PowerShell-script helpt bij het inventariseren van alle policy assignments in de tenant, het identificeren van configuratie-afwijkingen, en het valideren dat assignments correct zijn geconfigureerd volgens de Nederlandse Baseline voor Veilige Cloud.

Vereisten voor Policy Assignments Configuratie

Voordat policy assignments kunnen worden geconfigureerd, moeten organisaties verschillende essentiële vereisten vervullen om een succesvolle implementatie te garanderen. De eerste kritieke vereiste is een duidelijk gedefinieerde policy-strategie die expliciet beschrijft welke beveiligings- en compliance-vereisten moeten worden afgedwongen via policy assignments. Deze strategie moet worden ontwikkeld in samenwerking met security officers, compliance managers, IT-beheerders en business owners, en moet worden vastgelegd in een formeel document dat regelmatig wordt herzien. De strategie moet specifiek definiëren welke policies verplicht zijn voor alle workloads, welke policies optioneel zijn maar aanbevolen, en welke policies alleen van toepassing zijn op specifieke omgevingen zoals productie, acceptatie of ontwikkeling. Zonder een gedocumenteerde strategie bestaat het risico dat policy assignments willekeurig worden geconfigureerd, wat kan leiden tot conflicten, overbodige complexiteit of gemiste beveiligingsvereisten. Een Management Group-hiërarchie is sterk aanbevolen voor organisaties met meerdere abonnementen, omdat dit de basis vormt voor hiërarchische policy assignment-toewijzingen. De hiërarchie moet worden ontworpen om de organisatiestructuur te weerspiegelen, met groepen voor verschillende afdelingen, omgevingen of projecten. Policies die organisatiebreed moeten gelden, zoals beveiligingsstandaarden of compliance-vereisten, worden toegewezen op het hoogste niveau van de hiërarchie en worden automatisch overgenomen door alle onderliggende abonnementen. Dit vereenvoudigt het beheer aanzienlijk en zorgt voor consistentie door de gehele organisatie. Voor kleinere organisaties met slechts enkele abonnementen kan directe toewijzing op abonnementsniveau voldoende zijn, maar zelfs dan biedt een Management Group-structuur voordelen voor toekomstige groei en schaalbaarheid. Vanuit technisch perspectief is de juiste roltoewijzing een absolute vereiste. De Policy Contributor-rol moet worden toegekend aan de personen of service principals die verantwoordelijk zijn voor het configureren en beheren van policy assignments. Deze rol biedt de benodigde rechten om assignments te maken, te wijzigen en te verwijderen zonder volledige controle over de gehele Azure-omgeving. Het is belangrijk om het principe van minimale privileges toe te passen: alleen personen die daadwerkelijk policy assignments moeten beheren, moeten deze rol ontvangen. Voor grotere organisaties kan het nuttig zijn om verschillende rollen toe te kennen aan verschillende teams, waarbij elk team verantwoordelijk is voor assignments binnen hun domein. Dit helpt om verantwoordelijkheden duidelijk te definiëren en voorkomt dat één persoon of team overweldigd raakt door de hoeveelheid werk. Toegang tot Azure Management APIs is essentieel voor het configureren van policy assignments via automatisering. De personen of service principals die assignments configureren, moeten de juiste rechten hebben op alle relevante Azure-abonnementen en Management Groups. Voor grote organisaties met honderden abonnementen kan dit betekenen dat toegang moet worden verkregen via centrale beheersystemen of dat service principals moeten worden geconfigureerd met tenant-brede rechten. Bovendien moeten de juiste PowerShell-modules zijn geïnstalleerd en bijgewerkt naar de nieuwste versies. De modules Az.Resources, Az.PolicyInsights en Az.ManagementGroups bieden de functionaliteit om assignments te maken, te wijzigen, te monitoren en compliance-status te controleren. Zonder deze tools kan het configureren van assignments niet volledig worden geautomatiseerd, wat leidt tot handmatige fouten en inconsistenties. Een goed doordachte remediatiestrategie is essentieel voor het omgaan met bestaande resources die niet voldoen aan de nieuwe policy assignment-vereisten. Organisaties moeten beslissen of ze automatische remediatie willen inschakelen, wat betekent dat Azure Policy automatisch wijzigingen aanbrengt aan niet-compliant resources, of dat ze een handmatig proces prefereren waarbij teams worden geïnformeerd over niet-naleving en zelf actie ondernemen. Automatische remediatie is efficiënter maar vereist zorgvuldige testing om te voorkomen dat productiesystemen worden verstoord. De remediatiestrategie moet ook rekening houden met de verschillende soorten resources en hun kritiekheid. Voor kritieke productiesystemen kan handmatige remediatie de voorkeur hebben om volledige controle te behouden, terwijl voor minder kritieke resources automatische remediatie acceptabel kan zijn. Bovendien moeten organisaties een tijdlijn vaststellen voor het remediëren van bestaande resources, bijvoorbeeld door een gefaseerde aanpak waarbij eerst de meest kritieke resources worden aangepakt. Ten slotte moet een uitzonderingsproces worden gedefinieerd voor speciale gevallen waarin resources legitiem niet kunnen voldoen aan bepaalde policy assignments. Dit proces moet duidelijk beschrijven wanneer uitzonderingen zijn toegestaan, wie deze kan goedkeuren, en hoe uitzonderingen worden gedocumenteerd en gemonitord. Zonder een gestructureerd uitzonderingsproces bestaat het risico dat teams assignments omzeilen of dat uitzonderingen niet worden gedocumenteerd, wat de governance-doelstellingen ondermijnt. Het uitzonderingsproces moet een formele goedkeuringsworkflow bevatten waarbij uitzonderingen worden beoordeeld door security en compliance teams voordat ze worden goedgekeurd. Uitzonderingen moeten ook regelmatig worden herbeoordeeld, bijvoorbeeld elk kwartaal, om te bepalen of ze nog steeds gerechtvaardigd zijn.

Configuratie en Implementatie van Policy Assignments

Gebruik PowerShell-script policy-assignments-configured.ps1 (functie Invoke-Monitoring) – Inventariseert alle policy assignments in de tenant en valideert dat ze correct zijn geconfigureerd.

De configuratie van policy assignments begint met het bepalen van het juiste scope-niveau voor elke assignment. Voor organisaties met een Management Group-hiërarchie is het sterk aanbevolen om assignments toe te wijzen op het hoogste relevante niveau, zodat ze automatisch worden overgenomen door alle onderliggende abonnementen. Dit zorgt voor consistentie en vermindert de administratieve overhead aanzienlijk. Bijvoorbeeld, een policy assignment voor het vereisen van versleuteling op alle virtuele machines zou moeten worden toegewezen op het niveau van de root Management Group of een Management Group die alle productie-abonnementen bevat, in plaats van individueel op elk abonnement. Dit zorgt ervoor dat alle nieuwe abonnementen automatisch worden beschermd zonder aanvullende configuratie. Voor organisaties zonder Management Groups kunnen assignments direct worden toegewezen aan individuele abonnementen, hoewel dit minder schaalbaar is en meer onderhoud vereist wanneer nieuwe abonnementen worden toegevoegd. Het selecteren van het juiste effect voor elke policy assignment is cruciaal voor het bereiken van de gewenste governance-uitkomst. Het Deny-effect voorkomt dat resources worden aangemaakt die niet voldoen aan de policy-vereisten, wat ideaal is voor kritieke beveiligingsvereisten waar geen uitzonderingen zijn toegestaan. Het Audit-effect waarschuwt alleen wanneer resources niet voldoen aan vereisten maar voorkomt niet dat ze worden aangemaakt, wat nuttig is voor het monitoren van naleving zonder operationele impact. Het DeployIfNotExists-effect maakt automatische remediatie mogelijk door ontbrekende configuraties toe te voegen aan bestaande resources, wat ideaal is voor het corrigeren van bestaande resources zonder handmatige interventie. Het Modify-effect past automatisch tags of andere eigenschappen aan zonder de resource te herstellen, wat nuttig is voor governance-doeleinden zoals kostenbeheer. Organisaties moeten zorgvuldig overwegen welk effect het meest geschikt is voor elke policy, waarbij rekening wordt gehouden met de kritiek van de vereiste, de operationele impact, en de mogelijkheid voor uitzonderingen. Parameters vormen een krachtig mechanisme voor het aanpassen van policy assignments aan specifieke organisatievereisten zonder dat meerdere policy-definities nodig zijn. Bijvoorbeeld, een policy voor toegestane locaties kan worden geconfigureerd met een parameterlijst van Azure-regio's die zijn toegestaan voor de organisatie. Dit maakt het mogelijk om dezelfde policy-definitie te gebruiken voor verschillende omgevingen of afdelingen met verschillende locatievereisten, simpelweg door verschillende parameterwaarden te gebruiken. Parameters moeten worden gedocumenteerd met duidelijke beschrijvingen van wat elke parameter doet en welke waarden zijn toegestaan. Voor Nederlandse overheidsorganisaties is het gebruikelijk om parameters te configureren voor toegestane locaties die beperkt zijn tot EU-regio's zoals West-Europa (Nederland) voor data residency-vereisten, of voor specifieke tagwaarden die consistent moeten worden toegepast over alle resources voor kostenbeheer en eigenaarschap. Policy sets, ook wel initiatives genoemd, groeperen meerdere gerelateerde policy assignments samen om complexe beveiligings- of compliance-vereisten te adresseren. In plaats van individueel honderden policies toe te wijzen, kunnen organisaties een enkele initiative toewijzen die alle benodigde policies bevat. De Azure Security Benchmark is bijvoorbeeld een initiative die meer dan honderd policies bevat die zijn gebaseerd op best practices en compliance-vereisten. Organisaties moeten hun eigen initiatives ontwikkelen die zijn afgestemd op hun specifieke beveiligings- en compliance-vereisten, waarbij policies worden gegroepeerd die samen werken om specifieke doelen te bereiken. Bijvoorbeeld, een initiative voor 'Data Protection' kan policies bevatten voor versleuteling, back-ups, en data residency. Een initiative voor 'Network Security' kan policies bevatten voor Network Security Groups, firewalls, en private endpoints. Deze groepering maakt het beheer veel eenvoudiger en zorgt ervoor dat gerelateerde vereisten consistent worden toegepast. Automatische remediatie via DeployIfNotExists of Modify effects vereist de configuratie van managed identities en remediatie-taken. Voor elke policy assignment die automatische remediatie ondersteunt, moet een managed identity worden geconfigureerd met de juiste rechten om wijzigingen aan te brengen aan resources. Deze managed identity moet minimaal de Contributor-rol hebben op het scope-niveau waar de assignment is toegewezen, zodat het wijzigingen kan aanbrengen wanneer niet-naleving wordt gedetecteerd. Remediatie-taken worden automatisch aangemaakt wanneer een DeployIfNotExists of Modify assignment wordt geconfigureerd, maar moeten worden geactiveerd voordat automatische remediatie begint. Organisaties moeten een proces definiëren voor het testen van remediatie-taken in een testomgeving voordat ze worden geactiveerd in productie, om te voorkomen dat onbedoelde wijzigingen worden aangebracht aan kritieke resources. Uitzonderingen op policy assignments moeten worden beheerd via een gestructureerd proces dat expliciete goedkeuring vereist en documentatie. In Azure Policy kunnen uitzonderingen worden geconfigureerd op verschillende manieren: door het gebruik van policy exemptions voor specifieke resources of resourcegroepen, door het configureren van assignment parameters die bepaalde resources uitsluiten, of door het gebruik van scoped assignments die alleen van toepassing zijn op specifieke subsets van resources. Welke methode ook wordt gebruikt, uitzonderingen moeten worden gedocumenteerd met een duidelijke reden voor de uitzondering, een goedkeuringsdatum en verantwoordelijke persoon, en een einddatum waarop de uitzondering moet worden herbeoordeeld. Uitzonderingen moeten regelmatig worden geaudit, bijvoorbeeld elk kwartaal, om te bepalen of ze nog steeds gerechtvaardigd zijn en of de onderliggende reden voor de uitzondering is opgelost.

Monitoring en Validatie van Policy Assignments

Gebruik PowerShell-script policy-assignments-configured.ps1 (functie Invoke-Monitoring) – Monitort de configuratie en compliance-status van alle policy assignments in de tenant.

Effectieve monitoring van policy assignments is essentieel om te garanderen dat assignments correct zijn geconfigureerd en dat ze daadwerkelijk werken zoals bedoeld. Het Azure Policy compliance-dashboard vormt het centrale punt voor deze monitoring en biedt een overzichtelijke weergave van alle toegewezen assignments, de nalevingsstatus per assignment, en het aantal compliant versus niet-compliant resources. Organisaties moeten dit dashboard regelmatig controleren, bij voorkeur dagelijks of wekelijks, afhankelijk van de omvang van de omgeving en de snelheid waarmee nieuwe resources worden aangemaakt. Het dashboard wordt automatisch bijgewerkt wanneer nieuwe resources worden geëvalueerd tegen de toegewezen policies, waardoor organisaties real-time inzicht hebben in hun compliance-status. Voor grote organisaties met honderden assignments kan het nuttig zijn om geautomatiseerde rapporten te configureren die dagelijks worden gegenereerd en naar relevante teams worden verzonden, zodat problemen snel worden geïdentificeerd en aangepakt. Validatie van assignment-configuratie is een continue activiteit die regelmatige aandacht vereist om te garanderen dat assignments correct zijn geconfigureerd en dat ze niet zijn gewijzigd zonder autorisatie. Het bij dit artikel horende PowerShell-script helpt bij deze validatie door alle assignments in de tenant te inventariseren en te controleren op configuratie-afwijkingen. Het script controleert onder andere of assignments zijn toegewezen op de juiste scope-niveaus, of parameters correct zijn geconfigureerd, of remediatie-taken correct zijn ingesteld voor assignments die automatische remediatie ondersteunen, en of assignments zijn geconfigureerd met de juiste effecten. Door deze validatie regelmatig uit te voeren, kunnen organisaties snel identificeren waar assignments ontbreken, incorrect zijn geconfigureerd, of zijn gewijzigd zonder autorisatie. Dit is vooral belangrijk voor organisaties die moeten voldoen aan compliance-vereisten, omdat auditors verwachten dat organisaties kunnen aantonen dat assignments correct zijn geconfigureerd en beheerd. Het configureren van waarschuwingen op assignment-overtredingen zorgt ervoor dat teams proactief worden geïnformeerd wanneer nieuwe niet-naleving wordt gedetecteerd of wanneer configuratie-afwijkingen optreden. Deze waarschuwingen kunnen worden geconfigureerd om te triggeren wanneer het aantal niet-compliant resources een bepaalde drempel overschrijdt, wanneer specifieke kritieke assignments worden overtreden, of wanneer assignments worden gewijzigd of verwijderd. Waarschuwingen kunnen worden doorgestuurd naar verschillende kanalen, zoals e-mail, Microsoft Teams, of geïntegreerd worden in bestaande monitoring- en incident response-systemen. Voor kritieke assignments, zoals die gerelateerd aan versleuteling of toegangscontrole, moeten waarschuwingen onmiddellijk worden geconfigureerd om ervoor te zorgen dat teams direct worden geïnformeerd wanneer problemen worden gedetecteerd. Het is ook belangrijk om waarschuwingsmoeheid te voorkomen door waarschuwingen te configureren op een manier die alleen relevante en actievereiste meldingen genereert. Maandelijkse compliance-rapporten bieden management en audit-teams een gestructureerd overzicht van de nalevingsstatus van assignments. Deze rapporten moeten niet alleen de huidige status weergeven, maar ook trends over tijd, waardoor organisaties kunnen zien of de naleving verbetert of verslechtert. Rapporten moeten gedetailleerde informatie bevatten over het aantal compliant en niet-compliant resources per assignment, trends over de afgelopen maanden, en een overzicht van remediatie-activiteiten die zijn uitgevoerd. Deze informatie is essentieel voor auditors om te begrijpen hoe organisaties omgaan met compliance en of er verbetering wordt geboekt. Rapporten kunnen worden geëxporteerd in verschillende formaten voor distributie aan stakeholders en voor archivering voor audit-doeleinden. Voor organisaties die moeten voldoen aan compliance-vereisten zoals ISO 27001 of de BIO-normen, zijn deze rapporten vaak een vereiste voor certificering. Het bijhouden van remediatie-activiteiten is belangrijk om te garanderen dat geïdentificeerde compliance-problemen daadwerkelijk worden opgelost. Dit omvat het documenteren van welke resources moeten worden gerepareerd, wie verantwoordelijk is voor de remediatie, wanneer de taak is voltooid, en of de remediatie succesvol was. Voor automatische remediatie-taken kan dit grotendeels worden geautomatiseerd, maar voor handmatige remediatie is een gestructureerd proces nodig om te voorkomen dat taken verloren gaan of worden vergeten. Organisaties kunnen gebruik maken van ticketing-systemen of projectmanagement-tools om remediatie-taken bij te houden en te volgen. Het is belangrijk om regelmatig te controleren of remediatie-taken daadwerkelijk worden voltooid en of de remediatie succesvol was door de compliance-status opnieuw te evalueren na voltooiing van de taak. Naast het monitoren van compliance moeten organisaties ook monitoren of assignments zelf correct functioneren. Dit omvat het controleren of assignment-configuraties correct zijn, of parameters correct zijn ingesteld, of remediatie-taken correct zijn geactiveerd, en of assignments niet zijn gewijzigd zonder autorisatie. Problemen met assignments zelf kunnen leiden tot blinde vlekken waarbij sommige resources niet worden beschermd door policies, wat kan resulteren in onopgemerkte beveiligingshiaten. Monitoring van assignments moet worden geïntegreerd in bestaande monitoring-systemen zodat problemen snel worden gedetecteerd en opgelost. Het PowerShell-script bij dit artikel ondersteunt deze monitoring door regelmatig de configuratie van alle assignments te valideren en waarschuwingen te genereren wanneer afwijkingen worden gedetecteerd.

Compliance en Audit-evidentie voor Policy Assignments

Correct geconfigureerde policy assignments vormen een essentieel onderdeel van audit-evidentie voor verschillende compliance-frameworks die van toepassing zijn op Nederlandse overheidsorganisaties. De BIO-normen vereisen in Thema 05.01 dat organisaties kunnen aantonen dat beveiligingsbeleid daadwerkelijk wordt toegepast via technische maatregelen. Policy assignments bieden het concrete bewijs dat nodig is om aan deze vereiste te voldoen, omdat ze documenteren welke beveiligingsvereisten worden afgedwongen, op welke resources ze van toepassing zijn, en hoe compliance wordt gemonitord. Auditors verwachten dat organisaties kunnen aantonen dat assignments correct zijn geconfigureerd, dat ze regelmatig worden geëvalueerd, en dat niet-naleving wordt geïdentificeerd en opgelost. Documentatie van assignment-configuraties, compliance-rapporten, en remediatie-activiteiten vormt daarom een essentieel onderdeel van audit-evidentie. ISO 27001 vereist in controle A.5.1.1 dat organisaties informatiebeveiligingsbeleid hebben dat is goedgekeurd door het management en dat wordt gecommuniceerd aan alle relevante personen. Policy assignments vertegenwoordigen de technische implementatie van dit beleid, waarbij organisatorische beveiligingsvereisten worden vertaald naar automatisch afgedwongen technische controles. Auditors verwachten dat organisaties kunnen aantonen dat assignments consistent zijn met het vastgestelde beveiligingsbeleid, dat ze regelmatig worden herzien wanneer het beleid wordt bijgewerkt, en dat compliance met assignments wordt gemonitord en gerapporteerd. Compliance-rapporten die worden gegenereerd op basis van assignment-evaluaties kunnen worden gebruikt als bewijs voor auditors dat beveiligingsvereisten worden gecontroleerd en gehandhaafd. De NIS2-richtlijn vereist in Artikel 10 dat organisaties beleidsmechanismen implementeren voor het beheren van cybersecurity-risico's. Policy assignments vormen een directe implementatie van deze vereiste, omdat ze beschrijven hoe beveiligingsbeleid wordt geïmplementeerd en gehandhaafd in cloud-omgevingen. Voor Nederlandse organisaties die onder NIS2 vallen, is het hebben van correct geconfigureerde policy assignments niet alleen een best practice maar een compliance-vereiste. De NIS2-richtlijn vereist expliciet dat organisaties kunnen aantonen dat zij processen hebben voor het beheren van beveiligingsbeleid, en assignment-documentatie en compliance-rapporten bieden het mechanisme om dit te bewijzen. Zonder correct geconfigureerde assignments kunnen organisaties niet voldoen aan NIS2-vereisten, wat kan leiden tot boetes en andere sancties. De AVG vereist in Artikel 32 dat organisaties passende technische en organisatorische maatregelen implementeren om persoonsgegevens te beschermen. Policy assignments die versleuteling, toegangscontrole, logging en andere beveiligingsmaatregelen afdwingen, vormen een essentieel onderdeel van deze technische maatregelen. Auditors verwachten dat organisaties kunnen aantonen dat deze maatregelen daadwerkelijk worden toegepast op alle resources die persoonsgegevens verwerken, en assignment-compliance-rapporten bieden het bewijs dat nodig is. Bovendien vereist de AVG dat organisaties kunnen aantonen dat maatregelen effectief zijn, en compliance-monitoring via assignments biedt de data die nodig is om effectiviteit te bewijzen. Voor audit-doeleinden is het belangrijk om uitgebreide documentatie bij te houden van alle assignment-configuraties, inclusief welke assignments zijn toegewezen, op welke scope-niveaus, met welke parameters, en met welke effecten. Deze documentatie moet regelmatig worden bijgewerkt wanneer assignments worden gewijzigd, en historische versies moeten worden bewaard voor audit-trail doeleinden. Compliance-rapporten moeten minimaal maandelijks worden gegenereerd en bewaard voor minimaal zeven jaar, zoals vereist door veel compliance-frameworks. Remediatie-activiteiten moeten worden gedocumenteerd met details over welke resources zijn gecorrigeerd, wanneer de remediatie is voltooid, en wie verantwoordelijk was. Uitzonderingen moeten worden gedocumenteerd met duidelijke redenen, goedkeuringsdatum en verantwoordelijke persoon. Al deze documentatie vormt de audit-evidentie die nodig is om te bewijzen dat policy assignments correct zijn geconfigureerd en beheerd.

Remediatie van Configuratieproblemen

Gebruik PowerShell-script policy-assignments-configured.ps1 (functie Invoke-Remediation) – Ondersteunt het identificeren en oplossen van configuratieproblemen met policy assignments.

Wanneer monitoring aangeeft dat policy assignments ontbreken, incorrect zijn geconfigureerd, of niet functioneren zoals bedoeld, moet een gestructureerd remediatieproces worden gevolgd om ervoor te zorgen dat assignments snel en correct worden hersteld. Het remediatieproces begint met het prioriteren van problemen op basis van risico en bedrijfskritiek, waarbij ontbrekende assignments voor kritieke beveiligingsvereisten zoals versleuteling of toegangscontrole de hoogste prioriteit krijgen. Voor ontbrekende assignments moet eerst worden vastgesteld welke assignments moeten worden geconfigureerd op basis van de policy-strategie van de organisatie. Vervolgens moeten assignments worden gemaakt met de juiste scope, parameters en effecten, en moeten ze worden getest in een testomgeving voordat ze worden geïmplementeerd in productie. Voor assignments die incorrect zijn geconfigureerd, zoals assignments met verkeerde parameters of scope-definities, moet remediatie worden uitgevoerd om de configuraties te corrigeren. Dit kan betekenen dat assignment-parameters moeten worden bijgewerkt, dat scope-niveaus moeten worden aangepast, of dat effecten moeten worden gewijzigd. Voordat wijzigingen worden doorgevoerd, moeten ze worden gereviewed en goedgekeurd volgens de processen die zijn gedefinieerd in de policy-strategie, om te garanderen dat wijzigingen consistent zijn met organisatorische standaarden. Wijzigingen moeten worden getest in een testomgeving voordat ze worden geïmplementeerd in productie, om te voorkomen dat onbedoelde effecten optreden. Bovendien moeten wijzigingen worden gedocumenteerd met duidelijke redenen en goedkeuringsdatum, voor audit-doeleinden. Wanneer assignments niet functioneren zoals bedoeld, bijvoorbeeld omdat remediatie-taken niet zijn geactiveerd of omdat compliance-evaluaties niet correct worden uitgevoerd, moet worden onderzocht wat de onderliggende oorzaak is. Dit kan betekenen dat managed identities niet correct zijn geconfigureerd, dat roltoewijzingen ontbreken, of dat er technische problemen zijn met de Azure Policy-service zelf. Eenmaal geïdentificeerd, moeten deze problemen worden opgelost volgens standaard troubleshooting-procedures, en moet verificatie worden uitgevoerd om te bevestigen dat assignments daadwerkelijk functioneren zoals bedoeld. In sommige gevallen kan het nodig zijn om assignments opnieuw te configureren of te verwijderen en opnieuw aan te maken om problemen op te lossen. Na het uitvoeren van remediatie moet verificatie opnieuw worden uitgevoerd om te bevestigen dat problemen daadwerkelijk zijn opgelost. Deze verificatie moet worden uitgevoerd binnen 24 uur na remediatie om te garanderen dat het probleem is opgelost en dat assignments correct functioneren. Het PowerShell-script bij dit artikel kan worden gebruikt voor deze verificatie door opnieuw alle assignments te inventariseren en te valideren. Als verificatie nog steeds problemen detecteert, moet het remediatieproces opnieuw worden uitgevoerd en moeten eventuele onderliggende oorzaken worden geïdentificeerd en opgelost. Het is belangrijk om alle remediatie-activiteiten te documenteren voor audit-doeleinden, inclusief welke problemen zijn geïdentificeerd, welke acties zijn ondernomen, en wanneer de remediatie is voltooid.

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 Policy Assignments Configuratie - Monitoring en Validatie .DESCRIPTION Inventariseert alle Azure Policy assignments in de tenant en valideert dat ze correct zijn geconfigureerd volgens de Nederlandse Baseline voor Veilige Cloud. Het script controleert configuratie-kenmerken zoals scope-niveaus, parameters, effecten, en remediatie-instellingen. .NOTES Filename: policy-assignments-configured.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-01-20 Last Modified: 2025-01-20 Version: 1.0 Related JSON: content/azure/policy/policy-assignments-configured.json .EXAMPLE .\policy-assignments-configured.ps1 -Monitoring -LocalDebug Toont een voorbeeldoverzicht zonder verbinding te maken met Azure (voor lokale tests). .EXAMPLE .\policy-assignments-configured.ps1 -Monitoring Voert een volledige inventarisatie en validatie uit van alle policy assignments. #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.Resources, Az.PolicyInsights [CmdletBinding()] param( [Parameter(HelpMessage = "Voer een volledige monitoring en validatie uit van policy assignments.")] [switch]$Monitoring, [Parameter(HelpMessage = "Ondersteun het identificeren en oplossen van configuratieproblemen.")] [switch]$Remediation, [Parameter(HelpMessage = "Voer geen live Azure-calls uit maar gebruik voorbeelddata (voor lokale debug).")] [switch]$LocalDebug, [Parameter(HelpMessage = "Toon welke acties zouden worden uitgevoerd zonder daadwerkelijk te wijzigen.")] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' function Get-PolicyAssignmentsInventory { <# .SYNOPSIS Haalt een overzicht op van alle policy assignments en hun configuratiekenmerken. .OUTPUTS PSCustomObject met assignment-informatie. #> [CmdletBinding()] param( [switch]$UseDebugData ) if ($UseDebugData) { Write-Verbose "Gebruik van lokale debugdata; er wordt geen verbinding met Azure gemaakt." $sample = @( [pscustomobject]@{ Name = "require-encryption-vms" DisplayName = "Vereisen van versleuteling op virtuele machines" Scope = "/providers/Microsoft.Management/managementGroups/tenant-root-group" ScopeType = "ManagementGroup" PolicyDefinition = "Ensure that 'Encryption at host' is enabled for virtual machines" Effect = "Deny" Parameters = @{} HasRemediation = $false ComplianceState = "Compliant" }, [pscustomobject]@{ Name = "allowed-locations-eu" DisplayName = "Toegestane locaties - EU-regio's" Scope = "/subscriptions/12345678-1234-1234-1234-123456789012" ScopeType = "Subscription" PolicyDefinition = "Allowed locations" Effect = "Deny" Parameters = @{ "listOfAllowedLocations" = @("westeurope", "northeurope") } HasRemediation = $false ComplianceState = "Compliant" }, [pscustomobject]@{ Name = "deploy-diagnostics-log-analytics" DisplayName = "Diagnostische logboeken naar Log Analytics" Scope = "/providers/Microsoft.Management/managementGroups/production" ScopeType = "ManagementGroup" PolicyDefinition = "Deploy diagnostic settings for resources to Log Analytics workspace" Effect = "DeployIfNotExists" Parameters = @{ "logAnalytics" = "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/rg-logging/providers/Microsoft.OperationalInsights/workspaces/la-workspace" } HasRemediation = $true ComplianceState = "NonCompliant" } ) return [pscustomobject]@{ Assignments = $sample TotalAssignments = $sample.Count } } if (-not (Get-AzContext -ErrorAction SilentlyContinue)) { Write-Verbose "Geen actieve Az-context gevonden; probeer Connect-AzAccount uit te voeren." Connect-AzAccount -ErrorAction Stop | Out-Null } $allAssignments = @() # Haal assignments op van Management Groups (via REST API als module niet beschikbaar is) try { $context = Get-AzContext if ($context) { $token = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate( $context.Account, $context.Environment, $context.Tenant.Id, $null, "Never", $null, "https://management.azure.com/").AccessToken $headers = @{ 'Authorization' = "Bearer $token" 'Content-Type' = 'application/json' } # Haal Management Groups op via REST API $mgUri = "https://management.azure.com/providers/Microsoft.Management/managementGroups?api-version=2020-05-01" $mgResponse = Invoke-RestMethod -Uri $mgUri -Method Get -Headers $headers -ErrorAction SilentlyContinue if ($mgResponse -and $mgResponse.value) { foreach ($mg in $mgResponse.value) { $mgId = $mg.id try { $mgAssignments = Get-AzPolicyAssignment -Scope $mgId -ErrorAction SilentlyContinue foreach ($assignment in $mgAssignments) { $allAssignments += $assignment } } catch { Write-Verbose "Kon assignments niet ophalen voor Management Group $($mg.name): $_" } } } } } catch { Write-Verbose "Kon Management Groups niet ophalen (REST API fallback): $_" # Probeer via Az.Resources als alternatief try { $mgAssignments = Get-AzPolicyAssignment | Where-Object { $_.Id -like "*/managementGroups/*" } -ErrorAction SilentlyContinue foreach ($assignment in $mgAssignments) { if ($allAssignments | Where-Object { $_.ResourceId -eq $assignment.ResourceId }) { continue } $allAssignments += $assignment } } catch { Write-Verbose "Kon Management Group assignments niet ophalen via alternatieve methode: $_" } } # Haal assignments op van alle subscriptions $subscriptions = Get-AzSubscription | Where-Object { $_.State -eq 'Enabled' } foreach ($sub in $subscriptions) { try { Set-AzContext -SubscriptionId $sub.Id -ErrorAction SilentlyContinue | Out-Null $subAssignments = Get-AzPolicyAssignment -ErrorAction SilentlyContinue foreach ($assignment in $subAssignments) { # Voeg alleen toe als niet al aanwezig vanuit Management Group if ($allAssignments | Where-Object { $_.ResourceId -eq $assignment.ResourceId }) { continue } $allAssignments += $assignment } } catch { Write-Verbose "Kon assignments niet ophalen voor subscription $($sub.Name): $_" } } # Verwerk assignments naar gestructureerde output $processed = foreach ($assignment in $allAssignments) { $scopeType = "Unknown" if ($assignment.Id -like "*/managementGroups/*") { $scopeType = "ManagementGroup" } elseif ($assignment.Id -like "*/subscriptions/*") { $scopeType = "Subscription" } elseif ($assignment.Id -like "*/resourceGroups/*") { $scopeType = "ResourceGroup" } $effect = "Unknown" if ($assignment.Properties.PolicyDefinitionId) { try { $policyDef = Get-AzPolicyDefinition -Id $assignment.Properties.PolicyDefinitionId -ErrorAction SilentlyContinue if ($policyDef -and $policyDef.Properties.PolicyRule) { $effect = $policyDef.Properties.PolicyRule.then.effect } } catch { # Als policy definitie niet kan worden opgehaald, probeer vanuit assignment parameters if ($assignment.Properties.Parameters) { $effectParam = $assignment.Properties.Parameters.PSObject.Properties | Where-Object { $_.Name -like "*effect*" } if ($effectParam) { $effect = $effectParam.Value.value } } } } # Controleer op remediatie (DeployIfNotExists of Modify effecten hebben vaak remediatie) $hasRemediation = ($effect -eq "DeployIfNotExists" -or $effect -eq "Modify") # Haal compliance status op (vereist aanvullende API-call) $complianceState = "Unknown" try { $complianceResults = Get-AzPolicyState -Filter "PolicyAssignmentId eq '$($assignment.ResourceId)'" -Top 1 -ErrorAction SilentlyContinue if ($complianceResults -and $complianceResults.Count -gt 0) { $compliantCount = ($complianceResults | Where-Object { $_.ComplianceState -eq "Compliant" }).Count $nonCompliantCount = ($complianceResults | Where-Object { $_.ComplianceState -eq "NonCompliant" }).Count if ($nonCompliantCount -eq 0 -and $compliantCount -gt 0) { $complianceState = "Compliant" } elseif ($nonCompliantCount -gt 0) { $complianceState = "NonCompliant" } } } catch { Write-Verbose "Kon compliance status niet ophalen voor $($assignment.Name): $_" } [pscustomobject]@{ Name = $assignment.Name DisplayName = $assignment.Properties.DisplayName Scope = $assignment.Properties.Scope ScopeType = $scopeType PolicyDefinition = if ($assignment.Properties.PolicyDefinitionId) { Split-Path $assignment.Properties.PolicyDefinitionId -Leaf } else { "Unknown" } Effect = $effect Parameters = if ($assignment.Properties.Parameters) { $assignment.Properties.Parameters } else { @{} } HasRemediation = $hasRemediation ComplianceState = $complianceState ResourceId = $assignment.ResourceId } } return [pscustomobject]@{ Assignments = $processed TotalAssignments = $processed.Count } } function Test-AssignmentConfiguration { <# .SYNOPSIS Valideert of policy assignments correct zijn geconfigureerd. .OUTPUTS PSCustomObject met validatieresultaten. #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [PSCustomObject[]]$Assignments ) $results = @{ TotalAssignments = $Assignments.Count AssignmentsOnMgLevel = ($Assignments | Where-Object { $_.ScopeType -eq "ManagementGroup" }).Count AssignmentsOnSubLevel = ($Assignments | Where-Object { $_.ScopeType -eq "Subscription" }).Count AssignmentsWithDeny = ($Assignments | Where-Object { $_.Effect -eq "Deny" }).Count AssignmentsWithRemediation = ($Assignments | Where-Object { $_.HasRemediation -eq $true }).Count NonCompliantAssignments = ($Assignments | Where-Object { $_.ComplianceState -eq "NonCompliant" }).Count Issues = @() } # Identificeer mogelijke configuratieproblemen foreach ($assignment in $Assignments) { if ($assignment.ScopeType -eq "Unknown") { $results.Issues += [pscustomobject]@{ Assignment = $assignment.Name Issue = "Onbekend scope-type - controleer scope-definitie" Severity = "Medium" } } if ($assignment.Effect -eq "Unknown") { $results.Issues += [pscustomobject]@{ Assignment = $assignment.Name Issue = "Effect kon niet worden bepaald - controleer policy definitie" Severity = "Medium" } } if ($assignment.ComplianceState -eq "NonCompliant") { $results.Issues += [pscustomobject]@{ Assignment = $assignment.Name Issue = "Non-compliant resources gedetecteerd - remediatie vereist" Severity = "High" } } } return [pscustomobject]$results } function Invoke-Monitoring { <# .SYNOPSIS Voert een volledige monitoring en validatie uit van policy assignments. #> [CmdletBinding()] param() Write-Host "`nMonitoring: Azure Policy Assignments Configuratie" -ForegroundColor Yellow Write-Host "====================================================" -ForegroundColor Yellow $inventory = Get-PolicyAssignmentsInventory -UseDebugData:$LocalDebug Write-Host ("Totaal aantal policy assignments: {0}" -f $inventory.TotalAssignments) -ForegroundColor Cyan if ($inventory.TotalAssignments -eq 0) { Write-Host "Er zijn geen policy assignments gevonden in de huidige context." -ForegroundColor Yellow Write-Host "Controleer of de juiste subscription/context is geselecteerd." -ForegroundColor Yellow return } $validation = Test-AssignmentConfiguration -Assignments $inventory.Assignments Write-Host "`nConfiguratie-overzicht:" -ForegroundColor Cyan Write-Host (" Assignments op Management Group niveau: {0}" -f $validation.AssignmentsOnMgLevel) -ForegroundColor Gray Write-Host (" Assignments op Subscription niveau: {0}" -f $validation.AssignmentsOnSubLevel) -ForegroundColor Gray Write-Host (" Assignments met Deny-effect: {0}" -f $validation.AssignmentsWithDeny) -ForegroundColor Gray Write-Host (" Assignments met automatische remediatie: {0}" -f $validation.AssignmentsWithRemediation) -ForegroundColor Gray Write-Host (" Assignments met non-compliant resources: {0}" -f $validation.NonCompliantAssignments) -ForegroundColor $(if ($validation.NonCompliantAssignments -gt 0) { "Yellow" } else { "Green" }) if ($validation.Issues.Count -gt 0) { Write-Host "`nGeïdentificeerde configuratieproblemen:" -ForegroundColor Yellow foreach ($issue in $validation.Issues) { $color = switch ($issue.Severity) { "High" { "Red" } "Medium" { "Yellow" } default { "Gray" } } Write-Host (" [{0}] {1}: {2}" -f $issue.Severity, $issue.Assignment, $issue.Issue) -ForegroundColor $color } } else { Write-Host "`nGeen configuratieproblemen gedetecteerd." -ForegroundColor Green } Write-Host "`nGedetailleerd overzicht per assignment:" -ForegroundColor Cyan foreach ($assignment in $inventory.Assignments) { Write-Host "" Write-Host ("Assignment: {0}" -f $assignment.DisplayName) -ForegroundColor White Write-Host (" Naam : {0}" -f $assignment.Name) -ForegroundColor Gray Write-Host (" Scope : {0} ({1})" -f $assignment.Scope, $assignment.ScopeType) -ForegroundColor Gray Write-Host (" Effect : {0}" -f $assignment.Effect) -ForegroundColor Gray Write-Host (" Remediatie : {0}" -f $(if ($assignment.HasRemediation) { "Ingeschakeld" } else { "Niet beschikbaar" })) -ForegroundColor Gray Write-Host (" Compliance : {0}" -f $assignment.ComplianceState) -ForegroundColor $(if ($assignment.ComplianceState -eq "Compliant") { "Green" } else { "Yellow" }) } } function Invoke-Remediation { <# .SYNOPSIS Ondersteunt het identificeren en oplossen van configuratieproblemen met policy assignments. .DESCRIPTION Dit script voert geen automatische configuratiewijzigingen uit, maar helpt om de output van de monitoring te vertalen naar concrete verbeteracties. #> [CmdletBinding()] param() Write-Host "`nRemediatie-ondersteuning: Azure Policy Assignments" -ForegroundColor Yellow Write-Host "=====================================================" -ForegroundColor Yellow $inventory = Get-PolicyAssignmentsInventory -UseDebugData:$LocalDebug if ($inventory.TotalAssignments -eq 0) { Write-Host "Geen policy assignments gevonden. Controleer of de juiste subscription/context is geselecteerd." -ForegroundColor Yellow return } $validation = Test-AssignmentConfiguration -Assignments $inventory.Assignments if ($validation.Issues.Count -eq 0) { Write-Host "Op basis van de gecontroleerde kenmerken zijn geen directe remediatiepunten gevonden." -ForegroundColor Green Write-Host "Gebruik aanvullende detailcontroles om configuraties verder te toetsen." -ForegroundColor Green return } Write-Host "`nAanbevolen remediatie-acties:" -ForegroundColor Yellow $highPriorityIssues = $validation.Issues | Where-Object { $_.Severity -eq "High" } $mediumPriorityIssues = $validation.Issues | Where-Object { $_.Severity -eq "Medium" } if ($highPriorityIssues.Count -gt 0) { Write-Host "`nHoge prioriteit:" -ForegroundColor Red foreach ($issue in $highPriorityIssues) { Write-Host (" * Assignment '{0}': {1}" -f $issue.Assignment, $issue.Issue) -ForegroundColor White if ($issue.Issue -like "*Non-compliant*") { Write-Host (" Actie: Controleer non-compliant resources en voer remediatie uit via Azure Portal of geautomatiseerde remediatie-taken." -f $issue.Assignment) -ForegroundColor Gray } } } if ($mediumPriorityIssues.Count -gt 0) { Write-Host "`nGemiddelde prioriteit:" -ForegroundColor Yellow foreach ($issue in $mediumPriorityIssues) { Write-Host (" * Assignment '{0}': {1}" -f $issue.Assignment, $issue.Issue) -ForegroundColor White if ($issue.Issue -like "*scope-type*") { Write-Host (" Actie: Controleer de scope-definitie en zorg dat assignments correct zijn toegewezen aan Management Groups, Subscriptions of Resource Groups." -f $issue.Assignment) -ForegroundColor Gray } elseif ($issue.Issue -like "*Effect*") { Write-Host (" Actie: Controleer de policy definitie en zorg dat het effect correct is geconfigureerd in de assignment parameters." -f $issue.Assignment) -ForegroundColor Gray } } } Write-Host "`nAlgemene aanbevelingen:" -ForegroundColor Cyan Write-Host " - Overweeg om assignments te verplaatsen naar Management Group niveau voor betere schaalbaarheid" -ForegroundColor White Write-Host " - Controleer of alle kritieke beveiligingsvereisten zijn afgedwongen via Deny-effect assignments" -ForegroundColor White Write-Host " - Activeer automatische remediatie voor assignments waar mogelijk om handmatige interventie te verminderen" -ForegroundColor White Write-Host " - Stel compliance-rapporten in om regelmatig te monitoren op non-compliant resources" -ForegroundColor White if ($WhatIf) { Write-Host "`n[WhatIf] Er zijn geen wijzigingen doorgevoerd; gebruik deze output om een remediatieplan op te stellen." -ForegroundColor Yellow } else { Write-Host "`nGebruik deze aanbevelingen om concrete tickets of werkpakketten te definiëren binnen het reguliere verbeterprogramma." -ForegroundColor Cyan } } # ============================================================================ # MAIN EXECUTION # ============================================================================ try { Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Script: Azure Policy Assignments Configuratie" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan if ($Monitoring) { Invoke-Monitoring | Out-Null } elseif ($Remediation) { Invoke-Remediation } else { $inventory = Get-PolicyAssignmentsInventory -UseDebugData:$LocalDebug if ($inventory.TotalAssignments -eq 0) { Write-Host "Geen policy assignments gevonden in de huidige context." -ForegroundColor Yellow } else { Write-Host ("Gevonden: {0} policy assignment(s)" -f $inventory.TotalAssignments) -ForegroundColor Green Write-Host "Voer het script uit met -Monitoring voor een gedetailleerd overzicht of -Remediation voor aanbevelingen." -ForegroundColor Cyan } } } catch { Write-Error "Error: $_" throw } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder correct geconfigureerde policy assignments staan organisaties bloot aan aanzienlijke risico's op het gebied van beveiliging, compliance en governance. Configuratiedrift, compliance-hiaten, beveiligingsincidenten, operationele inefficiëntie en governance-problemen zijn allemaal gevolgen van het ontbreken van geautomatiseerde policy enforcement. Nederlandse overheidsorganisaties die moeten voldoen aan compliance-frameworks zoals BIO, NIS2, ISO 27001 en AVG kunnen niet bewijzen dat beveiligingsmaatregelen consistent worden toegepast zonder correct geconfigureerde assignments.

Management Samenvatting

Azure Policy assignments vormen de praktische implementatie van organisatorische beveiligingsstandaarden binnen Azure-omgevingen. Door assignments correct te configureren op de juiste scope-niveaus, met de juiste effecten en parameters, en met automatische remediatie waar mogelijk, kunnen organisaties garanderen dat alle cloud-resources automatisch worden beschermd door consistente beveiligingsmaatregelen. Effectieve monitoring en validatie van assignments is essentieel om te garanderen dat ze correct functioneren, en uitgebreide documentatie vormt de audit-evidentie die nodig is voor compliance-certificering.