Architectuur¶
Deze pagina beschrijft het globale ontwerp van het Base Fabric Data Platform: hoe de deployments over subscriptions zijn verdeeld, wat elke tier aanmaakt, en hoe netwerk, encryptie en identity werken. Ze is geschreven voor het platformteam en voor workload teams die willen begrijpen wat er namens hen draait.
Referentieontwerp, jouw deployment kan afwijken
Het onderstaande ontwerp komt uit de code van de oplossing en de HLD van de oplossing. Namen, SKU's en optionele onderdelen hangen af van je deployment.
Overzicht¶
flowchart TB
subgraph shared["Shared subscription (spoke)"]
cap["Fabric capacities"]
pause["Logic Apps: pause / resume (optional)"]
purview["Microsoft Purview (optional)"]
end
subgraph env["Environment subscription (spoke), one per environment"]
gw["VNet data gateway"]
st["Storage account (data lake, CMK)"]
pep["Private endpoints"]
graf["Managed Grafana (optional)"]
end
subgraph fabric["Microsoft Fabric tenant"]
ws["Workspaces: OneLake, Lakehouses, Warehouses, pipelines"]
end
kv["Spoke Key Vault: key + connection secrets"]
law["Spoke Log Analytics"]
src["Data sources: Azure, on-premises"]
cap -->|"capacity assigned"| ws
ws -->|"outbound only via"| gw
gw --> src
ws -->|"managed private endpoints"| src
pep --> ws
ws --> st
st --> kv
pause --> cap
graf --> law
Subscriptions en tiers¶
Het platform gebruikt één subscription per omgeving en één gedeelde subscription. Elke subscription is een spoke van het platform (Spoke canvas) en levert het virtuele netwerk, het private endpoint-subnet, de Key Vault, het storage account en de Log Analytics workspace waarop de oplossing voortbouwt.
| Tier | Subscription | Terraform-root | Wat het aanmaakt |
|---|---|---|---|
| Shared | Shared | infra/deploy/shared |
Resourcegroep, één of meer Fabric capacities, de custom rol Fabric Capacity Operator, optioneel Logic Apps voor het pauzeren en hervatten van de capacity, met alerts |
| Workload | Één per omgeving | infra/deploy/workload |
Resourcegroep, één VNet data gateway per capacity key, de Fabric workspaces met hun items en connections, het storage account van de data lake, de key en de private endpoints |
| Governance | Shared | infra/deploy/governance |
Microsoft Purview-account (Governance) |
| Observability | Per omgeving | infra/deploy/observability |
Azure Managed Grafana, alertregels en optioneel gelaagde logopslag (Observability) |
Elke root module heeft een eigen Terraform state. De shared tier wordt als eerste gedeployd, omdat de workload tier de
capacities op naam opzoekt. De capacities staan bewust in de shared subscription: één capacity kan één of meer omgevingen
bedienen, wat een lagere kostenvoetafdruk geeft, en een aparte capacity per omgeving blijft mogelijk omdat elke workspace de
capacity noemt die hij gebruikt (capacity_key).
Naamgeving en tags¶
Namen volgen de Azure naming-module met een suffix van <workload>, een korte omgevingsnaam en een korte regionaam.
| Item | Waarde |
|---|---|
| Naam van de workload | Maximaal 8 tekens |
| Omgevingen | development, test, acceptance, production (shared voor de shared en governance tiers), ingekort tot dev, tst, acc, prd, shrd |
| Regio's | westeurope, northeurope, swedencentral, uksouth (ingekort tot weu, neu, sec, uks) |
| Fabric capacity | fc + workload + omgeving + regio + capacity key |
| Workspace | <workload>-<env>-<region>-<workspace key> |
| Gateway | VNet Gateway - <environment> - <capacity key> |
| Private Link Service voor Fabric | privateLinkServicesForFabric-<workspace name> |
| Tags | Environment, Workload en CostCentre. De module zet CostCentre op een vaste waarde, controleer die voor je platform (Naamgeving en tags). |
Fabric capacity¶
Per item in fabric_capacities van de shared tier wordt een capacity aangemaakt, met een SKU van F2 tot F2048. De
capacity-beheerders worden ingesteld vanuit een lijst met principal-ID's: de service principals van de spokes die workspaces
deployen, en optioneel gebruikers. Fabric staat in deze rol alleen service principals en gebruikers toe, geen groepen, dus een
team dat capacity-beheerrechten nodig heeft moet persoon voor persoon worden toegevoegd.
Capacities kunnen worden gepauzeerd om kosten te besparen, zie Kostenoptimalisatie en Capacity auto-pause.
Workspaces¶
Elke workspace wordt aangemaakt met een system-assigned managed identity en aan een capacity toegewezen. De workload tier voegt per workspace toe:
- roltoewijzingen voor maximaal vier Entra ID-groepen (Toegang en rollen),
- een private endpoint naar de workspace (Private Link Service voor Fabric, sub-resource
workspace) in het subnet voor private endpoints, - een network communication policy en een gatewayregel (Netwerkpolicy van de workspace),
- optioneel Lakehouses (met of zonder schema-ondersteuning) en Warehouses (met een collation uit een vaste lijst),
- optioneel connections (Connectiviteit),
- een optionele Git-koppeling.
In de basisopzet is de development workspace aan Git gekoppeld en de production workspace niet. Production krijgt zijn inhoud via CI/CD-pipelines, wat een beheerstere opzet geeft dan een directe Git-integratie.
Data pipelines
De workspace-module kan lege Fabric data pipelines aanmaken (data_pipelines), maar de workload root module geeft die
instelling niet door. Pipelines worden normaal gesproken door het datateam in de workspace gemaakt.
Netwerk¶
flowchart LR
dev["Developer (VPN / ExpressRoute)"] --> pe["Private endpoint (spoke PE subnet)"]
pe --> ws["Fabric workspace"]
ws -->|"VNet data gateway"| spokenet["Spoke VNet"]
spokenet --> azsrc["Azure data sources"]
spokenet -->|"ExpressRoute / VPN"| onprem["On-premises sources"]
ws -->|"managed private endpoint"| azres["Azure resource (Private Link)"]
ws -->|"managed private endpoint"| ws2["Other Fabric workspace"]
- Fabric naar databron, optie 1: de VNet data gateway. Die geeft uitgaande connectiviteit naar het spoke-VNet, en vandaar naar on-premises systemen. Connections worden ingesteld om de gateway te gebruiken, en de workspace is beperkt tot de aangewezen gateway. De gateway gebruikt een eigen subnet van de spoke en wordt aangemaakt met één member gateway en een slaapstand na 30 minuten inactiviteit.
- Fabric naar databron, optie 2: managed private endpoints. Een directe private verbinding per resource (bijvoorbeeld Storage of SQL) via Private Link. Daarvoor is meestal de gateway niet nodig.
- Azure naar Fabric. Private endpoints verbinden het spoke-VNet met de workspaces. De DNS-resolutie van deze endpoints wordt gedaan door de private DNS zones die het platform beheert (via policy).
- Developers. De workspaces zijn geïsoleerd in het platformnetwerk, dus developers hebben VPN of ExpressRoute nodig.
- Git. Een koppeling met GitHub vraagt om een uitgaande uitzondering, die het platform alleen toepast op workspaces met een Git-koppeling.
Storage account en encryptie¶
De workload tier maakt per omgeving één storage account aan:
| Instelling | Waarde |
|---|---|
| Kind en tier | BlockBlobStorage, Premium, hierarchical namespace aan |
| Replicatie | ZRS |
| Encryptie | Customer-managed key in de Key Vault van de spoke (RSA 4096) via een user-assigned identity met de rol Key Vault Crypto Service Encryption User, plus infrastructure encryption |
| Key rotation | Rotatiepolicy met een levensduur van één jaar, automatische rotatie één maand voor het verlopen |
| Authenticatie | Shared access keys uitgeschakeld, standaard OAuth |
| Netwerk | Standaardactie Deny met bypass voor Azure-services, private endpoints voor blob en dfs |
| Databescherming | Blob soft delete 90 dagen, container soft delete 95 dagen, change feed aan, versioning uit |
| Containers | Eén privé container per ADLS-connection |
Vlag voor publieke netwerktoegang
De code zet public_network_access_enabled = true op het storage account, samen met een standaard firewallactie Deny. In
de praktijk blokkeert de firewall het publieke pad, maar controleer wat je platformpolicy verwacht.
Identity¶
- Toegang tot de workspace loopt via Entra ID-groepen per rol. Zie Toegang en rollen.
- Deployment identity: de service principal van de spoke deployt de oplossing. Die heeft onder meer rechten nodig om keys aan te maken en secrets te lezen in de Key Vault van de spoke, en de rol Storage Blob Data Contributor op de data lake (de module wijst die toe aan de huidige aanroeper). Voor de capacity-beheerders heeft hij Microsoft Graph-applicatiemachtigingen nodig, zie Randvoorwaarden.
- Toegang tot databronnen: voor bronnen met Entra ID-authenticatie (Azure Storage, SQL) wordt een service principal gebruikt. Standaard is dat de service principal van de spoke, maar er kan naar een aparte worden verwezen. Die krijgt toegang tot de bron buiten deze oplossing. Voor bronnen zonder Entra ID-authenticatie worden basiscredentials of keys in de Key Vault opgeslagen en op naam gerefereerd.
- Automatiseringsidentities: de Logic Apps voor pauzeren en hervatten gebruiken een managed identity met de custom rol Fabric Capacity Operator. Zie Beslissingen.
Deploymentvolgorde¶
- Randvoorwaarden en tenantinstellingen (Platformconfiguratie).
- Shared tier (capacities, optioneel auto-pause).
- Governance tier (optioneel). Die heeft alleen de Log Analytics workspace en het storage account van de spoke nodig, dus hij kan vóór of naast de workload tier draaien.
- Workload tier per omgeving (gateway, workspaces, connections, storage).
- Observability tier per omgeving (optioneel).