Azure & Entra ID Hardening
Cloud Snel, Cloud Strak
Cloudomgevingen veranderen snel. Daarom moet beveiliging hier standaard en geautomatiseerd meebewegen.
Voor Azure & Entra ID Hardening is automatisering leidend: guardrails in code, least privilege en continue driftcontrole.
Zo houd je snelheid in de cloud, zonder dat veiligheid afhankelijk wordt van handmatig geluk.
Directe maatregelen (15 minuten)
Waarom dit telt
De kern van Azure & Entra ID Hardening is risicoreductie in de praktijk. Technische context ondersteunt de maatregelkeuze, maar implementatie en borging staan centraal.
Verdedigingsmaatregelen
Conditional Access
Conditional Access is de belangrijkste verdedigingslaag in Entra ID. Een goed geconfigureerd Conditional Access-beleid maakt veel van de aanvallen in dit hoofdstuk onmogelijk of significant moeilijker.
Essentiële policies:
| Policy | Beschrijving | Welke aanval het mitigeert |
|---|---|---|
| MFA voor alle gebruikers | Vereist MFA voor elke authenticatie | Password spraying |
| Block legacy auth | Blokkeer IMAP, POP3, SMTP AUTH, etc. | MFA bypass via legacy protocols |
| Block device code flow | Blokkeer de device authorization flow | Device code phishing |
| Require compliant device | Alleen beheerde devices | Token theft vanaf onbeheerde devices |
| Block risky sign-ins | Blokkeer bij “high” risico-score | Diverse |
| Named locations | Beperk tot vertrouwde IP-ranges | Brute force vanuit onbekende locaties |
| Require app protection | Vereist Intune-managed apps | Data exfiltratie via onbeheerde apps |
# Audit: alle Conditional Access policies ophalen
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies" | \
python3 -c "
import sys,json
policies = json.load(sys.stdin).get('value',[])
for p in policies:
state = p.get('state','unknown')
name = p.get('displayName','')
print(f'[{state.upper():8}] {name}')
"Privileged Identity Management (PIM)
PIM implementeert just-in-time privileged access: rollen zijn niet permanent toegewezen, maar moeten worden geactiveerd wanneer ze nodig zijn. Activering vereist een justificatie en kan MFA en goedkeuring vereisen.
PIM vermindert het aanvalsoppervlak door: - Minder permanent actieve Global Admins - Tijdgebonden rolactivering (max 8 uur standaard) - Audit trail van rolactivering - MFA-vereiste bij activering (zelfs als de sessie al MFA heeft)
Workload Identity Federation
Workload Identity Federation is de opvolger van client secrets voor app registrations. In plaats van een geheim dat gestolen kan worden, gebruikt het een federatieve vertrouwensrelatie met een externe identity provider. Geen secret, geen risk van secret leakage.
# Controleer of er nog apps zijn met client secrets (die zouden moeten migreren)
az ad app list --query "[?passwordCredentials[0]!=null].{App:displayName,Created:passwordCredentials[0].startDateTime,Expires:passwordCredentials[0].endDateTime}" -o tableOverige Aanbevelingen
| Maatregel | Beschrijving |
|---|---|
| Disable user consent | Voorkom illicit consent grant attacks |
| Enable audit logging | Azure AD sign-in logs + audit logs naar SIEM |
| Rotate storage keys | Automatische rotatie via Key Vault |
| Disable public blob access | Op subscription-level afdwingen |
| Monitor Managed Identity usage | Anomaliedetectie op token-aanvragen |
| Azure AD Connect hardening | Dedicated server, beperkte admin-toegang |
| PRT protection | Token protection (Windows 11+) |
Referentietabel
| Onderwerp | Techniek | Tool | MITRE ATT&CK | Moeilijkheid |
|---|---|---|---|---|
| Tenant enumeratie | Unauthenticated recon | curl, browser | T1589 (Gather Victim Identity Information) | Laag |
| Directory enumeratie | Authenticated user enum | az cli, ROADtools, Graph API | T1087.004 (Cloud Account Discovery) | Laag |
| Password spraying | Credential Access | MSOLSpray | T1110.003 (Password Spraying) | Laag |
| MFA bypass (legacy auth) | Legacy protocol abuse | curl, Thunderbird | T1078.004 (Cloud Accounts) | Gemiddeld |
| Device code phishing | OAuth device flow abuse | Python, TokenTactics | T1528 (Steal Application Access Token) | Gemiddeld |
| Consent grant attack | Illicit OAuth consent | Custom app registration | T1528 (Steal Application Access Token) | Gemiddeld |
| Conditional Access bypass | Policy gap exploitation | roadrecon, Graph API | T1078.004 (Cloud Accounts) | Hoog |
| RBAC escalation | Role assignment abuse | az cli | T1098.003 (Additional Cloud Roles) | Gemiddeld |
| Custom role abuse | Overprivileged custom roles | az cli | T1098.003 (Additional Cloud Roles) | Gemiddeld |
| Managed Identity token theft | IMDS token extraction | curl | T1552.005 (Cloud Instance Metadata API) | Gemiddeld |
| Key Vault secrets | Secret/key/cert extraction | az cli | T1552.001 (Credentials in Files) | Gemiddeld |
| Storage account abuse | SAS token / shared key | az cli, curl | T1530 (Data from Cloud Storage) | Laag-Gemiddeld |
| Azure AD Connect (PHS) | Sync credential extraction | AADInternals | T1003.006 (DCSync) | Hoog |
| Azure AD Connect (PTA) | Authentication interception | AADInternals | T1557 (Adversary-in-the-Middle) | Hoog |
| Golden SAML | ADFS cert theft + token forge | ADFSDump, AADInternals | T1606.002 (SAML Tokens) | Hoog |
| Automation runbook abuse | Credential dump via runbook | az cli | T1078.004 (Cloud Accounts) | Gemiddeld |
| Hybrid Worker exploitation | On-prem code execution | az cli | T1059 (Command and Scripting Interpreter) | Hoog |
| Global Admin escalation | elevateAccess API | az rest | T1098.003 (Additional Cloud Roles) | Laag (als je GA bent) |
In het volgende hoofdstuk verlaten we de Azure-wereld en betreden we het territorium van Google — een plek waar alles draait om projecten, service accounts, en het onuitputtelijke vertrouwen dat Google heeft in zijn eigen infrastructuur. Spoiler: dat vertrouwen is niet altijd gerechtvaardigd.
Verder lezen in de kennisbank
Deze artikelen in het portaal geven je meer achtergrond en praktische context:
- De cloud — andermans computer, jouw verantwoordelijkheid
- Containers en Docker — wat het is en waarom je het moet beveiligen
- Encryptie — de kunst van het onleesbaar maken
- Least Privilege — geef mensen alleen wat ze nodig hebben
Je hebt een account nodig om de kennisbank te openen. Inloggen of registreren.
Gerelateerde securitymaatregelen
Deze artikelen bieden aanvullende context en verdieping: