Same office-building idea as the ELI5 doc, but now we'll actually walk the floors and watch the data move. We're using a pretend version of Maxim Crane's setup with two business domains (Finance and Operations) and a shared raw-data area.
The Building
Six rooms (workspaces), each one a small department. Each room has one robot living in it β its job is to fetch stuff from rooms above or below so the things in its own room can do their work.
π
BasementBronze-Landing
Lakehouse lh_bronze holding raw files
Connections to outside data sources
π€ Bronze-Bot
π
’ 1st FloorSilver-Curated
Lakehouse lh_silver with cleaned data
Notebooks that do the cleaning
π€ Silver-Bot
π
2nd WestGold-Finance
Warehouse wh_finance with Finance marts
Data Pipeline orchestrating loads
π€ Finance-Bot
π
2nd EastGold-Operations
Warehouse wh_ops with Ops marts
Data Pipeline
π€ Ops-Bot
π 3rd WestReporting-Finance
Semantic models + reports for the Finance team
π€ ReportFin-Bot
π 3rd EastReporting-Operations
Semantic models + reports for the Ops team
π€ ReportOps-Bot
The Daily Flow β How Data Moves Upstairs
Data flows up the building. Robots fetch from the floor below. Humans only enter on the top floor.
flowchart TB
EXT[π Outside sources
on-prem SQL, ADLS, APIs]:::ext
subgraph BRONZE["π
Bronze-Landing"]
BBOT[π€ Bronze-Bot]
LHB[(lh_bronze
Lakehouse)]
end
subgraph SILVER["π
’ Silver-Curated"]
SBOT[π€ Silver-Bot]
NB[π Notebooks
clean & conform]
LHS[(lh_silver
Lakehouse)]
end
subgraph GF["π
Gold-Finance"]
FBOT[π€ Finance-Bot]
PF[π Pipeline]
WHF[(wh_finance
Warehouse)]
end
subgraph GO["π
Gold-Operations"]
OBOT[π€ Ops-Bot]
PO[π Pipeline]
WHO[(wh_ops
Warehouse)]
end
subgraph RF["π Reporting-Finance"]
RFBOT[π€ ReportFin-Bot]
REPF[π Reports]
end
subgraph RO["π Reporting-Operations"]
ROBOT[π€ ReportOps-Bot]
REPO[π Reports]
end
HUF[π₯ Finance-Viewers]:::human
HUO[π₯ Ops-Viewers]:::human
EXT -->|connection| BBOT
BBOT --> LHB
LHB -.read.-> SBOT
SBOT --> NB
NB --> LHS
LHS -.read.-> FBOT
LHS -.read.-> OBOT
FBOT --> PF
OBOT --> PO
PF --> WHF
PO --> WHO
WHF -.read.-> RFBOT
WHO -.read.-> ROBOT
RFBOT --> REPF
ROBOT --> REPO
REPF -.open door.-> HUF
REPO -.open door.-> HUO
classDef ext fill:#f3f4f6,stroke:#6b7280,color:#111827
classDef human fill:#fce7f3,stroke:#be185d,color:#831843
Meet the Robots and Their Badges
Each robot wears badges that open doors. Some open other rooms in the building (other Fabric workspaces). Some open doors in the outside world (Azure resources).
| Robot | Lives In | Wears These Badges | So It Can Reach⦠|
π€ Bronze-Bot | Bronze-Landing | Conn-OnPremSQL-Readers
Conn-ADLS-RawDrops-Writers | On-prem SQL, the raw-drops lake outside |
π€ Silver-Bot | Silver-Curated | Viewer on Bronze-Landing | The lh_bronze lakehouse |
π€ Finance-Bot | Gold-Finance | Viewer on Silver-Curated
Conn-KeyVault-Maxim-Readers | lh_silver + secrets |
π€ Ops-Bot | Gold-Operations | Viewer on Silver-Curated
Conn-KeyVault-Maxim-Readers | lh_silver + secrets |
π€ ReportFin-Bot | Reporting-Finance | Viewer on Gold-Finance | The wh_finance warehouse |
π€ ReportOps-Bot | Reporting-Operations | Viewer on Gold-Operations | The wh_ops warehouse |
π‘ Key idea: A robot's badge for another Fabric workspace is just Manage Access on that workspace. A robot's badge for outside the building is membership in an Entra group that holds Azure RBAC.
Meet the People Buckets
| Bucket (Entra Group) | Who's In It | What Doors It Opens |
π₯ Fabric-Platform-Engineers | Data platform team | Admin on every workspace β they keep the building running |
π₯ Fabric-Finance-Analysts | Finance power users | Contributor on Gold-Finance and Reporting-Finance β can build reports |
π₯ Fabric-Finance-Viewers | Finance business users | Viewer on Reporting-Finance β can only read |
π₯ Fabric-Ops-Analysts | Ops power users | Contributor on Gold-Operations and Reporting-Operations |
π₯ Fabric-Ops-Viewers | Ops business users | Viewer on Reporting-Operations |
A Finance Viewer cannot see Operations reports. A Finance Analyst cannot edit raw data in Bronze. Each badge opens only its own doors.
Meet the Shared Connections
A Connection is like a labeled extension cord plugged into an outside building. We name them carefully so nobody plugs in a second one by mistake.
| Connection Name | Plugs Into | Authenticates As | Used By |
[Prod] OnPremSQL β CraneOps | On-prem SQL Server | Workspace Identity (via gateway) | Bronze-Bot |
[Prod] ADLS β RawDrops | Azure Data Lake | Workspace Identity | Bronze-Bot |
[Prod] KeyVault β Maxim | Azure Key Vault | Workspace Identity | Finance-Bot, Ops-Bot |
Each connection is shared β defined once, reused everywhere. No duplicates floating around with slightly different names.
Five Quick Stories
π Story 1
A new Finance analyst joins
- IT drops her into
Fabric-Finance-Analysts in Entra.
- Within minutes she can open
Gold-Finance, Reporting-Finance, build new reports, and view dashboards.
- She cannot see Operations or raw data. Her badge doesn't open those doors.
Cost to set up: one click. Cost to remove her later: also one click.
π Story 2
Morning data refresh
5:00 AM β the Pipeline in Gold-Finance wakes up:
- π Pipeline tells
Finance-Bot to go fetch fresh data from Silver-Curated.
- π€
Finance-Bot walks to Silver (its badge says it's a Viewer there), reads lh_silver, returns home, loads wh_finance.
- Meanwhile, an earlier upstream job had
Silver-Bot read from Bronze-Landing, which had Bronze-Bot pull from on-prem SQL using the shared connection.
- By 6:00 AM all three floors have fresh data. Finance analysts open their morning reports β robots already did the work.
No human typed a password. No credential was stored in a notebook. Each robot only had access to the one floor below it.
π Story 3
A notebook needs data from BOTH Finance and Ops
The platform team wants to build a cross-domain notebook in a new room called Analytics-CrossDomain.
- Create the workspace and its robot, π€
Cross-Bot.
- Add
Cross-Bot as a Viewer on both Gold-Finance and Gold-Operations (two Manage Access adds).
- The notebook opens connections to both warehouses using Workspace Identity auth.
- Done. No new secrets. No new connection strings. Two badge grants.
If later we want to revoke its access to Finance, we remove Cross-Bot from the Gold-Finance Manage Access list. Ops access is unaffected.
π Story 4
Promoting a pipeline from Dev to Prod
Same building exists three times: Dev, Test, Prod. Same robot names, same group names β just different rooms.
- π₯
Fabric-Platform-Engineers are Admins on Dev, Test, and Prod.
- π₯
Fabric-Finance-Analysts are Contributors on Dev and Test, but only Viewers on Prod.
- Only the small
Fabric-Prod-Deployers group can promote Test β Prod.
So an analyst can experiment freely in Dev, hand off to the deployer group, and never accidentally push something live. The badges enforce the speed limit.
π Story 5
A workspace gets retired
Gold-Operations is being replaced by a redesigned version. We delete the old room.
- π€
Ops-Bot vanishes automatically β it was part of the room.
- Its membership in
Conn-KeyVault-Maxim-Readers automatically goes away too.
- Key Vault and ADLS see no orphaned principals in their access lists. The group still exists, just with one fewer member.
- We build the new workspace, create its new robot, drop the new robot into the same groups. Everything else is untouched.
Clean teardown. Clean rebuild. No Azure portal cleanup required.
π§ What to Remember
- One robot per workspace. Each workspace gets its own Workspace Identity. The robot's badges decide what that workspace can reach.
- Robots travel upstream only. Bronze β Silver β Gold β Reporting. Higher-floor robots reach down; lower-floor robots never reach up.
- People only walk in at the top. Business users belong on Reporting floors. Analysts get Gold. Engineers get the basement. Nobody gets everything just because.
- Connections are named, shared, and reused. One
[Prod] OnPremSQL β CraneOps, used by whichever robot needs it. No duplicates.
- Badges (groups) hold the permissions, not the badge-wearers. Add/remove members in Entra. Doors don't need to change.
That's the whole building. π’