Beslissingen¶
Deze pagina vat de architectuurbeslissingen van het Base Fabric Data Platform samen: de geschreven ADR over het RBAC-model, en de ontwerpbeslissingen die in de HLD en de runbooks van de oplossing zijn vastgelegd.
ADR: RBAC-model voor resources voor dataverwerking¶
Status: voorgesteld. Delen ervan zijn in de code geïmplementeerd, zie Wat de code nu doet.
Context¶
De oplossing deployt meerdere resources die deelnemen aan dataverwerking: Fabric capacities, workspaces, storage accounts, Key Vaults, virtual networks en Log Analytics workspaces. Een RBAC-model met least privilege moet het volgende mogelijk maken:
- geautomatiseerde deployment door een service principal,
- data engineers die pipelines ontwikkelen en testen,
- platform engineers die capacity en infrastructuur beheren,
- observability zonder overmatige rechten.
Beslissing¶
| Rol | Scope | Doel | Toegewezen aan |
|---|---|---|---|
| Fabric Capacity Operator (custom) | Gedeelde resource group | Capacities pauzeren en hervatten | Managed identity van de Logic App, groep platform engineers |
| Fabric Workspace Admin | Workspace | Volledig workspacebeheer | Deployment service principal, groep platform engineers |
| Fabric Workspace Contributor | Workspace | Pipelines, notebooks en dataflows ontwikkelen | Groep data engineers |
| Fabric Workspace Member | Workspace | Pipelines draaien, items bekijken | Groep data-analisten |
| Fabric Workspace Viewer | Workspace | Alleen-lezen op rapporten en dashboards | Groep businessgebruikers |
| Storage Blob Data Contributor | Storage account | Lakehouse-data lezen en schrijven | Deployment service principal, groep data engineers |
| Key Vault Secrets User | Key Vault | Secrets voor connections lezen | Deployment service principal, managed identity van de workspace |
| Key Vault Administrator | Key Vault | De lifecycle van secrets beheren | Alleen de deployment service principal |
| Log Analytics Reader | Log Analytics workspace | Pipelinelogs bevragen | Data engineers, platform engineers |
De custom rol Fabric Capacity Operator geeft alleen Microsoft.Fabric/capacities/read, write, suspend/action en
resume/action. Hij is custom omdat geen ingebouwde rol pauzeren en hervatten geeft zonder bredere Contributor-rechten, waarmee je
ook een capacity zou kunnen verwijderen of de SKU wijzigen. Dat is niet acceptabel voor een automatiseringsidentity.
Principes voor het toewijzen:
- Deployment service principal: het minimum voor infrastructure as code (secrets aanmaken, storage configureren, workspaces aanmaken en configureren).
- Managed identity van de Logic App: alleen de custom rol. Hij kan geen secrets lezen, geen storage wijzigen en niet bij de inhoud van workspaces.
- Platform engineers (Entra-groep): Fabric Capacity Operator voor handmatig pauzeren en hervatten, en Log Analytics Reader. Geen directe toegang tot data in Lakehouses of Warehouses.
- Data engineers (Entra-groep): Workspace Contributor, Storage Blob Data Contributor en Key Vault Secrets User, zodat ze pipelines end-to-end kunnen ontwikkelen en testen.
- Data-analisten en businessgebruikers: alleen Workspace Member of Viewer. Geen toegang tot infrastructuur.
Workspace-rollen worden binnen Fabric toegewezen, niet met Azure RBAC, via de resource fabric_workspace_role_assignment.
Gevolgen¶
- Alle role assignments zijn code. Geen ad-hocrechten in de portal.
- De custom rol beperkt de impact van automatiseringsidentities.
- Entra ID-groepen zijn de eenheid van toewijzing. Individuele gebruikers krijgen nooit direct rollen.
- Productie gebruikt hetzelfde model, maar vraagt voor elke groepstoewijzing een expliciete opt-in.
- Een nieuwe persona (bijvoorbeeld een data steward) betekent dat de ADR en de Terraform-variabelen worden bijgewerkt.
Toekomst: voorwaarden op role assignments¶
Als een automatiseringsidentity toegang moet delegeren (bijvoorbeeld een workspace identity die storage-toegang geeft aan pipeline-runs), kunnen voorwaarden op Azure role assignments beperken welke rollen hij mag toewijzen. Dat moet worden beoordeeld als de behoefte ontstaat.
Wat de code nu doet¶
| Onderdeel | In de code |
|---|---|
| Custom rol Fabric Capacity Operator | Geïmplementeerd in de gedeelde tier, met scope op de gedeelde resource group. Toegewezen aan de Logic App-identities en aan capacity_operator_group_ids. |
| Workspace-rollen | Geïmplementeerd voor de groepen Admin, Contributor, Member en Viewer, per workspace |
| Storage-rollen | De deployment identity krijgt Storage Account Contributor en Storage Blob Data Contributor op de data lake. De code wijst geen storage-rollen toe aan data engineers. |
| Key Vault-rollen | De storage identity krijgt Key Vault Crypto Service Encryption User. De code wijst geen Key Vault-rollen toe aan groepen. |
| Log Analytics Reader voor groepen | Niet toegewezen door deze code. De Grafana-identity krijgt Log Analytics Reader en Monitoring Reader. |
Waar de ADR en de code verschillen, is de code wat is gedeployd. Beschouw de tabel met rollen hierboven als het doelmodel.
Ontwerpbeslissingen¶
| Beslissing | Reden |
|---|---|
| Capacities in een gedeelde subscription | Eén capacity kan één of meer omgevingen bedienen, wat de kosten verlaagt. Een aparte capacity per omgeving blijft mogelijk omdat elke workspace zijn capacity noemt. |
| Eén subscription per omgeving, op het spoke canvas | Isolatie per omgeving, waarbij de platformbaseline (netwerk, DNS, policy) van de spoke wordt geërfd |
| Outbound standaard geweigerd, toegestaan via de gateway of managed private endpoints | Voorkomt data-exfiltratie |
| Een VNet data gateway per capacity, per workspace beperkt | Workspaces kunnen alleen de aangewezen gateway gebruiken |
| Git alleen op ontwikkelworkspaces in de basisopzet | Productie wordt via CI/CD gedeployd, wat gecontroleerder is dan een directe Git-integratie |
| Customer-managed key plus infrastructure encryption op de data lake | Controle over de sleutel en dubbele versleuteling at rest |
| Credentials alleen in Key Vault | Nooit in code of configuratie. Connections verwijzen op naam naar secrets. |
| Optionele Admin-groep per workspace | Het workload team beheert gebruikers en instellingen van de workspace zonder ticket, terwijl network policy en capacity bij het platform blijven |
| Terraform als enige bron van waarheid | Reproduceerbaar, traceerbaar, consistent. Handmatige wijzigingen worden teruggedraaid. |
| Auto-pause is opt-in en hervatten is standaard handmatig | Bespaart kosten voor non-productiecapacities zonder productie te riskeren of gebruikers te verrassen |
| Auto-pause gebruikt een custom rol met least privilege | Zie de ADR hierboven |
| Purview als gedeelde infrastructuur, automatische Fabric-registratie | Eén catalogus voor alle workspaces, geen handmatige registratie van bronnen |
| Aparte Grafana-groepen naast de Fabric-groepen | Andere blast radius |
| Grafana wordt als eigen tier met eigen state gedeployd | Onafhankelijke lifecycle. Dashboards zijn code in de configuratierepository. |