Azure Lighthouse vs. B2B Guest Access Packages¶
How Azure Lighthouse simplifies multi-tenant access management across a Home Tenant (Tenant A) and a Resource Tenant (Tenant B)—and the hard Microsoft limits where you still need B2B Guest Access Packages.
- Multi-Tenant Access Packages (Home & Guest Tenants)
- Access Packages 101: How the System Works
- Manage Access Packages
1. What Azure Lighthouse Changes¶
Without Azure Lighthouse, managing a secondary tenant (Tenant B) requires creating B2B Guest accounts in Tenant B, running a second set of Access Packages and PIM policies in Tenant B, and having engineers switch directories in both myaccess.microsoft.com and the Azure Portal.
With Azure Lighthouse, Tenant B delegates its Azure Subscriptions (or Resource Groups) directly to a security group (pag-*) that lives in Tenant A (the engineer's home tenant):
flowchart LR
subgraph TenantA["Tenant A (Home / Managing Tenant)"]
USER["Synced Engineer<br/>alice@tenanta.com"]
MYACCESS["MyAccess (Tenant A)<br/>myaccess.microsoft.com"]
PKG["Tenant A Access Package"]
PAG["Tenant A Persona Group<br/>(pag-tenantb-sub-contributor)"]
PIM["Tenant A PIM for Groups<br/>(4h JIT Activation)"]
USER --> MYACCESS --> PKG -->|"Eligible Member"| PAG
PIM -->|"Activates"| PAG
end
subgraph TenantB["Tenant B (Delegated Resource Tenant)"]
LH["Azure Lighthouse Registration<br/>(Microsoft.ManagedServices)"]
SUB1["Subscription 1<br/>(Contributor / Reader)"]
SUB2["Subscription 2<br/>(Contributor / Reader)"]
LH --> SUB1
LH --> SUB2
end
PAG ==>|"Cross-Tenant Projection<br/>(No Guest Account Needed)"| LH
What Azure Lighthouse Makes Easier¶
- One MyAccess & One PIM (in Tenant A):
Engineers never have to visit
myaccess.microsoft.com/@tenantbor switch directories to activate PIM for subscription work. They request the Access Package in Tenant A's MyAccess and activate the group in Tenant A's PIM (or use Lighthouse's built-in eligible authorization rules). - No B2B Guest Accounts for Subscription Work:
Engineers act as their native
alice@tenanta.comidentity. You don't need#EXT#guest accounts, guest lifecycle reviews, or Cross-Tenant MFA trust rules just to manage Azure resources inside Tenant B's subscriptions. - No Directory Switching in the Azure Portal:
In
portal.azure.com, engineers stay signed into Tenant A and use the Directory + Subscription filter to view and manage Tenant B's subscriptions side-by-side with Tenant A's subscriptions in a single view.
2. The Catch: What Azure Lighthouse Cannot Do¶
Azure Lighthouse operates only on the Azure Resource Manager (ARM) plane at the Subscription or Resource Group scope. It has four hard architectural limits enforced by Microsoft:
| Limitation | What Microsoft Blocks | Impact on Platform Personas |
|---|---|---|
| 1. No Entra ID Directory Roles | Lighthouse has zero integration with Entra ID directory roles or Microsoft Graph permissions. | Cannot grant Global Administrator, Privileged Role Administrator, Security Administrator, Application Administrator, or manage Conditional Access in Tenant B. |
| 2. No Management Group Scope | Microsoft.ManagedServices/registrationAssignments can only be deployed at a Subscription or Resource Group—never at a Management Group (mg-tenant-root, mg-intermediate-root, mg-platform, mg-landingzones). |
You cannot delegate a Management Group tree once. Instead, your subscription-vending pipeline in Tenant B must attach the Lighthouse registration to every new subscription as it is vended. |
3. No Full Owner Role |
Microsoft explicitly blocks delegating the Owner role (or unconstrained Role Based Access Control Administrator / User Access Administrator) over Lighthouse. |
At most, a Lighthouse-delegated identity can hold Contributor plus a conditioned User Access Administrator that is only allowed to assign a pre-approved list of built-in roles to delegated identities (never Owner). |
| 4. Tenant-Bound Data Plane Limits | Certain operations (creating Entra App Registrations/Service Principals, managing Key Vault access policies vs. RBAC, or certain Entra-bound data-plane APIs) require a principal object inside Tenant B's directory. | Workloads or pipelines that vend identities in Tenant B must still run inside Tenant B. |
3. Side-by-Side Comparison¶
| Capability | Azure Lighthouse (Tenant A → Tenant B) | B2B Guest + Tenant B Access Packages |
|---|---|---|
Where the pag-* group lives |
Tenant A (Home Tenant) | Tenant B (Resource Tenant) |
| Where the engineer requests & activates | Tenant A MyAccess & Tenant A PIM | Tenant B MyAccess (/@tenantb) & Tenant B PIM |
| Requires B2B Guest account in Tenant B? | No | Yes |
| Requires switching directory in Azure Portal? | No (cross-tenant view) | Yes |
Can grant Reader / Contributor on Subscriptions? |
Yes | Yes |
Can grant Owner at Management Groups (mg-*)? |
No (Subscription/RG scope only, no Owner) |
Yes |
| Can grant Entra ID Directory Roles in Tenant B? | No | Yes |
| Can manage Conditional Access / App Registrations in Tenant B? | No | Yes |
4. Recommended Hybrid Architecture¶
Because Azure Lighthouse is much simpler for subscription-level work but cannot reach Tenant B's Entra ID or Management Groups, the cleanest multi-tenant design combines both:
flowchart TB
ENG["Engineer in Tenant A<br/>(alice@tenanta.com)"]
subgraph Tier12["90% of Day-to-Day Work: Tier 1 & Tier 2 (Azure Subscriptions)"]
LH_FLOW["Tenant A Access Package + Tenant A PIM<br/>→ Azure Lighthouse Delegation"]
LH_ROLES["• Contributor / Reader on Subscriptions<br/>• Network / Monitoring / Log Analytics Contributor<br/>• Security Reader on Subscriptions"]
LH_FLOW --> LH_ROLES
end
subgraph Tier0["10% Control Plane Work: Tier 0 & Management Groups"]
B2B_FLOW["B2B Guest in Tenant B<br/>→ Tenant B Access Package + Tenant B PIM"]
B2B_ROLES["• Entra Directory Roles (Global Admin, PRA, Security Admin)<br/>• Conditional Access & Service Principal Vending<br/>• Owner at Tenant Root / mg-intermediate-root / mg-platform"]
B2B_FLOW --> B2B_ROLES
end
ENG ==>|"No directory switch"| Tier12
ENG ==>|"Switch to Tenant B"| Tier0
- Use Azure Lighthouse (from Tenant A) for Subscription-Level Access (Tier 1 / Tier 2):
- Create the
pag-*groups, Access Packages, and PIM policies in Tenant A. - Have Tenant B's subscription-vending module automatically deploy an
azurerm_lighthouse_definitionandazurerm_lighthouse_assignmentto every subscription in Tenant B, mappingReader,Contributor,Monitoring Contributor, andLog Analytics Contributorto Tenant A'spag-*groups. - Engineers stay in Tenant A for all routine Azure engineering, monitoring, and troubleshooting.
- Use B2B Guests + Tenant B Access Packages Only for the Control Plane (Tier 0):
- Keep a small, tightly controlled set of B2B Guest accounts in Tenant B for senior platform engineers.
- Use Tenant B's own
azure-privileged-access-grantsandazure-privileged-access-packagesstrictly for roles Lighthouse cannot delegate: Entra ID directory roles (Global Administrator, Privileged Role Administrator, Security Administrator), Service Principal vending, Conditional Access, and Management GroupOwnergrants.