Ga naar inhoud

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:

  1. geautomatiseerde deployment door een service principal,
  2. data engineers die pipelines ontwikkelen en testen,
  3. platform engineers die capacity en infrastructuur beheren,
  4. 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:

  1. Deployment service principal: het minimum voor infrastructure as code (secrets aanmaken, storage configureren, workspaces aanmaken en configureren).
  2. 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.
  3. 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.
  4. 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.
  5. 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.