Skip to content
← /work
CASE 05

Multi-tenant Strata Cloud Manager

Tenant hierarchy, naming standard and identity plane for a large healthcare enterprise that keeps acquiring companies it cannot fully absorb.

FRONTMATTER
---
title: "Multi-tenant Strata Cloud Manager"
summary: "Tenant hierarchy, naming standard and identity plane for a large healthc…"
stack: ["Strata Cloud Manager", "Prisma Access", "Prisma SD-WAN"]
relevance: "Hierarchy keyed to who manages, not where."
featured: true
section: work
---
STACK
Strata Cloud ManagerPrisma AccessPrisma SD-WAN
↳ Hierarchy keyed to who manages, not where.

Problem

A large healthcare enterprise — call it Globex — with several operating entities, an acquisition roughly every year, and no single answer to who runs the network of any given one of them. Some acquisitions are run by Globex IT from the first week. Some stay on the managed service provider that was already operating them, for years, under a contract Globex inherited. A platform group wants its own Prisma Access and NGFW footprint with no blast radius into production. All of it is managed from Strata Cloud Manager, and the tenant tree is the thing that decides who can change what.

The first two instincts for shaping that tree are geography and the org chart. Both fail the same way. A region contains a mix of operators, so a regional tenant has to be administered by all of them, which is the boundary the tree was supposed to draw. A business unit reorganizes, and a tenant named after it is either renamed or left as a fossil. The one question with a stable answer is who operates the stack on day two. The hierarchy is keyed to that and nothing else.

TENANT TREE — GLOBEXroot · 1 sub-parent · 7 leaves
Strata Cloud Manager tenant treeA root tenant does governance only: licensing, snippet publishing, posture and a Cloud Identity Engine shared to sub-tenants. Children are named ORG_IT_, ORG_MSP_ or ORG_DEV_ followed by the entity or region, each with its own service stack. ORG_MSP_AcmeCo is a sub-parent with nested regional children. ORG_IT_BetaCo is an absorbed acquisition landed as a child with no children of its own.Globex — ROOTgovernance onlylicensing · snippets ·postureCIE shared to subsORG_IT_Globex-NAPrisma Access · PrismaSD-WAN · NGFWORG_IT_Globex-EUPrisma Access · NGFWORG_IT_BetaCoabsorbed · child-only ·NGFWORG_DEV_PlatformNGFW lab · nothing inproductionORG_MSP_AcmeCo — SUB-PARENToperated by AcmeCo'sprovider under contractORG_MSP_AcmeCo-USPrisma Access · PrismaSD-WANORG_MSP_AcmeCo-APACPrisma Access
Figure 5.1  The root does governance only. Every child carries its own service stack. ORG_MSP_AcmeCo is a sub-parent whose regional children are operated by the provider; ORG_IT_BetaCo is an acquisition absorbed as a child with no children of its own.

The root tenant holds licensing, publishes the snippets every child must carry, owns posture, and shares its Cloud Identity Engine down the tree. It has no device folders and no runtime stack: nothing in production terminates at the root, so no root change can take a site down. Each child carries the services its entity actually uses — Prisma Access, Prisma SD-WAN, NGFW, or any subset — and nothing it does not.

An acquisition lands in one of two shapes. Absorbed, like BetaCo, it is an IT_ child under the root with no children of its own, operated by Globex IT from the start. Provider-managed, like AcmeCo, it is an MSP_ sub-parent: the provider's administrators are scoped to that node and the regional children beneath it, and they never see a Globex child.

Naming standard

Every tenant below the root is named ORG_<IT|MSP|DEV>_<entity|region>. The middle token answers one question — who operates it — and is the only thing the name encodes.

  • IT_ — operated by Globex IT. Full service stack, change control through Globex's own process, root-published snippets attached on day one.
  • MSP_ — operated by a third party under contract. Always a sub-parent, even with a single child, so the provider's scope has a node to bind to that is not the leaf carrying production. Globex retains governance at the root and nothing below it.
  • DEV_ — engineering and lab. Carries the posture baseline and nothing else from the root, holds no production, and can be deleted without anyone outside the platform group noticing.

The last token is the entity when one tenant covers it, and the region once an entity's footprint has to split: ORG_IT_Globex-NA and ORG_IT_Globex-EU are two children because they are two change windows, two sets of on-call engineers and two regulatory scopes, not because a map says so. A tenant is renamed for exactly one reason: its operator changed. A reorganization that moves a business unit between executives changes nothing in the tree, because the tree never recorded the executive.

IDENTITY PLANE — GROUPS, ROLES, SCOPESCIE ≠ admin IAM
Identity plane for the tenant treeEntra ID groups in the Globex tenant and in the provider's tenant map one-to-one onto Strata Cloud Manager roles, each bound to a scope in the tenant tree. The Cloud Identity Engine is shared from the root for User-ID: it feeds user and group mapping to policy in every child and grants no console access.CLOUD IDENTITY ENGINE — User-ID, shared from rootSTRATA CLOUD MANAGER — role + scopeENTRA ID — provider tenantENTRA ID — Globex tenantdirectory sync, read-onlyconsumed by policy, neverby IAMgrp-scm-root-governancegrp-scm-it-globex-na-opsgrp-scm-dev-platform-opsgrp-scm-auditdirectoryall users and groupsgrp-acmeco-nocSuperuserscope: rootSuperuserscope: ORG_IT_Globex-NANetwork Adminscope: ORG_DEV_PlatformView Onlyscope: root and every childMultitenant Superuserscope: ORG_MSP_AcmeCosubtreesecurity policy, everychilduser and group objectsuser and group mappinggrants no console access
Figure 5.2  Each Entra group maps to one Strata Cloud Manager role bound to one scope in the tree. The provider's group lives in the provider's own Entra tenant. The Cloud Identity Engine is shared from the root for User-ID and is deliberately drawn outside the admin path: it feeds policy, and grants no console access.

Administrative access is one Entra group per archetype, mapped to one role at one scope. Root governance is a superuser scoped to the root. A child operator is a superuser scoped to that child and nothing above it. The provider's NOC is a multitenant role scoped to the MSP_ sub-parent, which carries to the regional children beneath it. Audit is read-only across the tree. Access is granted by adding someone to a group in their own directory; the console is never where authority is edited.

The Cloud Identity Engine is in the figure because it is the thing most often mistaken for the admin plane. It is shared from the root so that every child's policy can reference the same users and groups, and that is all it is: a User-ID source. Membership in a synced group puts a user into a security rule. It never puts them into the console.

FOLDER AND SNIPPET LAYOUT — ONE IT_ CHILDORG_IT_Globex-NA
00  ORG_IT_Globex-NA                       tenant · child of root
01  ├─ Prisma Access
02  │  ├─ Mobile Users
03  │  └─ Remote Networks
04  ├─ NGFW
05  │  ├─ dc-atl                           device folder
06  │  ├─ dc-dal                           device folder
07  │  └─ azure-hub                        Cloud NGFW · case 04
08  └─ Prisma SD-WAN
09  
0a  snippets
0b  ├─ [root]  posture-baseline           read-only here
0c  ├─ [root]  logging-and-decryption     read-only here
0d  ├─ [root]  admin-rules-pre            read-only here
0e  ├─ [local] na-app-allowlist           editable here
0f  └─ [local] na-site-exceptions         editable here
[root] snippets
Authored at the root and published to the child. They carry the rules that apply everywhere and are not editable below the root; a child administrator sees them and cannot change them.
[local] snippets
The child’s own. Attached to folders inside this tenant only, so a rule written here cannot reach a sibling.
publish is a step
Nothing flows from root to child by default. Each root snippet is deliberately published to each child, which makes the baseline a reviewable list rather than an inheritance.
azure-hub
The Cloud NGFW for Azure hub in case 04 is one device folder here: its policy is this child’s, beneath the root baseline.
Figure 5.3  Inside one child: service folders, device folders, and the snippets attached to them. Snippets published from the root are read-only here; local snippets are the child's own. The Azure hub from case 04 is a device folder under NGFW.

The folder hierarchy inside a child mirrors the trust boundary, not the network topology, because the hierarchy is what determines who can change what. Rules that apply everywhere are written once at the root, published to every child, and are not editable below. Tenant-specific rules live in that tenant's own snippets and folders and cannot reach across to a sibling. A child administrator's authority ends at their own boundary as a structural property rather than as a convention, and the root's baseline is a list of explicit publications rather than something that happened on its own.

Landing an acquisition

DecisionIT_ absorbed child — BetaCoMSP_ sub-parent — AcmeCo
Who operates on day twoGlobex ITThe incumbent provider, under the inherited contract
Shape in the treeOne child under the root, no children of its ownA sub-parent with one child per region it serves
LicensingRootRoot; the provider never holds a license
Admin identityGlobex Entra groups mapped to roles scoped to the childThe provider's own Entra groups, scoped to the MSP_ subtree; Globex keeps root governance only
User-IDCloud Identity Engine shared from the rootShared from the root; the provider's directory may be added per child
Policy baselineEvery root-published snippet attached on day onePosture baseline from the root; everything else is the provider's local snippets
ExitFolded into an existing IT_ regional child once the networks mergeRe-homed as IT_ when the contract ends — a rename and a scope change, not a rebuild

The row that decides the column is the first one. Everything beneath it is a consequence of who answers the phone when a site goes down, and that answer is in the contract before the tenant exists.

Verified and assumed

ClaimStatusConsequence for the design
Administrative authority is bounded by role scope in the tenant tree, not by PAN-OS-style access domainsVerifiedScopes are the boundary; there is no second mechanism to keep in sync
The Cloud Identity Engine is a User-ID source, not an administrator provisioning pathVerifiedSharing it tree-wide grants nobody console access; admin IAM is groups and scopes only
No root-to-child policy inheritance happens on its own; root snippets must be published to each childVerifiedThe baseline is an explicit, reviewable list per child, and a new child starts empty
A tenant's place in the tree does not set data residency; residency follows the region the tenant was provisioned inVerifiedRegional children exist for operations and scope, not for residency, which is fixed at creation
An MSP_ sub-parent can be re-homed as IT_ by renaming and re-scoping, without re-provisioning its childrenAssumedThe exit row above depends on it; the fallback is a migration into a fresh IT_ child
Two levels of nesting cover every acquisition shape Globex will seeAssumedA provider that itself subcontracts a region would need a third level, which has not been tested
Precedence between root-published and local rules is pinned by snippet order in every childAssumedEach child's ordering is set at creation and reviewed on every root publication

What I'd change

The naming standard records the operator and nothing else, which is its strength, and it also means an absorbed entity three weeks into migration looks identical to one that finished a year ago. A lifecycle token or a tag for transition state would have saved a recurring conversation.

The Cloud Identity Engine is shared from the root to the whole tree. For IT_ children that is correct. For an MSP_ subtree a directory boundary at the sub-parent would be cleaner, so the provider's regional children reference the provider's users without the root having to know them.

The publish order of root snippets was documented after the first child existed. It should have been pinned before, as part of creating the root, because every later child inherited whatever order the first one happened to get.

DEV_ as an archetype earned its keep. As a child of the production root it still shares licensing and posture with production, and a lab that needs neither would be better as a tenant of its own.


The hub in Azure cross-tenant Cloud NGFW hub is the Azure consumer of one IT_ child: its Cloud NGFW is the azure-hub device folder under ORG_IT_Globex-NA, and its policy is that child's local snippets beneath the root-published baseline.

The folder-versus-scope distinction this tree leans on is written up on its own in Folders are structure, scope is authority.