Cloud Overheid — Cloudbeleid, Risicoafweging en BIO Cloud Controls
Beoordeel en implementeer cloudoplossingen voor de overheid conform het rijksbrede cloudbeleid en BIO.
Bron: Rijkscloudbeleid | BIO | Haven
Cloudbeleid overheid
| Aspect |
Detail |
| Rijksbeleid |
"Cloud, tenzij" — cloud is de standaard tenzij er zwaarwegende redenen zijn |
| VNG |
Gemeentelijk cloudbeleid conform BIO en Common Ground |
| Scope |
SaaS, PaaS, IaaS en hybride omgevingen |
| Toezicht |
CIO Rijk, BIT (Bureau ICT-toetsing) |
| Kader |
BIO (BBN2/BBN3), NCSC-richtlijnen, AVG, AI Act |
| EU |
EUCS (EU Cloud Certification Scheme) in ontwikkeling |
Cloud-eerste principes
| Principe |
Betekenis |
| Cloud, tenzij |
Gebruik cloud tenzij risico's onaanvaardbaar zijn |
| Public, tenzij |
Gebruik public cloud tenzij data-classificatie dit niet toelaat |
| Multicloud |
Voorkom afhankelijkheid van een enkele leverancier |
| Open standaarden |
Gebruik open standaarden voor portabiliteit |
| Data in EU |
Persoonsgegevens en gevoelige overheidsdata binnen de EU |
Risicoafweging cloudmigratie
Stap 1: Dataclassificatie
| Classificatie |
Voorbeelden |
Cloud-opties |
| Openbaar |
Open data, publicaties |
Public cloud (SaaS/IaaS) |
| Departementaal vertrouwelijk |
Interne notities, conceptbeleid |
Public cloud met encryptie |
| Staatsgeheim - Confidentieel |
Gevoelig beleid, persoonsgegevens (bijzonder) |
Private/sovereign cloud of on-premises |
| Staatsgeheim - Geheim/Zeer geheim |
Inlichtingen, defensie |
On-premises (geen cloud) |
Stap 2: BIO-classificatie (BBN)
| BBN |
Beschrijving |
Cloud-eisen |
| BBN1 |
Basis |
Standaard cloudbeveiliging voldoende |
| BBN2 |
Verhoogd (standaard voor overheid) |
Aanvullende controls: encryptie, logging, RBAC |
| BBN3 |
Hoog |
Strenge eisen: sovereign cloud, HSM, audit |
Stap 3: Risicobeoordeling
Data-classificatie + BBN → Risiconiveau
|
+-- Laag risico → Public cloud toegestaan
| (open data, BBN1)
|
+-- Midden risico → Public cloud met maatregelen
| (intern, BBN2, persoonsgegevens)
| Maatregelen: encryptie, BYOK, EU-regio, DPA
|
+-- Hoog risico → Private/sovereign cloud
| (bijzondere persoonsgegevens, BBN3)
|
+-- Zeer hoog risico → Geen cloud
(staatsgeheim)
BIO cloud controls
Aanvullende BIO-maatregelen voor cloudgebruik (bovenop standaard BIO):
| Domein |
Control |
BBN2 |
BBN3 |
| Governance |
Cloud-exitstrategie vastgesteld |
Verplicht |
Verplicht |
| Governance |
Strategisch leveranciersmanagement (SLM) |
Verplicht |
Verplicht |
| Governance |
Risicoanalyse cloudgebruik |
Verplicht |
Verplicht |
| Identiteit |
MFA voor cloud-beheertoegang |
Verplicht |
Verplicht |
| Identiteit |
Federatieve identiteit (SSO) |
Aanbevolen |
Verplicht |
| Data |
Encryptie at rest (AES-256) |
Verplicht |
Verplicht |
| Data |
Encryptie in transit (TLS 1.2+) |
Verplicht |
Verplicht |
| Data |
Bring Your Own Key (BYOK) |
Aanbevolen |
Verplicht |
| Data |
Datalocatie EU/EER |
Verplicht |
Verplicht |
| Data |
Geen toegang door buitenlandse overheden (CLOUD Act) |
Risicoafweging |
Verplicht |
| Logging |
Cloudaudit-logging |
Verplicht |
Verplicht |
| Logging |
SIEM-integratie |
Aanbevolen |
Verplicht |
| Netwerk |
Netwerksegmentatie |
Verplicht |
Verplicht |
| Netwerk |
WAF/DDoS-bescherming |
Verplicht |
Verplicht |
| Continuiteit |
Backup met encryptie |
Verplicht |
Verplicht |
| Continuiteit |
Multi-regio beschikbaarheid |
Aanbevolen |
Verplicht |
| Supply chain |
Subverwerkers inzichtelijk |
Verplicht |
Verplicht |
SaaS-beoordelingskader
from dataclasses import dataclass
from enum import Enum
class Risico(Enum):
LAAG = "laag"
MIDDEN = "midden"
HOOG = "hoog"
ZEER_HOOG = "zeer_hoog"
@dataclass
class SaaSBeoordeling:
naam: str
leverancier: str
dataclassificatie: str
bbn: int
persoonsgegevens: bool
bijzondere_gegevens: bool
data_in_eu: bool
encryptie_at_rest: bool
encryptie_in_transit: bool
mfa_beheer: bool
exit_strategie: bool
verwerkersovereenkomst: bool
subverwerkers_inzichtelijk: bool
cloud_act_risico: bool
@property
def risico(self) -> Risico:
if self.bijzondere_gegevens and not self.data_in_eu:
return Risico.ZEER_HOOG
if self.bbn >= 3:
return Risico.HOOG
if self.persoonsgegevens and (self.cloud_act_risico or not self.data_in_eu):
return Risico.HOOG
if self.persoonsgegevens:
return Risico.MIDDEN
return Risico.LAAG
@property
def toegestaan(self) -> bool:
verplicht = [
self.encryptie_at_rest,
self.encryptie_in_transit,
self.mfa_beheer,
self.exit_strategie,
]
if self.persoonsgegevens:
verplicht.extend([
self.verwerkersovereenkomst,
self.data_in_eu,
self.subverwerkers_inzichtelijk,
])
return all(verplicht) and self.risico != Risico.ZEER_HOOG
def rapport(self) -> str:
status = "TOEGESTAAN" if self.toegestaan else "NIET TOEGESTAAN"
return f"{self.naam} ({self.leverancier}): {status} - risico: {self.risico.value}"
Exit-strategie
Elke cloudoplossing vereist een gedocumenteerde exit-strategie:
| Aspect |
Vereiste |
| Data-export |
Alle data exporteerbaar in open formaat (JSON, CSV, SQL) |
| Data-verwijdering |
Leverancier verwijdert alle data na exit (bewijs) |
| Doorlooptijd |
Maximale doorlooptijd voor migratie gedefinieerd |
| Kosten |
Exit-kosten vooraf vastgelegd in contract |
| Alternatief |
Ten minste 1 alternatieve leverancier geidentificeerd |
| Portabiliteit |
Gebruik open standaarden; vermijd proprietary API's |
| Testmigratie |
Jaarlijkse test-exit om haalbaarheid te valideren |
Haven — Container Platform Standaard
| Aspect |
Detail |
| Wat |
Standaard voor Kubernetes-platforms bij de overheid |
| Doel |
Portabiliteit tussen cloud- en on-premises-omgevingen |
| Beheerder |
VNG / Common Ground |
| Basis |
Kubernetes + aanvullende security- en compliance-eisen |
| Certificering |
Haven-compliant platforms worden gecertificeerd |
# Haven-compliant Kubernetes deployment voorbeeld
apiVersion: apps/v1
kind: Deployment
metadata:
name: zaaksysteem
labels:
app: zaaksysteem
haven.commonground.nl/compliant: "true"
spec:
replicas: 2
selector:
matchLabels:
app: zaaksysteem
template:
metadata:
labels:
app: zaaksysteem
spec:
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- name: zaaksysteem
image: registry.organisatie.nl/zaaksysteem:v2.1.0
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
resources:
limits:
memory: "512Mi"
cpu: "500m"
requests:
memory: "256Mi"
cpu: "250m"
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /healthz
port: 8080
readinessProbe:
httpGet:
path: /ready
port: 8080
Verwerkersovereenkomst cloud
| Clausule |
Vereiste |
| Doel |
Concreet beschreven; geen verwerking voor eigen doel leverancier |
| Subverwerkers |
Lijst bijgehouden; voorafgaande toestemming bij wijziging |
| Datalocatie |
EU/EER; expliciet benoemen welke regio's |
| Audit |
Recht op audit door verwerkingsverantwoordelijke |
| Datalekmelding |
Melding aan opdrachtgever binnen 24 uur (strenger dan AVG 72 uur) |
| Einde contract |
Data-retournering en -verwijdering met bewijs |
| Beveiliging |
Minimaal BIO BBN2; ISO 27001 certificering |
Implementatie-checklist
Gerelateerde skills
| Skill |
Wanneer te gebruiken |
| nora-architectuur |
BIO-beveiligingseisen en verplichte open standaarden |
| avg-privacy |
AVG-eisen voor cloudverwerking van persoonsgegevens |
| dpia-assessment |
DPIA uitvoeren bij cloudmigratie met persoonsgegevens |
| gemma-common-ground |
Haven container platform en Common Ground architectuur |
| digitale-soevereiniteit |
CLOUD Act, soevereine hosting, data residency voor AI-workloads |
| overheid-authenticatie |
DigiD/eHerkenning in cloudomgevingen |
Meer informatie
1---2name: cloud-overheid3description: Helpt bij het beoordelen en implementeren van cloudoplossingen voor de Nederlandse overheid conform het rijksbrede cloudbeleid, BIO cloud-controls, SLM en de strategische leveranciersbeoordeling. Biedt richtlijnen voor risicoafweging, exit-strategie, datasoevereiniteit en compliance. Gebruik deze skill wanneer de gebruiker vraagt over 'cloud overheid', 'cloudbeleid', 'cloud policy government', 'SaaS overheid', 'IaaS overheid', 'PaaS overheid', 'cloud risico', 'cloud risk assessment', 'cloud classificatie', 'BIO cloud', 'BIO cloud controls', 'cloud beveiliging overheid', 'cloud security government', 'cloudmigratie overheid', 'cloud migration government', 'exit-strategie cloud', 'vendor lock-in overheid', 'datasoevereiniteit', 'data sovereignty', 'cloud first', 'cloud tenzij', 'SLM', 'Strategisch Leveranciersmanagement', 'hyperscaler overheid', 'AWS overheid', 'Azure overheid', 'Google Cloud overheid', 'sovereign cloud', 'EUCS', 'EU Cloud Certification Scheme', 'Haven', 'container platform overheid', 'Kubernete4---5
6# Cloud Overheid — Cloudbeleid, Risicoafweging en BIO Cloud Controls
7
8Beoordeel en implementeer cloudoplossingen voor de overheid conform het rijksbrede cloudbeleid en BIO.
9
10Bron: [Rijkscloudbeleid](https://www.digitaleoverheid.nl/overzicht-van-alle-onderwerpen/cloud/) | [BIO](https://www.bio-overheid.nl/) | [Haven](https://haven.commonground.nl/)
11
12## Cloudbeleid overheid
13
14| Aspect | Detail |
15|--------|--------|
16| **Rijksbeleid** | "Cloud, tenzij" — cloud is de standaard tenzij er zwaarwegende redenen zijn |
17| **VNG** | Gemeentelijk cloudbeleid conform BIO en Common Ground |
18| **Scope** | SaaS, PaaS, IaaS en hybride omgevingen |
19| **Toezicht** | CIO Rijk, BIT (Bureau ICT-toetsing) |
20| **Kader** | BIO (BBN2/BBN3), NCSC-richtlijnen, AVG, AI Act |
21| **EU** | EUCS (EU Cloud Certification Scheme) in ontwikkeling |
22
23### Cloud-eerste principes
24
25| Principe | Betekenis |
26|---------|-----------|
27| **Cloud, tenzij** | Gebruik cloud tenzij risico's onaanvaardbaar zijn |
28| **Public, tenzij** | Gebruik public cloud tenzij data-classificatie dit niet toelaat |
29| **Multicloud** | Voorkom afhankelijkheid van een enkele leverancier |
30| **Open standaarden** | Gebruik open standaarden voor portabiliteit |
31| **Data in EU** | Persoonsgegevens en gevoelige overheidsdata binnen de EU |
32
33## Risicoafweging cloudmigratie
34
35### Stap 1: Dataclassificatie
36
37| Classificatie | Voorbeelden | Cloud-opties |
38|--------------|-------------|-------------|
39| **Openbaar** | Open data, publicaties | Public cloud (SaaS/IaaS) |
40| **Departementaal vertrouwelijk** | Interne notities, conceptbeleid | Public cloud met encryptie |
41| **Staatsgeheim - Confidentieel** | Gevoelig beleid, persoonsgegevens (bijzonder) | Private/sovereign cloud of on-premises |
42| **Staatsgeheim - Geheim/Zeer geheim** | Inlichtingen, defensie | On-premises (geen cloud) |
43
44### Stap 2: BIO-classificatie (BBN)
45
46| BBN | Beschrijving | Cloud-eisen |
47|-----|-------------|------------|
48| **BBN1** | Basis | Standaard cloudbeveiliging voldoende |
49| **BBN2** | Verhoogd (standaard voor overheid) | Aanvullende controls: encryptie, logging, RBAC |
50| **BBN3** | Hoog | Strenge eisen: sovereign cloud, HSM, audit |
51
52### Stap 3: Risicobeoordeling
53
54```
55Data-classificatie + BBN → Risiconiveau
56 |
57 +-- Laag risico → Public cloud toegestaan
58 | (open data, BBN1)
59 |
60 +-- Midden risico → Public cloud met maatregelen
61 | (intern, BBN2, persoonsgegevens)
62 | Maatregelen: encryptie, BYOK, EU-regio, DPA
63 |
64 +-- Hoog risico → Private/sovereign cloud
65 | (bijzondere persoonsgegevens, BBN3)
66 |
67 +-- Zeer hoog risico → Geen cloud
68 (staatsgeheim)
69```
70
71## BIO cloud controls
72
73Aanvullende BIO-maatregelen voor cloudgebruik (bovenop standaard BIO):
74
75| Domein | Control | BBN2 | BBN3 |
76|--------|---------|------|------|
77| **Governance** | Cloud-exitstrategie vastgesteld | Verplicht | Verplicht |
78| **Governance** | Strategisch leveranciersmanagement (SLM) | Verplicht | Verplicht |
79| **Governance** | Risicoanalyse cloudgebruik | Verplicht | Verplicht |
80| **Identiteit** | MFA voor cloud-beheertoegang | Verplicht | Verplicht |
81| **Identiteit** | Federatieve identiteit (SSO) | Aanbevolen | Verplicht |
82| **Data** | Encryptie at rest (AES-256) | Verplicht | Verplicht |
83| **Data** | Encryptie in transit (TLS 1.2+) | Verplicht | Verplicht |
84| **Data** | Bring Your Own Key (BYOK) | Aanbevolen | Verplicht |
85| **Data** | Datalocatie EU/EER | Verplicht | Verplicht |
86| **Data** | Geen toegang door buitenlandse overheden (CLOUD Act) | Risicoafweging | Verplicht |
87| **Logging** | Cloudaudit-logging | Verplicht | Verplicht |
88| **Logging** | SIEM-integratie | Aanbevolen | Verplicht |
89| **Netwerk** | Netwerksegmentatie | Verplicht | Verplicht |
90| **Netwerk** | WAF/DDoS-bescherming | Verplicht | Verplicht |
91| **Continuiteit** | Backup met encryptie | Verplicht | Verplicht |
92| **Continuiteit** | Multi-regio beschikbaarheid | Aanbevolen | Verplicht |
93| **Supply chain** | Subverwerkers inzichtelijk | Verplicht | Verplicht |
94
95## SaaS-beoordelingskader
96
97```python
98from dataclasses import dataclass
99from enum import Enum
100
101class Risico(Enum):
102 LAAG = "laag"
103 MIDDEN = "midden"
104 HOOG = "hoog"
105 ZEER_HOOG = "zeer_hoog"
106
107@dataclass
108class SaaSBeoordeling:
109 naam: str
110 leverancier: str
111 dataclassificatie: str
112 bbn: int
113 persoonsgegevens: bool
114 bijzondere_gegevens: bool
115 data_in_eu: bool
116 encryptie_at_rest: bool
117 encryptie_in_transit: bool
118 mfa_beheer: bool
119 exit_strategie: bool
120 verwerkersovereenkomst: bool
121 subverwerkers_inzichtelijk: bool
122 cloud_act_risico: bool
123
124 @property
125 def risico(self) -> Risico:
126 if self.bijzondere_gegevens and not self.data_in_eu:
127 return Risico.ZEER_HOOG
128 if self.bbn >= 3:
129 return Risico.HOOG
130 if self.persoonsgegevens and (self.cloud_act_risico or not self.data_in_eu):
131 return Risico.HOOG
132 if self.persoonsgegevens:
133 return Risico.MIDDEN
134 return Risico.LAAG
135
136 @property
137 def toegestaan(self) -> bool:
138 verplicht = [
139 self.encryptie_at_rest,
140 self.encryptie_in_transit,
141 self.mfa_beheer,
142 self.exit_strategie,
143 ]
144 if self.persoonsgegevens:
145 verplicht.extend([
146 self.verwerkersovereenkomst,
147 self.data_in_eu,
148 self.subverwerkers_inzichtelijk,
149 ])
150 return all(verplicht) and self.risico != Risico.ZEER_HOOG
151
152 def rapport(self) -> str:
153 status = "TOEGESTAAN" if self.toegestaan else "NIET TOEGESTAAN"
154 return f"{self.naam} ({self.leverancier}): {status} - risico: {self.risico.value}"
155```
156
157## Exit-strategie
158
159Elke cloudoplossing vereist een gedocumenteerde exit-strategie:
160
161| Aspect | Vereiste |
162|--------|---------|
163| **Data-export** | Alle data exporteerbaar in open formaat (JSON, CSV, SQL) |
164| **Data-verwijdering** | Leverancier verwijdert alle data na exit (bewijs) |
165| **Doorlooptijd** | Maximale doorlooptijd voor migratie gedefinieerd |
166| **Kosten** | Exit-kosten vooraf vastgelegd in contract |
167| **Alternatief** | Ten minste 1 alternatieve leverancier geidentificeerd |
168| **Portabiliteit** | Gebruik open standaarden; vermijd proprietary API's |
169| **Testmigratie** | Jaarlijkse test-exit om haalbaarheid te valideren |
170
171## Haven — Container Platform Standaard
172
173| Aspect | Detail |
174|--------|--------|
175| **Wat** | Standaard voor Kubernetes-platforms bij de overheid |
176| **Doel** | Portabiliteit tussen cloud- en on-premises-omgevingen |
177| **Beheerder** | VNG / Common Ground |
178| **Basis** | Kubernetes + aanvullende security- en compliance-eisen |
179| **Certificering** | Haven-compliant platforms worden gecertificeerd |
180
181```yaml
182# Haven-compliant Kubernetes deployment voorbeeld
183apiVersion: apps/v1
184kind: Deployment
185metadata:
186 name: zaaksysteem
187 labels:
188 app: zaaksysteem
189 haven.commonground.nl/compliant: "true"
190spec:
191 replicas: 2
192 selector:
193 matchLabels:
194 app: zaaksysteem
195 template:
196 metadata:
197 labels:
198 app: zaaksysteem
199 spec:
200 securityContext:
201 runAsNonRoot: true
202 seccompProfile:
203 type: RuntimeDefault
204 containers:
205 - name: zaaksysteem
206 image: registry.organisatie.nl/zaaksysteem:v2.1.0
207 securityContext:
208 allowPrivilegeEscalation: false
209 readOnlyRootFilesystem: true
210 capabilities:
211 drop: ["ALL"]
212 resources:
213 limits:
214 memory: "512Mi"
215 cpu: "500m"
216 requests:
217 memory: "256Mi"
218 cpu: "250m"
219 ports:
220 - containerPort: 8080
221 livenessProbe:
222 httpGet:
223 path: /healthz
224 port: 8080
225 readinessProbe:
226 httpGet:
227 path: /ready
228 port: 8080
229```
230
231## Verwerkersovereenkomst cloud
232
233| Clausule | Vereiste |
234|----------|---------|
235| **Doel** | Concreet beschreven; geen verwerking voor eigen doel leverancier |
236| **Subverwerkers** | Lijst bijgehouden; voorafgaande toestemming bij wijziging |
237| **Datalocatie** | EU/EER; expliciet benoemen welke regio's |
238| **Audit** | Recht op audit door verwerkingsverantwoordelijke |
239| **Datalekmelding** | Melding aan opdrachtgever binnen 24 uur (strenger dan AVG 72 uur) |
240| **Einde contract** | Data-retournering en -verwijdering met bewijs |
241| **Beveiliging** | Minimaal BIO BBN2; ISO 27001 certificering |
242
243## Implementatie-checklist
244
245- [ ] **Dataclassificatie**: alle data geclassificeerd (openbaar/vertrouwelijk/staatsgeheim)
246- [ ] **BIO-classificatie**: BBN-niveau vastgesteld
247- [ ] **Risicoanalyse**: cloudspecifieke risicobeoordeling uitgevoerd
248- [ ] **Datalocatie**: bevestigd dat data in EU/EER wordt opgeslagen
249- [ ] **Encryptie**: at rest (AES-256) en in transit (TLS 1.2+) geactiveerd
250- [ ] **BYOK**: Bring Your Own Key ingericht (BBN3: verplicht)
251- [ ] **MFA**: multi-factor authenticatie voor alle beheertoegang
252- [ ] **Logging**: cloud-auditlogging geactiveerd en gekoppeld aan SIEM
253- [ ] **Verwerkersovereenkomst**: afgesloten conform AVG Art. 28
254- [ ] **Subverwerkers**: lijst inzichtelijk; wijzigingsprocedure afgesproken
255- [ ] **Exit-strategie**: gedocumenteerd; data-export getest; alternatief geidentificeerd
256- [ ] **DPIA**: uitgevoerd als persoonsgegevens worden verwerkt
257- [ ] **SLM**: strategisch leveranciersmanagement ingericht
258- [ ] **Haven**: bij Kubernetes: Haven-compliant deployment
259
260## Gerelateerde skills
261
262| Skill | Wanneer te gebruiken |
263|-------|---------------------|
264| **nora-architectuur** | BIO-beveiligingseisen en verplichte open standaarden |
265| **avg-privacy** | AVG-eisen voor cloudverwerking van persoonsgegevens |
266| **dpia-assessment** | DPIA uitvoeren bij cloudmigratie met persoonsgegevens |
267| **gemma-common-ground** | Haven container platform en Common Ground architectuur |
268| **digitale-soevereiniteit** | CLOUD Act, soevereine hosting, data residency voor AI-workloads |
269| **overheid-authenticatie** | DigiD/eHerkenning in cloudomgevingen |
270
271## Meer informatie
272
273- [Rijkscloudbeleid](https://www.digitaleoverheid.nl/overzicht-van-alle-onderwerpen/cloud/)
274- [BIO](https://www.bio-overheid.nl/) | [BIO cloudthema](https://www.bio-overheid.nl/category/cloud)
275- [Haven](https://haven.commonground.nl/) — container platform standaard
276- [NCSC cloudrichtlijnen](https://www.ncsc.nl/onderwerpen/public-cloud)
277- [ENISA Cloud Security Guide](https://www.enisa.europa.eu/topics/cloud-and-big-data/cloud-security)
278- [EUCS](https://www.enisa.europa.eu/topics/certification/enisa-cloud-services-scheme) — EU Cloud Certification Scheme