Overview
The Reference Architecture, in Networking Terms
- App Service integration subnet — outbound VNet integration for the client web app (Azure App Service).
- Private endpoint subnet — hosts the private endpoints for the app's dependencies (Storage, Key Vault, and others).
- Microsoft Foundry integration subnet — private connectivity into the Foundry account/project.
- Azure AI agent integration subnet — private connectivity for Foundry Agent Service traffic.
- Azure Bastion subnet — browser-based, no-public-IP RDP/SSH into the environment.
- Jump box subnet — a managed VM for administrative access, reached via Bastion rather than a public IP.
- Build agents subnet — self-hosted CI/CD agents that need private connectivity into the VNet (for deploying into resources with no public access).
- Azure Firewall subnet — the network's single egress point.
What Sits Behind a Private Endpoint (and Why)
- Azure App Service (the client app itself, reached from the App Gateway)
- Azure Key Vault (secrets, keys, certificates)
- Azure Storage (used for the app's data and deployment artifacts)
- Microsoft Foundry (the account and project — model access, agent hosting)
- Azure AI Search (retrieval for RAG scenarios)
- Azure Cosmos DB (chat history / state)
- Knowledge stores used for grounding
Ingress: Application Gateway, WAF, and DDoS Protection
Egress: Azure Firewall as the Single Exit
Identity: Managed Identities Over Keys
Requirements Checklist, Applied to This Pattern
- [ ] A VNet with separate subnets per concern (private endpoints, App Service integration, Foundry integration, agent integration, Bastion, jump box, build agents, firewall) rather than one flat subnet
- [ ] Private endpoint subnet sized with headroom — count every dependency (Storage, Key Vault, Foundry, AI Search, Cosmos DB, knowledge stores) × sub-resources, not just "one per service"
- [ ] A private DNS zone per resource type, linked to every VNet that needs to resolve it (including any peered VNets or landing-zone hub)
- [ ] Application Gateway + WAF as the only public ingress path; App Service reachable only through it
- [ ] Azure Firewall (or equivalent) as the only egress path, with explicit allow-rules for model endpoints and any external APIs the app/agents call
- [ ] Managed identities used for service-to-service auth (Foundry Agent Service → Foundry project → Azure OpenAI) instead of API keys
- [ ] Bastion + jump box for administrative access — no public RDP/SSH anywhere in the VNet
- [ ] Build agents given private connectivity into the VNet, since CI/CD needs to reach resources that no longer have public network access
- [ ] Connectivity verified end-to-end before disabling public network access on any resource
Common Pitfalls Specific to This Pattern
- Treating Foundry/Azure OpenAI like a "normal" private-linked resource and forgetting it can need more than one DNS zone, depending on whether calls go through the Foundry-specific API surface, the OpenAI-compatible surface, or both.
- Sizing the private endpoint subnet for today's dependency count, then adding AI Search, a second knowledge store, or another Cosmos DB container group later and running out of IPs.
- Locking down egress through Azure Firewall before confirming which endpoints the app and agents actually call — RAG pipelines especially tend to reach more external surfaces (embedding APIs, search indexes, occasionally third-party data sources) than the initial design accounts for.
- Skipping the landing-zone variant when the workload is actually going into an enterprise environment — the baseline Microsoft Foundry chat architecture in an Azure landing zone exists specifically because hub-and-spoke, centralized firewalls, and shared DNS zones change some of the assumptions above (e.g. DNS zones often live in the hub, not the spoke).
Where to Go Next
- Get Started with AI Architecture Design — the source article this post is built around
- Baseline Microsoft Foundry chat reference architecture — the full deployable reference this diagram comes from
- Baseline Microsoft Foundry chat architecture in an Azure landing zone — the enterprise-scale variant
- Design a secure multitenant RAG inferencing solution — if the workload needs tenant-level isolation on top of everything above