# Cloud Scan: handleiding voor het verhelpen van kwetsbaarheden

De Cloud Scan analyseert je cloudomgeving (Microsoft Azure / Entra ID / Microsoft 365, AWS of Google Cloud) en markeert verkeerd geconfigureerde instellingen die door aanvallers kunnen worden misbruikt. In tegenstelling tot kwetsbaarheden in software die moeten worden gepatcht, zijn de meeste cloudbevindingen **configuratieproblemen** die rechtstreeks kunnen worden opgelost vanuit de beheerdersconsole van je cloudprovider.

Elke sectie bevat:

* **Wat het betekent:** een uitleg van het risico in eenvoudige taal
* **Wat de scan controleert:** de specifieke voorwaarde die de waarschuwing activeert
* **Hoe op te lossen:** stapsgewijze instructies

## Microsoft Azure / Entra ID / Microsoft 365

Deze bevindingen zijn van toepassing op organisaties die Microsoft-cloudservices gebruiken (Azure-abonnementen, Microsoft 365, Entra ID / Azure Active Directory).

### Beheerdersgebruikers met MFA uitgeschakeld

**Ernst: Hoog**

#### Wat het betekent

Multi-Factor Authentication (MFA) voegt een tweede beveiligingslaag toe bij het inloggen — doorgaans een code uit een telefoonapp of een hardwaresleutel. Zonder MFA krijgt een aanvaller, als hij het wachtwoord van een beheerder raadt of steelt (via phishing, een datalek of brute force), volledige toegang tot je cloudomgeving zonder dat er nog iets is dat hem tegenhoudt.

Deze bevinding markeert **beheerdersaccounts waarvoor MFA niet is ingeschakeld**. Dit zijn de meest gevoelige accounts binnen je organisatie — een gecompromitteerd beheerdersaccount kan leiden tot volledige controle over je e-mail, bestanden en infrastructuur.

#### Wat de scan controleert

De scan onderzoekt alle gebruikers met bevoorrechte rollen (Global Administrator, Application Administrator, Security Administrator, enz.) en controleert of ze zich voor MFA hebben geregistreerd. De waarschuwing wordt geactiveerd als MFA voor een bevoorrechte gebruiker is uitgeschakeld.

#### Hoe op te lossen

**Optie A: Security Defaults inschakelen (het eenvoudigst)**

Als je nog geen Conditional Access-beleid hebt, is Security Defaults de snelste manier om MFA voor alle gebruikers af te dwingen:

1. Ga naar [Entra ID](https://entra.microsoft.com) > `Identiteit` > `Overzicht` > `Eigenschappen`.
2. Klik op `Beveiligingsstandaarden beheren`.
3. Instellen op `Ingeschakeld`.

**Optie B: Conditional Access gebruiken (aanbevolen voor grotere organisaties)**

1. Ga naar [Entra ID](https://entra.microsoft.com) > `Beveiliging` > `Voorwaardelijke toegang`.
2. Klik op `+ Nieuw beleid`.
3. Noem het: "MFA vereisen voor beheerders".
4. Onder `Gebruikers`: selecteer `Directoryrollen` en kies alle beheerdersrollen (Global Administrator, Security Administrator, enz.).
5. Onder `Toekennen`: selecteer `Multifactorauthenticatie vereisen`.
6. Stel het beleid in op `Aan` en sla op.

Nadat je het beleid hebt gemaakt, wordt elke beheerder bij de volgende inlog gevraagd MFA in te stellen.

### Schaduwbeheerders

**Ernst: Laag**

#### Wat het betekent

Een "Shadow Admin" is een gebruiker die beheerdersrechten heeft zonder dat het overduidelijk een beheerder is. Ze hebben rollen zoals "Password Administrator" of "Helpdesk Administrator" die aanzienlijke machtigingen geven (bijv. iemands wachtwoord resetten, toepassingen beheren), maar mogelijk vallen ze niet onder dezelfde beveiligingscontroles (MFA, toegangsbeoordelingen) als de officieel erkende beheerders.

Het risico is dat deze accounts onder de radar blijven: ze verschijnen niet in de lijst "Global Administrators", maar een aanvaller die er een compromitteert kan nog steeds grote schade aanrichten — zoals het wachtwoord van een Global Admin resetten en de hele tenant overnemen.

#### Wat de scan controleert

De scan identificeert gebruikers die aan een van deze Entra ID-rollen zijn toegewezen:

* Toepassingsbeheerder
* Verificatiebeheerder
* Beheerder van cloudtoepassingen
* Helpdeskbeheerder
* Wachtwoordbeheerder
* Beheerder van geprivilegieerde verificatie
* Beheerder van geprivilegieerde rollen
* Gebruikersaccountbeheerder

Gebruikers die ook de rol Global Administrator hebben, worden uitgesloten (zij zijn al zichtbaar als volledige beheerders).

#### Hoe op te lossen

1. Ga naar [Entra ID](https://entra.microsoft.com) > `Rollen en beheerders`.
2. Klik op elk van de hierboven vermelde rollen.
3. Controleer de lijst met toegewezen gebruikers. Vraag voor elke gebruiker:
   * **Heeft deze persoon deze rol echt nodig?** Zo niet, verwijder ze.
   * **Is dit een permanente toewijzing?** Overweeg het gebruik van [Privileged Identity Management (PIM)](https://learn.microsoft.com/en-us/entra/id-governance/privileged-identity-management/) voor just-in-time-toegang in plaats van permanente roltoewijzingen.
   * **Is MFA voor deze gebruiker ingeschakeld?** Schaduwbeheerders moeten dezelfde MFA-vereisten hebben als volledige beheerders.

### Hoog percentage bevoorrechte gebruikers

**Ernst: Gemiddeld**

#### Wat het betekent

Meer dan **10% van je gebruikers** heeft beheerdersrollen in Entra ID. Dit is een teken dat beheerdersrechten te ruim zijn toegekend — misschien uit gemak, of omdat tijdelijke toegang nooit is ingetrokken.

Elk beheerdersaccount is een mogelijke toegangspoort voor een aanvaller. Het verminderen van het aantal beheerders beperkt de impact als één account wordt gecompromitteerd.

#### Wat de scan controleert

De scan telt het totale aantal gebruikers met een beheerdersrol en vergelijkt dit met het totale aantal ingeschakelde gebruikers. De waarschuwing wordt geactiveerd als de verhouding hoger is dan 10%.

#### Hoe op te lossen

1. Ga naar [Entra ID](https://entra.microsoft.com) > `Rollen en beheerders`.
2. Controleer voor elke beheerdersrol wie eraan is toegewezen.
3. Verwijder gebruikers die geen beheerdersaccess meer nodig hebben.
4. Gebruik voor gebruikers die alleen af en toe beheerdersaccess nodig hebben **Privileged Identity Management (PIM)** voor just-in-time-verhoging.

### Gebruikers met MFA uitgeschakeld

**Ernst: Hoog**

#### Wat het betekent

Sommige gebruikers in je organisatie hebben MFA niet ingeschakeld. Zonder MFA is een gestolen of geraden wachtwoord alles wat een aanvaller nodig heeft om toegang te krijgen tot hun mailbox, bestanden en alle applicaties waar ze toegang toe hebben.

Zo gebeuren de meeste business-emailcompromis (BEC)-aanvallen: een aanvaller phisht het wachtwoord van een gebruiker, logt in zonder MFA en verstuurt vervolgens frauduleuze e-mails of steelt gevoelige gegevens.

#### Wat de scan controleert

De scan controleert de MFA-registratiestatus van alle ingeschakelde gebruikers. Elke gebruiker met `isMfaRegistered = false` activeert de waarschuwing.

#### Hoe op te lossen

De meest effectieve aanpak is MFA voor alle gebruikers af te dwingen via Conditional Access of Security Defaults (zie hierboven "Beheerdersgebruikers met MFA uitgeschakeld" voor stapsgewijze instructies).

Om te controleren welke gebruikers MFA missen:

1. Ga naar [Entra ID](https://entra.microsoft.com) > `Beveiliging` > `Verificatiemethoden` > `Gegevens voor gebruikersregistratie`.
2. Filter op "MFA-capabel = Nee" om te zien wie zich niet heeft geregistreerd.

### Geen beveiligingscontact ingesteld

**Ernst: Gemiddeld**

#### Wat het betekent

Microsoft Defender for Cloud kan beveiligingsdreigingen in je Azure-omgeving detecteren (verdachte inlogpogingen, malware, blootgestelde services, enz.). Maar als er geen e-mailadres is geconfigureerd, gaan deze waarschuwingen nergens heen — niemand wordt op de hoogte gebracht en aanvallen kunnen onopgemerkt blijven.

#### Wat de scan controleert

De scan controleert of er ten minste één beveiligingscontact-e-mailadres is geconfigureerd in de meldingsinstellingen van Microsoft Defender for Cloud.

#### Hoe op te lossen

1. Ga naar het [Azure Portal](https://portal.azure.com).
2. Ga naar `Microsoft Defender for Cloud` > `Omgevingsinstellingen`.
3. Selecteer je abonnement.
4. Klik op `E-mailmeldingen`.
5. Vul in:
   * **Aanvullende e-mailadressen:** voeg een distributielijst toe (bijv. `security@yourcompany.com`) — gebruik liever niet het e-mailadres van één persoon.
   * **Meldingstypen:** minstens waarschuwingen met "Hoge ernst".
6. Klik op `Opslaan`.

### Geen rol voor het beheren van vergrendelingen van resources

**Ernst: Laag**

#### Wat het betekent

Azure **Vergrendelingen van resources** beschermen kritieke resources (databases, virtuele netwerken, opslagaccounts) tegen per ongeluk verwijderen of wijzigen. Zelfs een beheerder met volledige machtigingen kan een vergrendelde resource niet verwijderen zonder eerst de vergrendeling op te heffen.

Deze bevinding betekent dat niemand in je organisatie een rol heeft toegewezen gekregen die specifiek bedoeld is voor het beheren van deze vergrendelingen. Zonder iemand die hiervoor verantwoordelijk is, worden vergrendelingen mogelijk niet consistent gebruikt of blijven kritieke resources onbeschermd.

#### Wat de scan controleert

De scan zoekt naar een aangepaste RBAC-rol met machtigingen om resourcevergrendelingen te beheren (`Microsoft.Authorization/locks/*`). Als zo'n rol niet bestaat of niemand eraan is toegewezen, wordt de waarschuwing geactiveerd.

#### Hoe op te lossen

1. Ga naar het [Azure Portal](https://portal.azure.com) > `Abonnementen` > selecteer je abonnement.
2. Ga naar `Toegangsbeheer (IAM)` > `Rollen` > `+ Toevoegen` > `Aangepaste rol toevoegen`.
3. Maak een rol met de volgende machtigingen:

```
Microsoft.Authorization/locks/read
Microsoft.Authorization/locks/write
Microsoft.Authorization/locks/delete
```

4. Wijs deze rol toe aan een vertrouwde beheerder.
5. Laat die beheerder **Vergrendelingen verwijderen** toepassen op kritieke resources (databases, opslagaccounts, key vaults).

### Key Vault niet herstelbaar

**Ernst: Hoog**

#### Wat het betekent

Azure Key Vault slaat je geheimen, encryptiesleutels en certificaten op. Als iemand per ongeluk (of kwaadwillig) een Key Vault verwijdert, verlies je al deze. Zonder **soft-delete** en **purge protection** ingeschakeld is, is een verwijderde Key Vault voor altijd weg — herstel is niet mogelijk.

#### Wat de scan controleert

De scan controleert of beide beschermingen zijn ingeschakeld:

* **Soft-delete:** verwijderde key vaults worden gedurende een bewaartermijn bewaard (standaard 90 dagen) en kunnen worden hersteld.
* **Purge protection:** zelfs na soft-delete kan de kluis tijdens de bewaartermijn niet permanent worden gewist.

#### Hoe op te lossen

1. Ga naar het [Azure Portal](https://portal.azure.com) > `Key vaults` > selecteer je kluis.
2. Ga naar `Eigenschappen`.
3. Schakel `Soft-delete` (let op: dit is nu standaard ingeschakeld voor nieuwe kluizen en kan niet worden uitgeschakeld).
4. Schakel `Purge protection`.
5. Klik op `Opslaan`.

Voor bestaande kluizen via Azure CLI:

```bash
az keyvault update --name <vault-name> --enable-purge-protection true
```

### HTTPS niet afgedwongen op App Service

**Ernst: Hoog**

#### Wat het betekent

Je Azure App Service (website of API) accepteert ongecodeerd HTTP-verkeer. Dit betekent dat gegevens die tussen gebruikers en je toepassing worden verzonden — inclusief inloggegevens, persoonlijke informatie en sessietokens — kunnen worden onderschept door iedereen op het netwerkpad.

#### Wat de scan controleert

De scan controleert de `HTTPS Only` instelling op elke App Service. Als deze is ingesteld op `Uit`, wordt de waarschuwing geactiveerd.

#### Hoe op te lossen

1. Ga naar het [Azure Portal](https://portal.azure.com) > `App Services` > selecteer je app.
2. Ga naar `Instellingen` > `Configuratie` > `Algemene instellingen`.
3. Stel in `HTTPS Only` op `Aan`.
4. Klik op `Opslaan`.

### Onveilige TLS-versie op App Service

**Ernst: Hoog**

#### Wat het betekent

Je App Service accepteert verbindingen met TLS 1.0 of 1.1, verouderde encryptieprotocollen met bekende kwetsbaarheden. Moderne browsers en beveiligingsstandaarden vereisen TLS 1.2 of hoger.

#### Wat de scan controleert

De minimale TLS-versie die op de App Service is geconfigureerd. De waarschuwing wordt geactiveerd als deze lager is dan 1.2.

#### Hoe op te lossen

1. Ga naar het [Azure Portal](https://portal.azure.com) > `App Services` > selecteer je app.
2. Ga naar `Instellingen` > `Configuratie` > `Algemene instellingen`.
3. Stel in `Minimale TLS-versie` op `1.2`.
4. Klik op `Opslaan`.

### SQL / PostgreSQL / MySQL: SSL-afdwinging uitgeschakeld

**Ernst: Hoog**

#### Wat het betekent

Je databaseserver accepteert ongecodeerde verbindingen. Zonder SSL/TLS-afdwinging kunnen inloggegevens en gegevens die tussen je toepassing en de database worden verzonden, op het netwerk worden onderschept.

#### Hoe op te lossen

**Voor Azure Database for MySQL:**

1. Ga naar [Azure Portal](https://portal.azure.com) > `Azure Database voor MySQL` > selecteer je server.
2. Ga naar `Verbindingsbeveiliging`.
3. Stel in `SSL-verbinding afdwingen` op `INGESCHAKELD`.
4. Klik op `Opslaan`.

**Voor Azure Database for PostgreSQL:**

1. Ga naar [Azure Portal](https://portal.azure.com) > `Azure Database voor PostgreSQL` > selecteer je server.
2. Ga naar `Verbindingsbeveiliging`.
3. Stel in `SSL-verbinding afdwingen` op `INGESCHAKELD`.
4. Klik op `Opslaan`.

### Openbare Blob-container

**Ernst: Hoog**

#### Wat het betekent

Een of meer van je Azure Storage-blobcontainers is geconfigureerd voor **openbare toegang**, wat betekent dat iedereen op internet de bestanden erin kan lezen zonder authenticatie. Dit is een veelvoorkomende oorzaak van datalekken.

#### Hoe op te lossen

1. Ga naar [Azure Portal](https://portal.azure.com) > `Opslagaccounts` > selecteer het account.
2. Ga naar `Configuratie`.
3. Stel in `Openbare Blob-toegang toestaan` op `Uitgeschakeld`.
4. Of, om individuele containers te herstellen: ga naar `Containers`, selecteer de container en wijzig `Openbaar toegangsniveau` op `Privé`.

### Schijven van virtuele machines niet versleuteld

**Ernst: Hoog**

#### Wat het betekent

De schijven van je virtuele machine zijn niet versleuteld. Als de onderliggende fysieke hardware wordt gecompromitteerd, buiten gebruik wordt gesteld of onjuist wordt afgevoerd, kunnen de gegevens op die schijven in leesbare tekst worden uitgelezen.

#### Hoe op te lossen

1. Ga naar [Azure Portal](https://portal.azure.com) > `Virtuele machines` > selecteer de VM.
2. Ga naar `Schijven` > `Aanvullende instellingen`.
3. Schakel `Azure Disk Encryption` (ADE) of `Server-side versleuteling met door de klant beheerde sleutels`.
4. Schakel voor nieuwe VM's versleuteling in tijdens het aanmaken.

## Amazon Web Services (AWS)

### Rootaccount zonder MFA

**Ernst: Kritiek**

#### Wat het betekent

Het AWS **rootaccount** heeft onbeperkte toegang tot alles in je AWS-account — facturering, alle services, alle gegevens. Het is het krachtigste account in je hele cloudopzet. Zonder MFA betekent een gecompromitteerd rootwachtwoord volledige overname.

#### Hoe op te lossen

1. Meld u aan bij de [AWS Console](https://console.aws.amazon.com/) als root.
2. Ga naar `IAM` > `Dashboard` > `MFA activeren op je rootaccount`.
3. Klik op `MFA beheren` > `MFA activeren`.
4. Kies `Virtueel MFA-apparaat` (aanbevolen: gebruik een hardwaresleutel zoals YubiKey voor maximale beveiliging).
5. Scan de QR-code met je authenticator-app.
6. Voer twee opeenvolgende codes in en klik op `MFA toewijzen`.

Volg na het inschakelen van MFA de AWS-best practices:

* **Gebruik het rootaccount nooit voor dagelijkse taken.** Maak IAM-gebruikers aan of gebruik in plaats daarvan IAM Identity Center.
* Bewaar de root-inloggegevens op een veilige, offline locatie (kluis, wachtwoordmanager).

### Rootaccount recent gebruikt

**Ernst: Hoog**

#### Wat het betekent

Er is binnen de afgelopen 90 dagen met het rootaccount ingelogd. Net als de ingebouwde Administrator in Active Directory moet het rootaccount alleen voor noodgevallen worden gebruikt (bijv. accountherstel, wijzigingen in de facturering). Dagelijks werk moet worden uitgevoerd met IAM-gebruikers of -rollen met passende machtigingen.

#### Hoe op te lossen

1. Maken **IAM-gebruikers** of gebruik **IAM Identity Center (SSO)** voor dagelijkse administratie.
2. Ken alleen de machtigingen toe die elke persoon nodig heeft (principe van minimale bevoegdheid).
3. Stop met het gebruik van het rootaccount voor routinetaken.
4. De waarschuwing wordt verwijderd na 90 dagen inactiviteit op het rootaccount.

### IAM-gebruikers zonder MFA

**Ernst: Gemiddeld**

#### Wat het betekent

Eén of meer IAM-gebruikers kunnen zonder MFA inloggen op de AWS Console. Als hun wachtwoord wordt gecompromitteerd, krijgt de aanvaller volledige toegang tot alles wat die gebruiker in AWS kan doen.

#### Hoe op te lossen

1. Ga naar `IAM` > `Gebruikers` > selecteer de gebruiker.
2. Ga naar het `Beveiligingsreferenties` tabblad.
3. Onder `Multifactorauthenticatie (MFA)`, klik op `Beheren`.
4. Wijs een MFA-apparaat toe.

Maak om MFA voor alle gebruikers af te dwingen een IAM-beleid dat alle acties weigert tenzij MFA aanwezig is:

1. Ga naar `IAM` > `Beleid` > `Beleid maken`.
2. Gebruik het [AWS MFA-afdwingingsbeleid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only.html) sjabloon.
3. Koppel het aan alle gebruikersgroepen.

## Google Cloud Platform (GCP)

### Publiek toegankelijk cloudopslag-bucket

**Ernst: Hoog**

#### Wat het betekent

Een Google Cloud Storage-bucket is toegankelijk voor het openbare internet. Iedereen met de URL kan de bestanden downloaden. Dit is een veelvoorkomende oorzaak van datalekken.

#### Hoe op te lossen

1. Ga naar [Google Cloud Console](https://console.cloud.google.com) > `Cloud Storage` > `Buckets`.
2. Selecteer de bucket.
3. Ga naar het `Machtigingen` tabblad.
4. Verwijder eventuele vermeldingen voor `allUsers` of `allAuthenticatedUsers`.
5. Ga om toekomstige openbare toegang te voorkomen naar de `Instellingen` van de bucket en schakel `Openbare toegang voorkomen`.

### IAM-primitive rollen in gebruik

**Ernst: Gemiddeld**

#### Wat het betekent

Iemand in je GCP-organisatie gebruikt **primitive rollen** (Owner, Editor of Viewer). Deze zijn erg breed — "Editor" geeft bijvoorbeeld schrijfrechten op bijna alles in het project. Google raadt aan om **vooraf gedefinieerde rollen** in plaats daarvan te gebruiken, die alleen de specifieke benodigde machtigingen geven.

#### Hoe op te lossen

1. Ga naar [Google Cloud Console](https://console.cloud.google.com) > `IAM & Beheer` > `IAM`.
2. Identificeer gebruikers/serviceaccounts met `Owner`, `Editor`, of `Viewer` rollen.
3. Vervang ze door specifiekere vooraf gedefinieerde rollen (bijv. `roles/storage.admin` in plaats van `Editor`).
4. Gebruik het [IAM Recommender](https://cloud.google.com/iam/docs/recommender-overview) om suggesties te krijgen voor het afstemmen van machtigingen op de juiste omvang.

### Openbare toegang tot Cloud SQL

**Ernst: Hoog**

#### Wat het betekent

Je Cloud SQL-database-instantie staat verbindingen toe vanaf elk IP-adres op internet (`0.0.0.0/0`). Dit stelt de database bloot aan brute-forceaanvallen en misbruik van eventuele kwetsbaarheden.

#### Hoe op te lossen

1. Ga naar [Google Cloud Console](https://console.cloud.google.com) > `SQL` > selecteer je instantie.
2. Ga naar `Verbindingen` > `Netwerken`.
3. Onder `Geautoriseerde netwerken`, verwijder `0.0.0.0/0` of een ander te ruim CIDR-bereik.
4. Voeg alleen de specifieke IP-adressen toe die toegang nodig hebben.
5. Nog beter, gebruik **Cloud SQL Auth Proxy** of **Privé IP** om veilig verbinding te maken zonder de instantie publiek bloot te stellen.

## Veelgestelde vragen

#### Hoe vaak draait de Cloud Scan?

De Cloud Scan draait automatisch op regelmatige basis. Nadat je een oplossing hebt toegepast, kan het tot 24 uur duren voordat de volgende scan de wijzigingen oppikt. Je kunt ook een nieuwe scan starten vanuit het Stoïk Protect-portaal.

#### Ik heb de bevinding opgelost, maar deze wordt nog steeds weergegeven. Waarom?

De meest voorkomende redenen:

* **De scan is nog niet opnieuw uitgevoerd:** wacht op de volgende scancyclus.
* **De oplossing is op de verkeerde resource toegepast:** controleer of je het juiste abonnement, de juiste resourcegroep of het juiste project hebt gewijzigd.
* **Er zijn meerdere instanties:** hetzelfde probleem kan op meerdere resources bestaan (bijv. meerdere opslagaccounts met openbare toegang).

#### Heb ik Global Admin-rechten nodig om deze problemen op te lossen?

Voor de meeste Azure-bevindingen is ten minste **Security Administrator** of **Contributor** rol op het relevante abonnement vereist. Entra ID-bevindingen (MFA, Shadow Admin) vereisen **Global Administrator** of **Beheerder van geprivilegieerde rollen**.

Voor AWS heb je IAM-machtigingen nodig om de relevante services te wijzigen. Voor GCP heb je de juiste IAM-rollen nodig.

#### Kunnen bevindingen worden verwijderd?

Als een bevinding een geaccepteerd risico is of een vals-positief resultaat (bijv. een opslagbucket die expres openbaar is voor een statische website), neem dan contact op met Stoïk support om dit als uitzondering te documenteren.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.stoik.io/help/help-nl/preventietools/what-is-the-cloud-scan/how-to-read-results-on-the-cloud-scan/cloud-scan-vulnerability-remediation-guide.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
