Multi-Cloud Identity Federation: Naadloze Authenticatie Tussen Azure, AWS En GCP

💼 Management Samenvatting

Multi-cloud identity federation vormt een geavanceerde identiteitsstrategie waarbij organisaties gebruik maken van gestandaardiseerde federatieve protocollen zoals SAML 2.0 en OpenID Connect om naadloze single sign-on te bieden tussen verschillende cloudproviders, zonder dat gebruikers meerdere accounts hoeven te beheren of dat identiteitsgegevens worden gedupliceerd tussen cloudomgevingen. Voor Nederlandse overheidsorganisaties die werken met een multi-cloud strategie waarbij workloads worden verdeeld over Azure, AWS en Google Cloud Platform, biedt identity federation de mogelijkheid om een centraal identiteitsbeheer te behouden terwijl gebruikers naadloos toegang krijgen tot resources in alle cloudomgevingen.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
60u (tech: 40u)
Van toepassing op:
Azure
AWS
Google Cloud Platform
Multi-Cloud omgevingen

Organisaties die gebruik maken van meerdere cloudproviders worden vaak geconfronteerd met de uitdaging dat elke cloudprovider zijn eigen identiteitssysteem heeft, wat leidt tot gescheiden gebruikersaccounts, verschillende wachtwoordbeleidsregels, inconsistente toegangscontroles en complexe beheerprocessen. Zonder identity federation moeten gebruikers meerdere accounts beheren voor verschillende cloudomgevingen, moeten beheerders identiteitsgegevens handmatig synchroniseren tussen cloudproviders, en ontstaan er beveiligingsrisico's door inconsistente toegangscontroles en het onvermogen om centraal te monitoren wie toegang heeft tot welke resources. Bovendien leidt het ontbreken van identity federation tot compliance-risico's omdat organisaties niet kunnen aantonen dat toegangscontroles consistent zijn geïmplementeerd over alle cloudomgevingen, wat kan resulteren in niet-naleving van frameworks zoals de BIO, ISO 27001 en NIS2. Identity federation lost deze problemen op door organisaties in staat te stellen om één centrale identiteitsprovider te gebruiken voor authenticatie, terwijl alle cloudproviders vertrouwen op tokens die door deze provider worden uitgegeven, wat naadloze single sign-on biedt, beheerprocessen vereenvoudigt en compliance-risico's vermindert.

PowerShell Modules Vereist
Primary API: Microsoft Graph API, AWS IAM, Google Cloud Identity
Connection: Connect-MgGraph, Connect-AWSAccount, Connect-GCPAccount
Required Modules: Microsoft.Graph.Identity.DirectoryManagement, Microsoft.Graph.Identity.SignIns, AWSPowerShell, GoogleCloud.Identity

Implementatie

Dit artikel beschrijft een gestructureerde aanpak voor het implementeren van multi-cloud identity federation binnen de Nederlandse Baseline voor Veilige Cloud. We behandelen architectuurkeuzes zoals de selectie van een centrale identiteitsprovider (bijvoorbeeld Azure AD als Identity Provider), configuratie van SAML 2.0 en OpenID Connect vertrouwensrelaties tussen Azure AD en andere cloudproviders zoals AWS en Google Cloud Platform, implementatie van attribute mapping voor het doorgeven van gebruikersattributen en groepen tussen cloudomgevingen, configuratie van conditional access policies die consistent zijn over alle cloudomgevingen, en implementatie van monitoring en logging voor alle federatieve authenticatieactiviteiten. Daarnaast gaan we in op het beheren van certificaten en token signing keys voor federatieve authenticatie, het implementeren van disaster recovery en failover-scenario's voor wanneer de centrale identiteitsprovider tijdelijk niet beschikbaar is, en het waarborgen dat de federatie-infrastructuur adequaat is beveiligd tegen aanvallen. Het artikel sluit af met governance-richtlijnen voor het beheer van federatieve vertrouwensrelaties, periodieke evaluatie van de effectiviteit van identity federation, en toont hoe het bijbehorende PowerShell-script identity-federation.ps1 kan worden gebruikt om te controleren of identity federation correct is geconfigureerd en actief is.

Architectuur en Ontwerpprincipes voor Multi-Cloud Identity Federation

Een effectieve multi-cloud identity federation-architectuur begint bij de keuze van een centrale identiteitsprovider die functioneert als de Single Source of Truth voor alle gebruikersidentiteiten. Voor Nederlandse overheidsorganisaties die primair gebruik maken van Microsoft 365 en Azure, is Azure Active Directory (Entra ID) de logische keuze als centrale Identity Provider (IdP), omdat deze al is geïntegreerd met Microsoft-services en beschikt over uitgebreide mogelijkheden voor identity governance, conditional access en security monitoring. In deze architectuur fungeert Azure AD als de primaire identiteitsprovider die verantwoordelijk is voor het authenticeren van gebruikers en het uitgeven van beveiligingstokens, terwijl andere cloudproviders zoals AWS en Google Cloud Platform fungeren als Relying Parties (RP) die deze tokens accepteren en valideren om gebruikers toegang te verlenen tot hun resources. Deze architectuur elimineert de noodzaak om gebruikersaccounts te dupliceren tussen cloudproviders, omdat alle authenticatie plaatsvindt via Azure AD, wat de beveiligingspostuur aanzienlijk verbetert en beheerprocessen vereenvoudigt. De kern van multi-cloud identity federation bestaat uit drie componenten: de Identity Provider (IdP), de Relying Parties (RP), en de federatieve protocollen die communicatie tussen deze componenten mogelijk maken. Azure AD fungeert als de Identity Provider en is verantwoordelijk voor het authenticeren van gebruikers, het valideren van referenties, en het uitgeven van beveiligingstokens die claims bevatten over de identiteit van de gebruiker. AWS en Google Cloud Platform fungeren als Relying Parties en zijn verantwoordelijk voor het accepteren en valideren van tokens die door Azure AD worden uitgegeven, en voor het verlenen van toegang tot resources op basis van de claims in deze tokens. De federatieve protocollen, zoals SAML 2.0 en OpenID Connect, vormen de brug tussen de Identity Provider en de Relying Parties en definiëren hoe tokens worden uitgewisseld, hoe claims worden doorgegeven, en hoe authenticatie wordt geverifieerd. Deze architectuur biedt naadloze single sign-on voor gebruikers, omdat zij slechts één keer hoeven in te loggen bij Azure AD om toegang te krijgen tot resources in alle geconfigureerde cloudomgevingen. Een kritiek aspect van multi-cloud identity federation is het correct configureren van attribute mapping tussen de Identity Provider en de Relying Parties. Attribute mapping bepaalt welke gebruikersattributen en groepen worden doorgegeven in tokens en hoe deze worden gemapped naar lokale attributen in de Relying Party. Voor AWS betekent dit bijvoorbeeld dat Azure AD-gebruikersattributen zoals e-mailadres, display name en groepen moeten worden gemapped naar AWS IAM-rollen en -beleidsregels, zodat gebruikers de juiste toegangsrechten krijgen in AWS. Voor Google Cloud Platform betekent dit dat Azure AD-gebruikersattributen moeten worden gemapped naar Google Workspace-accounts en Cloud Identity-groepen, zodat gebruikers toegang krijgen tot de juiste Google Cloud-resources. Het is belangrijk om te realiseren dat attribute mapping niet alleen technisch correct moet zijn, maar ook moet voldoen aan privacy- en compliance-vereisten, omdat organisaties moeten kunnen aantonen dat alleen noodzakelijke gegevens worden gedeeld tussen cloudproviders en dat gegevensminimalisatie wordt toegepast conform de AVG.

Azure AD en AWS Identity Federation Configuratie

De configuratie van identity federation tussen Azure AD en AWS begint bij het opzetten van een SAML 2.0 vertrouwensrelatie waarbij Azure AD fungeert als Identity Provider en AWS fungeert als Relying Party. Deze configuratie maakt het mogelijk dat gebruikers die zijn geauthenticeerd bij Azure AD naadloos toegang krijgen tot AWS-services zonder dat zij een apart AWS-account hoeven te beheren. De implementatie omvat het configureren van een SAML-provider in AWS IAM die verwijst naar Azure AD, het configureren van een Azure AD Enterprise Application die AWS vertegenwoordigt, en het configureren van attribute mapping zodat Azure AD-gebruikersattributen en groepen worden doorgegeven in SAML-asserties. In AWS wordt de SAML-provider geconfigureerd via IAM → Identity providers, waarbij de SAML-metadata van Azure AD wordt geüpload of een URL naar de metadata wordt opgegeven. AWS gebruikt deze metadata om de Azure AD Identity Provider te valideren en om te verifiëren dat SAML-asserties authentiek zijn en niet zijn gewijzigd. Na het configureren van de SAML-provider moeten IAM-roles worden geconfigureerd die gebruikers kunnen aannemen na succesvolle authenticatie via Azure AD. Deze rollen bepalen welke AWS-services en resources gebruikers kunnen benaderen, en moeten worden geconfigureerd met het principe van least privilege, waarbij gebruikers alleen de minimale rechten krijgen die nodig zijn voor hun functie. In Azure AD wordt de AWS Enterprise Application geconfigureerd via Azure Portal → Enterprise Applications → New Application → AWS. Tijdens de configuratie wordt de AWS SAML-metadata geüpload of een URL naar de metadata wordt opgegeven, zodat Azure AD weet waar SAML-asserties naartoe moeten worden gestuurd. Vervolgens moeten SAML-claims worden geconfigureerd die bepalen welke gebruikersattributen en groepen worden doorgegeven in SAML-asserties. Voor AWS zijn typische claims onder andere de NameID (gebruikersnaam), email address, en groepen die worden gebruikt voor role assumption. Het is belangrijk om te realiseren dat de NameID-claim uniek moet zijn en consistent moet blijven tussen authenticatiesessies, omdat AWS deze gebruikt om gebruikers te identificeren en om rollen toe te wijzen. Na het configureren van de basis-federatie moeten conditional access policies worden geconfigureerd in Azure AD die bepalen wanneer gebruikers toegang krijgen tot AWS. Deze policies kunnen bijvoorbeeld vereisen dat gebruikers meervoudige authenticatie gebruiken, dat zij verbinden vanaf beheerde apparaten, of dat zij zich bevinden op vertrouwde netwerklocaties. Door conditional access policies te configureren kunnen organisaties ervoor zorgen dat toegang tot AWS alleen wordt verleend wanneer aan specifieke beveiligingsvoorwaarden wordt voldaan, wat de beveiligingspostuur aanzienlijk verbetert en compliance-vereisten ondersteunt. Het PowerShell-script identity-federation.ps1 sluit hierbij aan door te controleren of SAML-providers correct zijn geconfigureerd in AWS, of Enterprise Applications correct zijn geconfigureerd in Azure AD, en of attribute mapping correct is ingesteld.

Gebruik PowerShell-script identity-federation.ps1 (functie Invoke-Monitoring) – Controleert de configuratie en status van multi-cloud identity federation tussen Azure AD, AWS en Google Cloud Platform.

Azure AD en Google Cloud Platform Identity Federation Configuratie

De configuratie van identity federation tussen Azure AD en Google Cloud Platform volgt een vergelijkbare aanpak als Azure-AWS-federatie, maar gebruikt OpenID Connect (OIDC) als primair federatief protocol in plaats van SAML 2.0. Google Cloud Platform ondersteunt zowel SAML 2.0 als OpenID Connect voor identity federation, maar OpenID Connect wordt aanbevolen omdat het modernere protocollen gebruikt en betere integratie biedt met Google Cloud Identity en Google Workspace. De configuratie omvat het opzetten van een OIDC-vertrouwensrelatie waarbij Azure AD fungeert als Identity Provider en Google Cloud Platform fungeert als Relying Party, het configureren van een Azure AD Enterprise Application die Google Cloud Platform vertegenwoordigt, en het configureren van attribute mapping zodat Azure AD-gebruikersattributen en groepen worden doorgegeven in OIDC-tokens. In Google Cloud Platform wordt de OIDC Identity Provider geconfigureerd via Cloud Identity → Identity Providers, waarbij de OIDC-metadata van Azure AD wordt geüpload of een URL naar de metadata wordt opgegeven. Google Cloud Platform gebruikt deze metadata om de Azure AD Identity Provider te valideren en om te verifiëren dat OIDC-tokens authentiek zijn en niet zijn gewijzigd. Na het configureren van de Identity Provider moeten Google Cloud IAM-rollen en -beleidsregels worden geconfigureerd die bepalen welke Google Cloud-services en resources gebruikers kunnen benaderen. Deze rollen moeten worden geconfigureerd met het principe van least privilege, waarbij gebruikers alleen de minimale rechten krijgen die nodig zijn voor hun functie, en moeten worden gekoppeld aan Azure AD-groepen via attribute mapping. In Azure AD wordt de Google Cloud Platform Enterprise Application geconfigureerd via Azure Portal → Enterprise Applications → New Application → Google Cloud Platform. Tijdens de configuratie wordt de Google Cloud Platform OIDC-metadata geüpload of een URL naar de metadata wordt opgegeven, zodat Azure AD weet waar OIDC-tokens naartoe moeten worden gestuurd. Vervolgens moeten OIDC-claims worden geconfigureerd die bepalen welke gebruikersattributen en groepen worden doorgegeven in OIDC-tokens. Voor Google Cloud Platform zijn typische claims onder andere de subject (gebruikers-ID), email address, en groepen die worden gebruikt voor role assignment. Het is belangrijk om te realiseren dat de subject-claim uniek moet zijn en consistent moet blijven tussen authenticatiesessies, omdat Google Cloud Platform deze gebruikt om gebruikers te identificeren en om rollen toe te wijzen. Na het configureren van de basis-federatie moeten conditional access policies worden geconfigureerd in Azure AD die bepalen wanneer gebruikers toegang krijgen tot Google Cloud Platform. Deze policies kunnen bijvoorbeeld vereisen dat gebruikers meervoudige authenticatie gebruiken, dat zij verbinden vanaf beheerde apparaten, of dat zij zich bevinden op vertrouwde netwerklocaties. Door conditional access policies te configureren kunnen organisaties ervoor zorgen dat toegang tot Google Cloud Platform alleen wordt verleend wanneer aan specifieke beveiligingsvoorwaarden wordt voldaan, wat de beveiligingspostuur aanzienlijk verbetert en compliance-vereisten ondersteunt. Bovendien moeten Google Cloud Organization Policies worden geconfigureerd die aanvullende beveiligingscontroles bieden op resource-niveau, zoals het beperken van welke regio's kunnen worden gebruikt of welke API's kunnen worden aangeroepen.

Monitoring, Governance en Continue Verbetering

Effectieve monitoring van multi-cloud identity federation is essentieel om te waarborgen dat de federatie-infrastructuur correct blijft functioneren en dat organisaties altijd beschikken over betrouwbare authenticatiemogelijkheden voor gebruikers in alle cloudomgevingen. Zonder uitgebreide monitoring kunnen organisaties niet garanderen dat federatieve authenticatie correct werkt in alle cloudomgevingen, dat alle componenten beschikbaar zijn, en dat er geen problemen zijn met de federatie-configuratie die kunnen leiden tot authenticatiefouten of toegangsproblemen voor gebruikers. Monitoring omvat het continu volgen van de status van federatieve vertrouwensrelaties, het verifiëren dat certificaten geldig zijn en niet binnenkort verlopen, het monitoren van authenticatieactiviteiten voor verdachte patronen, en het waarborgen dat alle componenten beschikbaar zijn en correct functioneren. De basis van monitoring wordt gevormd door regelmatige verificatie van de status van federatieve vertrouwensrelaties via de Azure Portal, AWS Console en Google Cloud Console. Beheerders moeten dagelijks controleren of federatieve vertrouwensrelaties correct zijn geconfigureerd en actief zijn, of er geen fouten of waarschuwingen zijn in de authenticatielogs, en of certificaten geldig zijn en niet binnenkort verlopen. Deze verificatie kan worden geautomatiseerd via PowerShell-scripts die de status van federatieve vertrouwensrelaties controleren en waarschuwingen genereren wanneer problemen worden gedetecteerd. Het is belangrijk om deze verificaties regelmatig uit te voeren, omdat problemen met federatieve authenticatie kunnen leiden tot authenticatiefouten voor gebruikers, wat kan resulteren in toegangsproblemen en gebruikersfrustratie. Bovendien moeten organisaties ervoor zorgen dat er voldoende redundantie is in de federatie-infrastructuur, zodat authenticatie kan blijven functioneren zelfs wanneer componenten tijdelijk niet beschikbaar zijn. Naast het controleren van de status van federatieve vertrouwensrelaties moeten organisaties regelmatig verifiëren dat certificaten geldig zijn en niet binnenkort verlopen. Verlopen certificaten kunnen leiden tot authenticatiefouten en toegangsproblemen voor gebruikers, waardoor het essentieel is om processen te implementeren voor het monitoren van certificaatverlopen en voor het automatisch vernieuwen van certificaten voordat zij verlopen. Organisaties moeten waarschuwingen configureren die worden gegenereerd wanneer certificaten binnen dertig dagen verlopen, zodat proactieve maatregelen kunnen worden genomen om certificaten te vernieuwen voordat zij daadwerkelijk verlopen. Bovendien moeten organisaties ervoor zorgen dat certificaatvernieuwing wordt getest in een testomgeving voordat deze wordt doorgevoerd in productie, om te voorkomen dat certificaatvernieuwing leidt tot onverwachte problemen of authenticatiefouten. Daarnaast moeten organisaties processen implementeren voor het monitoren van authenticatieactiviteiten voor verdachte patronen die kunnen wijzen op beveiligingsincidenten of ongeautoriseerde toegang. Dit omvat het analyseren van authenticatielogs voor ongebruikelijke patronen zoals authenticatiepogingen vanaf onbekende locaties, mislukte authenticatiepogingen voor meerdere gebruikers, of authenticatiepogingen buiten normale werkuren. Organisaties moeten Security Information and Event Management (SIEM) systemen configureren om authenticatielogs te verzamelen van alle cloudproviders en deze te correleren, en moeten waarschuwingen configureren die worden gegenereerd wanneer verdachte patronen worden gedetecteerd. Door deze monitoring kunnen organisaties snel reageren op beveiligingsincidenten en kunnen zij preventieve maatregelen nemen om te voorkomen dat aanvallers misbruik maken van de federatie-infrastructuur.

Gebruik PowerShell-script identity-federation.ps1 (functie Invoke-Remediation) – Herstelt en configureert multi-cloud identity federation wanneer problemen worden gedetecteerd.

Compliance, Audit en Bewijsvoering

Multi-cloud identity federation is een kritieke beveiligingsmaatregel die direct bijdraagt aan naleving van verschillende cybersecurity frameworks en wet- en regelgeving die van toepassing zijn op Nederlandse overheidsorganisaties. Door gebruik te maken van identity federation kunnen organisaties voldoen aan eisen over consistente toegangscontroles over alle cloudomgevingen, kunnen zij centraal identiteitsbeheer implementeren dat wordt vereist door bepaalde compliance-frameworks, en kunnen zij volledige controle behouden over authenticatieprocessen, wat essentieel is voor het waarborgen van beveiliging, transparantie en verantwoording. Het ontbreken van adequate identity federation kan leiden tot niet-naleving van deze vereisten, wat kan resulteren in boetes, reputatieschade en juridische aansprakelijkheid. De Baseline Informatiebeveiliging Overheid (BIO) norm 12.01 vereist dat organisaties passende authenticatiemethoden implementeren voor toegang tot informatie en informatiesystemen. Deze norm is specifiek ontwikkeld voor de Nederlandse publieke sector en stelt eisen aan de sterkte van authenticatiemethoden, waarbij voor toegang tot gevoelige informatie meervoudige authenticatie wordt vereist. Identity federation maakt het mogelijk om consistente authenticatiemethoden te implementeren over alle cloudomgevingen, terwijl organisaties volledige controle behouden over authenticatieprocessen via Azure AD. Voor multi-cloud omgevingen betekent dit dat identity federation moet zijn geconfigureerd en dat organisaties kunnen aantonen dat zij voldoen aan de vereisten van deze norm over alle cloudproviders. Het niet implementeren van adequate identity federation kan leiden tot niet-naleving van de BIO, wat kan resulteren in bestuurlijke maatregelen of andere handhavingsacties. De ISO 27001 standaard, controle A.9.4.2, vereist eveneens passende authenticatiemethoden voor toegang tot informatiesystemen. Deze internationale standaard wordt veelvuldig gebruikt door Nederlandse organisaties die certificering nastreven en vormt een belangrijke basis voor informatiebeveiligingsmanagement. Controle A.9.4.2 specificeert dat organisaties moeten kunnen aantonen dat zij passende authenticatiemethoden hebben geïmplementeerd, dat deze methoden correct zijn geconfigureerd, en dat er processen zijn geïmplementeerd voor het monitoren en reageren op authenticatieproblemen. Voor multi-cloud omgevingen betekent dit dat identity federation moet zijn geconfigureerd en dat organisaties kunnen aantonen dat zij voldoen aan de vereisten van deze controle over alle cloudproviders. Het niet implementeren van adequate identity federation kan leiden tot niet-naleving van ISO 27001, wat kan resulteren in het verlies van certificering en reputatieschade. De NIS2 richtlijn, Artikel 21, stelt specifieke eisen aan essentiële en belangrijke entiteiten met betrekking tot beveiligingsmaatregelen voor authenticatie en toegangscontrole. Nederlandse organisaties die onder de reikwijdte van NIS2 vallen, moeten kunnen aantonen dat zij beschikken over adequate authenticatiemethoden en dat zij processen hebben geïmplementeerd voor het monitoren en reageren op authenticatieproblemen. Artikel 21 specificeert dat organisaties moeten kunnen aantonen dat zij passende maatregelen hebben genomen om authenticatie te beveiligen, wat onder andere betekent dat zij sterke authenticatiemethoden moeten implementeren en dat zij processen moeten hebben voor het monitoren en reageren op authenticatie-incidenten. Voor multi-cloud omgevingen betekent dit dat identity federation moet zijn geconfigureerd en dat organisaties kunnen aantonen dat zij voldoen aan de vereisten van Artikel 21 over alle cloudproviders. Het niet implementeren van adequate identity federation kan leiden tot niet-naleving van NIS2, wat kan resulteren in boetes en andere handhavingsmaatregelen door de Autoriteit Consument en Markt (ACM) of andere toezichthouders.

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 Multi-Cloud Identity Federation Configuration .DESCRIPTION Controleert en configureert multi-cloud identity federation tussen Azure AD, AWS en Google Cloud Platform voor naadloze single sign-on tussen verschillende cloudomgevingen. .NOTES Filename: identity-federation.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Requires: Microsoft.Graph.Identity.DirectoryManagement, AWSPowerShell Related JSON: content/azure/multi-cloud/identity-federation.json Category: multi-cloud Workload: azure #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph.Identity.DirectoryManagement, Microsoft.Graph.Identity.SignIns [CmdletBinding()] param( [Parameter(Mandatory = $false)] [switch]$Monitoring, [Parameter(Mandatory = $false)] [switch]$Remediation, [Parameter(Mandatory = $false)] [switch]$Revert, [Parameter(Mandatory = $false)] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Multi-Cloud Identity Federation" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Get-MgContextOrWarning { <# .SYNOPSIS Zorgt voor een geldige Microsoft Graph-context zonder interactieve prompts. .DESCRIPTION In omgevingen zonder vooraf ingestelde context geeft deze functie een duidelijke waarschuwing en retourneert $null. Dit voorkomt dat scripts blijven hangen op interactieve logins in geautomatiseerde pipelines. #> [CmdletBinding()] param() $ctx = Get-MgContext -ErrorAction SilentlyContinue if (-not $ctx) { Write-Warning "Geen actieve Microsoft Graph-context gevonden. Meld u vooraf aan met 'Connect-MgGraph' (bij voorkeur non-interactief, bijvoorbeeld via managed identity of service principal)." return $null } return $ctx } function Test-Compliance { <# .SYNOPSIS Tests if current configuration meets compliance requirements .DESCRIPTION Wrapper function that calls Invoke-Monitoring and returns compliance status .OUTPUTS Returns monitoring result object with isCompliant property #> [CmdletBinding()] param() return Invoke-Monitoring } function Invoke-Monitoring { <# .SYNOPSIS Monitors and reports current multi-cloud identity federation status .DESCRIPTION Controleert per cloudprovider: - Of SAML/OIDC vertrouwensrelaties correct zijn geconfigureerd - Of Enterprise Applications correct zijn ingesteld in Azure AD - Of attribute mapping correct is geconfigureerd - Of certificaten geldig zijn en niet binnenkort verlopen .OUTPUTS Hashtable met: - isCompliant: Boolean - timestamp: Datum/tijd - findings: Lijst met tekstuele bevindingen - summary: Overzicht met aantallen providers en afwijkingen #> [CmdletBinding()] param() try { Write-Host "`nMonitoring multi-cloud identity federation status..." -ForegroundColor Yellow $ctx = Get-MgContextOrWarning if (-not $ctx) { return @{ isCompliant = $false timestamp = Get-Date findings = @("Geen Microsoft Graph-context beschikbaar; voer Connect-MgGraph uit voordat u deze controle draait.") summary = @{ ProvidersChecked = 0 ProvidersWithFederation = 0 InvalidCertificates = 0 MissingAttributeMapping = 0 } } } Write-Host "Context: $($ctx.TenantId)" -ForegroundColor Gray $result = @{ isCompliant = $true timestamp = Get-Date findings = @() summary = @{ ProvidersChecked = 0 ProvidersWithFederation = 0 InvalidCertificates = 0 MissingAttributeMapping = 0 } } # Controleer Azure AD Enterprise Applications voor AWS Write-Host "`nChecking Azure AD Enterprise Applications..." -ForegroundColor Gray try { $enterpriseApps = Get-MgServicePrincipal -Filter "displayName eq 'AWS'" -ErrorAction SilentlyContinue if ($enterpriseApps) { $result.summary.ProvidersChecked++ Write-Host " [OK] AWS Enterprise Application gevonden in Azure AD" -ForegroundColor Green # Controleer SAML-configuratie $samlConfig = Get-MgServicePrincipalSynchronizationJob -ServicePrincipalId $enterpriseApps[0].Id -ErrorAction SilentlyContinue if ($samlConfig) { $result.summary.ProvidersWithFederation++ Write-Host " [OK] SAML-configuratie gevonden voor AWS" -ForegroundColor Green } else { $result.isCompliant = $false $result.summary.MissingAttributeMapping++ $msg = "Geen SAML-configuratie gevonden voor AWS Enterprise Application" $result.findings += $msg Write-Host " [WARN] $msg" -ForegroundColor Yellow } } else { $result.isCompliant = $false $result.summary.ProvidersChecked++ $msg = "Geen AWS Enterprise Application gevonden in Azure AD" $result.findings += $msg Write-Host " [FAIL] $msg" -ForegroundColor Red } } catch { Write-Host " [WARN] Kon Enterprise Applications niet controleren: $_" -ForegroundColor Yellow $result.findings += "Kon Enterprise Applications niet controleren: $_" } # Controleer Azure AD Enterprise Applications voor Google Cloud Platform try { $gcpApps = Get-MgServicePrincipal -Filter "displayName eq 'Google Cloud Platform' or displayName eq 'Google Workspace'" -ErrorAction SilentlyContinue if ($gcpApps) { $result.summary.ProvidersChecked++ Write-Host " [OK] Google Cloud Platform Enterprise Application gevonden in Azure AD" -ForegroundColor Green # Controleer OIDC-configuratie $oidcConfig = Get-MgServicePrincipalSynchronizationJob -ServicePrincipalId $gcpApps[0].Id -ErrorAction SilentlyContinue if ($oidcConfig) { $result.summary.ProvidersWithFederation++ Write-Host " [OK] OIDC-configuratie gevonden voor Google Cloud Platform" -ForegroundColor Green } else { $result.isCompliant = $false $result.summary.MissingAttributeMapping++ $msg = "Geen OIDC-configuratie gevonden voor Google Cloud Platform Enterprise Application" $result.findings += $msg Write-Host " [WARN] $msg" -ForegroundColor Yellow } } else { Write-Host " [INFO] Geen Google Cloud Platform Enterprise Application gevonden (optioneel)" -ForegroundColor Gray } } catch { Write-Host " [WARN] Kon Google Cloud Platform Enterprise Applications niet controleren: $_" -ForegroundColor Yellow } # Controleer certificaten (indien beschikbaar via Graph API) Write-Host "`nChecking certificates..." -ForegroundColor Gray try { # Note: Certificaatcontrole vereist aanvullende API-calls # In productie zou hier certificaatvalidatie worden gecontroleerd Write-Host " [INFO] Certificaatcontrole vereist aanvullende configuratie" -ForegroundColor Gray } catch { Write-Verbose "Kon certificaten niet controleren: $_" } Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "SAMENVATTING IDENTITY FEDERATION STATUS" -ForegroundColor Cyan Write-Host (" Cloudproviders gecontroleerd : {0}" -f $result.summary.ProvidersChecked) -ForegroundColor White Write-Host (" Providers met federation : {0}" -f $result.summary.ProvidersWithFederation) -ForegroundColor White if ($result.summary.MissingAttributeMapping -gt 0) { Write-Host (" Providers zonder attribute mapping : {0}" -f $result.summary.MissingAttributeMapping) -ForegroundColor Yellow } if ($result.isCompliant) { Write-Host "`n[OK] COMPLIANT: Multi-cloud identity federation is correct geconfigureerd." -ForegroundColor Green } else { Write-Host "`n[FAIL] NON-COMPLIANT: Zie bevindingen voor ontbrekende configuraties." -ForegroundColor Red } return $result } catch { Write-Host "`n[FAIL] ERROR tijdens monitoring: $_" -ForegroundColor Red throw } } function Invoke-Remediation { <# .SYNOPSIS Configureert multi-cloud identity federation waar dit nog niet is gebeurd. .DESCRIPTION Controleert per cloudprovider of identity federation is geconfigureerd en biedt richtlijnen voor configuratie. Volledige automatisering vereist aanvullende configuratie per cloudprovider. Gebruik bij voorkeur -WhatIf om de impact te beoordelen. .PARAMETER WhatIf Shows what would be changed without making actual changes #> [CmdletBinding(SupportsShouldProcess)] param() try { Write-Host "`nRemediation van multi-cloud identity federation..." -ForegroundColor Yellow $ctx = Get-MgContextOrWarning if (-not $ctx) { Write-Warning "Remediation kan niet worden uitgevoerd zonder geldige Microsoft Graph-context." return } Write-Host "`nBelangrijke opmerkingen:" -ForegroundColor Cyan Write-Host " • Multi-cloud identity federation vereist handmatige configuratie per cloudprovider" -ForegroundColor Gray Write-Host " • Voor AWS: Configureer SAML-provider in IAM en Enterprise Application in Azure AD" -ForegroundColor Gray Write-Host " • Voor Google Cloud: Configureer OIDC Identity Provider en Enterprise Application in Azure AD" -ForegroundColor Gray Write-Host " • Raadpleeg de documentatie voor gedetailleerde stappen" -ForegroundColor Gray # Controleer huidige status $monitoringResult = Invoke-Monitoring if ($monitoringResult.isCompliant) { Write-Host "`n[OK] Identity federation is al correct geconfigureerd." -ForegroundColor Green return } Write-Host "`nAanbevolen acties:" -ForegroundColor Yellow foreach ($finding in $monitoringResult.findings) { Write-Host " • $finding" -ForegroundColor Gray } Write-Host "`n[INFO] Gebruik de Azure Portal en cloudprovider-consoles voor volledige configuratie." -ForegroundColor Cyan } catch { Write-Host "`n[FAIL] ERROR tijdens remediation: $_" -ForegroundColor Red throw } } function Invoke-Revert { <# .SYNOPSIS Reverts identity federation configuration .DESCRIPTION Let op: Het terugdraaien van identity federation wordt NIET aanbevolen omdat dit gebruikers uitsluit van toegang tot multi-cloud resources. Deze functie is alleen bedoeld voor testomgevingen of wanneer expliciet gevraagd. #> [CmdletBinding(SupportsShouldProcess)] param() try { Write-Host "`n⚠️ WAARSCHUWING: Terugdraaien van identity federation blokkeert gebruikers!" -ForegroundColor Red Write-Host "Dit wordt NIET aanbevolen voor productieomgevingen.`n" -ForegroundColor Red $ctx = Get-MgContextOrWarning if (-not $ctx) { Write-Warning "Revert kan niet worden uitgevoerd zonder geldige Microsoft Graph-context." return } Write-Host "`n[INFO] Revert-functionaliteit vereist handmatige configuratie per cloudprovider." -ForegroundColor Yellow Write-Host "Gebruik de Azure Portal en cloudprovider-consoles om federatieve vertrouwensrelaties te verwijderen." -ForegroundColor Gray } catch { Write-Host "`n[FAIL] ERROR tijdens revert: $_" -ForegroundColor Red throw } } # ============================================================================ # MAIN EXECUTION # ============================================================================ try { if ($Revert) { if ($WhatIf) { Write-Host "WhatIf: Zou identity federation terugdraaien (NIET AANBEVOLEN)." -ForegroundColor Yellow } else { Invoke-Revert } } elseif ($Remediation) { if ($WhatIf) { Write-Host "WhatIf: Zou identity federation configureren waar nodig." -ForegroundColor Yellow } else { Invoke-Remediation } } elseif ($Monitoring) { $result = Invoke-Monitoring if ($result.isCompliant) { exit 0 } else { exit 1 } } else { Write-Host "Beschikbare parameters:" -ForegroundColor Yellow Write-Host " -Monitoring : Controleer huidige status van identity federation" -ForegroundColor Gray Write-Host " -Remediation : Toon richtlijnen voor configuratie van identity federation" -ForegroundColor Gray Write-Host " -Revert : Terugdraaien van identity federation (NIET AANBEVOLEN!)" -ForegroundColor Red Write-Host " -WhatIf : Toon welke wijzigingen zouden worden uitgevoerd" -ForegroundColor Gray Write-Host "`nVoorbeeld: .\identity-federation.ps1 -Monitoring" -ForegroundColor Cyan } } catch { Write-Error "Script execution failed: $_" exit 2 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan } # ============================================================================ # EXIT CODES # ============================================================================ # 0 = Success / Compliant # 1 = Warning / Non-compliant # 2 = Error / Execution failed

Risico zonder implementatie

Risico zonder implementatie
High: Zonder adequate multi-cloud identity federation ontstaan gescheiden gebruikersaccounts tussen cloudproviders, inconsistente toegangscontroles, complexe beheerprocessen en compliance-risico's omdat organisaties niet kunnen aantonen dat toegangscontroles consistent zijn geïmplementeerd over alle cloudomgevingen. Dit vergroot de kans op beveiligingsincidenten, gegevensverlies, reputatieschade en non-compliance met BIO, ISO 27001 en NIS2.

Management Samenvatting

Implementeer multi-cloud identity federation met Azure AD als centrale Identity Provider en configureer SAML 2.0 en OpenID Connect vertrouwensrelaties met AWS en Google Cloud Platform. Automatiseer monitoring en governance van federatieve vertrouwensrelaties met PowerShell, gebruik identity-federation.ps1 om de configuratie periodiek te toetsen en verbeter deze op basis van incidenten en audits. Zo borgt u naadloze single sign-on, vereenvoudigt u beheerprocessen en voldoet u aan compliance-vereisten over alle cloudomgevingen.