iTranslated by AI

The content below is an AI-generated translation. This is an experimental feature, and may contain errors. View original article
💨

Combining Microsoft Entra Private Access with Hub-Spoke Architecture

に公開

TL;DR

  • Wanted to try combining Microsoft Entra Private Access with Azure's Hub-spoke architecture
  • Was able to control access to Spokes via identity (ID)
  • This is exactly what Zero Trust Network Access is all about

Introduction

After investigating things like How Microsoft Entra Private Access bends packets (I didn't quite get it) and The Exit of Microsoft Entra Private Access, I've started to get a feel for how Microsoft Entra Private Access (MEPA) works. So, it's time to try out various architectures in a practical way. This time, I'll combine Azure's common Hub-spoke architecture with MEPA.

Azure's Hub-spoke Architecture

Let's briefly review Azure's Hub-spoke architecture.

Hub-spoke architecture
Hub-spoke architecture

Hub-spoke network topology in Azure - Azure Architecture Center and other resources are helpful. This architecture consolidates connections to on-premises, internet ingress/egress, firewalls, NVAs, etc., into a Hub, while placing individual workloads in Spokes. By connecting the Hub and Spokes via VNet Peering, mutual communication can be enabled and controlled. In particular, services like ExpressRoute used for on-premises connectivity can be complex to operate and lead to increased costs if prepared for each system, so there is an intention to consolidate their use.

MEPA and Hub-spoke Architecture

As mentioned earlier, Hub-spoke consolidates on-premises connections into the Hub, and it's also possible to accept Point-to-Site VPN (P2S VPN) from individual PCs there.
In this article, instead of such a conventional common architecture, I'll consider using MEPA (specifically, its ZTNA capability) instead of P2S VPN.

Based on the Hub-spoke concept, I've decided to place the Microsoft Entra Private Access Connector (MEPA-C) in the Hub.
On top of that, I'll test whether access to the Spokes can be controlled using MEPA's features.

The Architecture for This Time

As the name suggests, this time I'll build a network that acts as a typical remote access source, like a home network, and a Hub-spoke architecture on the Azure side.
As mentioned earlier, a MEPA-C is deployed in the Hub, and Azure VMs are deployed in each of the two Spokes for communication verification.

remote-network-and-hub-spoke
remote-network-and-hub-spoke

Settings around Microsoft Entra Private Access Connector

While only one MEPA-C is deployed this time, within the Entra admin center, multiple units are treated collectively as a Connector group.
Also, for the ZTNA configuration, an Enterprise application is used, and by configuring the "Network access" property—one of its properties—you set whether to control traffic directed to specific IP addresses and port numbers.

Briefly, the flow involves having a MEPA-C group as a cluster of MEPA-Cs, associating an Enterprise application with that MEPA-C group, and then configuring the Network access property as part of that Enterprise application.

Microsoft Entra Private Access configuration model
Microsoft Entra Private Access configuration model

An interesting aspect of the configuration is that the relationship between a MEPA-C group and Enterprise applications is not 1-to-1, but 1-to-many. In other words, you can associate multiple Enterprise applications with a single MEPA-C group.
Therefore, I thought that even with only one MEPA-C (or MEPA-C group), associating multiple Enterprise applications would enable access control for multiple Spokes.
That is, managing network access control for Spokes at the identity layer—this is precisely the true nature of a Zero Trust network.

Let's Try It Out

So, let's give it a try.
I've prepared "spoke01" with the address space 10.0.0.0/16 and "spoke02" with 10.10.0.0/16.
I also created two Enterprise applications: one corresponding to spoke01 and another for spoke02.
For each Enterprise application, I assigned users: "user01" for spoke01 and "user02" for spoke02.
The goal is for user01 to be able to access the Azure VM in spoke01, but not the Azure VM in spoke02.

First, let's open the Advanced Diagnostics screen.
I am logged in as user01, but even the 10.10.0.0/16 range, which is only permitted for user02, appears in this list.

GSA - Advanced diagnostics
GSA - Advanced diagnostics

Now, let's try to mstsc into that unauthorized address.
It's quite a fresh experience to see the Microsoft Entra ID authentication screen pop up for an mstsc connection.
If access is not permitted by the Enterprise application, an error appears on the Microsoft Entra ID screen, and the connection is ultimately rejected.
In other words, from an LWF perspective, it seems like it captured the traffic to that destination and tried to send it through the tunnel, but was rejected by Microsoft Entra ID; it tried authenticating once more but ultimately failed.

GSA - access error
GSA - access error

So, while the unauthorized IP ranges are shown on the Advanced Diagnostics screen, access is actually denied at the authentication layer, which means it works as intended.

Summary

So, I tried combining MEPA with Azure's Hub-spoke architecture.
I was able to realize that network access to Spokes can be controlled using identities, which is exactly what Zero Trust Networking is.
While it is common to control access with something like a firewall, IP-address-based control makes it difficult to handle cases where a PC moves to a different network.
Ultimately, I believe the granularity of what a user can access is the best approach, so while it might be a bit complex, it could be a viable option.

References

  • How Microsoft Entra Private Access bends packets (I didn't quite get it)

https://zenn.dev/skmkzyk/articles/me-private-access-routing

  • The Exit of Microsoft Entra Private Access

https://zenn.dev/skmkzyk/articles/mepa-tunnel-exit

  • Hub-spoke network topology in Azure - Azure Architecture Center

https://learn.microsoft.com/azure/architecture/networking/architecture/hub-spoke?wt.mc_id=MVP_391314

  • Getting started with Microsoft Entra Global Secure Access (Private Access Edition)

https://zenn.dev/sugar3kg/articles/645e632231735f


Update log

  • Added reference links - 2024/07/14
  • Fixed typos, etc. - 2024/07/14

Discussion