Infrastructure as Code (Pillar 1)
Overview
Pillar 1 delivers a complete, subscription-scoped Azure deployment using 27 parameterized Bicep modules that follow Azure Cloud Adoption Framework (CAF) Landing Zone patterns. The deployment creates a dedicated resource group and provisions all services with managed identities, private networking, Azure Policy, and Zero Trust controls.
35 Bicep Modules
→ View full Bicep Module Reference with parameters, configurations, outputs & dependencies
| # | Module | Azure Service | Purpose |
|---|---|---|---|
| 1 | managed-identities | Microsoft.ManagedIdentity | User-assigned managed identities + RBAC role assignments |
| 2 | network | Microsoft.Network | VNet, subnets, NSGs, Private DNS zones, private endpoints |
| 3 | key-vault | Microsoft.KeyVault | Secrets management, CMK encryption wrapper |
| 4 | cosmos-db | Microsoft.DocumentDB | Decision Ledger, agent memory, state persistence (serverless + vector) |
| 5 | ai-search | Microsoft.Search | RAG knowledge grounding, semantic ranking |
| 6 | foundry-project | Microsoft.MachineLearningServices | AI Foundry Hub + Project workspace |
| 7 | agent-application | Foundry Agent API | ARM-native agent packaging + deployment |
| 8 | app-insights | Microsoft.Insights | Application Insights + Log Analytics workspace |
| 9 | api-management | Microsoft.ApiManagement | APIM AI Gateway with token limits + semantic caching |
| 10 | content-safety | Microsoft.CognitiveServices | Content Safety for prompt attack detection + PII |
| 11 | guardrails | Foundry Guardrails API | Platform-managed content safety + task adherence |
| 12 | toolbox | Foundry Toolbox API | Centralized MCP tool registry with Entra auth |
| 13 | continuous-eval | Foundry Evaluations API | Scheduled evaluation runs + quality gates |
| 14 | azure-policy | Microsoft.Authorization | Custom policy initiative for agent governance |
| 15 | entra-agent-identity | Microsoft.Graph | Entra Agent Identity Blueprints + federated credentials |
| 16 | runtime-interceptor | Container App | Kill switch + token budget enforcement |
| 17 | api-center | Microsoft.ApiCenter | Private MCP tool catalog for server discovery & governance |
| 18 | function-mcp | Microsoft.Web/sites | Azure Functions MCP server hosting template |
| 19 | container-app-mcp | Microsoft.App | Container Apps MCP server hosting template |
| 20 | cost-management | Microsoft.CostManagement | Budget alerts, anomaly detection, and cost allocation tags |
| 21 | hub-spoke | Microsoft.Network | Hub-spoke VNet topology with Azure Firewall and DNS |
| 22 | hub-spoke-peering | Microsoft.Network | VNet peering between hub and spoke networks |
| 23 | data-residency | Microsoft.Authorization | Allowed-locations policy for data sovereignty |
| 24 | chaos-studio | Microsoft.Chaos | Resilience testing experiments (network disruption, CPU pressure) |
| 25 | traffic-manager | Microsoft.Network | Multi-region agent endpoint failover |
| 26 | managed-hsm | Microsoft.KeyVault | FIPS 140-3 Level 3 hardware security module |
| 27 | ai-search-index | Microsoft.Search | RAG pipeline: vector index, skillset, blob indexer |
Zero Trust Controls
Every module implements specific Zero Trust for AI controls (ZT-01 through ZT-17):
| Control | Description | Primary Module(s) |
|---|---|---|
| ZT-01 | Identity Foundation — agent & user authentication | entra-agent-identity |
| ZT-02 | Least Privilege RBAC — fine-grained role assignments | managed-identities, entra-agent-identity |
| ZT-03 | Network Microsegmentation — subnet isolation & private endpoints | network |
| ZT-04 | Data Protection — encryption at rest & in transit | key-vault |
| ZT-05 | Tool Authorization — toolbox allowlists & invocation policy | toolbox, runtime-interceptor |
| ZT-06 | Content Safety — input/output filtering & guardrails | content-safety |
| ZT-07 | Audit & Decision Ledger — immutable decision records | cosmos-db |
| ZT-08 | Continuous Evaluation — runtime quality & compliance scoring | continuous-eval |
| ZT-09 | Threat Detection — anomaly detection & prompt injection | api-management, content-safety |
| ZT-10 | Data Boundary — geo-fencing & residency policies | azure-policy |
| ZT-11 | Memory Governance — retention, PII masking, cross-agent isolation | cosmos-db, azure-policy |
| ZT-12 | Multi-Agent Trust — inter-agent credential verification | entra-agent-identity |
| ZT-13 | Supply Chain — model provenance & adapter verification | foundry-hub |
| ZT-14 | Incident Response — automated containment & recovery | observability, runtime-interceptor |
| ZT-15 | MCP Security — server auth, transport, tool authorization & fleet monitoring | api-center, function-mcp, container-app-mcp |
| ZT-16 | Compliance Automation — continuous compliance evidence collection & framework mapping | azure-policy, continuous-eval |
| ZT-17 | Data Residency — sovereign data controls, geo-fencing, & cross-border transfer enforcement | azure-policy, network |
Deployment Profiles
The kit supports two deployment profiles via parameter files — allowing cost-efficient development without sacrificing production security:
| Profile | SKU Strategy | Networking | Use Case |
|---|---|---|---|
parameters/dev.bicepparam | Free/Basic/Serverless tiers | Public endpoints (optional VNet) | Development, POC, demos |
parameters/prod.bicepparam | Standard/Premium tiers | Full private networking | Production, regulated workloads |
Standards Alignment
| Framework | How Pillar 1 Aligns |
|---|---|
| Azure CAF (Ready phase) | Subscription-scoped, RG isolation, tagging, RBAC, Azure Policy initiative |
| Azure WAF — Security | Private endpoints, CMK, managed identity, NSGs |
| Azure WAF — Reliability | Geo-redundancy options, autoscale configurations |
| Azure WAF — Cost Optimization | Dev/Prod SKU profiles via parameter files |
| Azure WAF — Ops Excellence | IaC, CI/CD pipelines, diagnostic settings on all resources |
| Microsoft Zero Trust for AI | 17 ZT controls (ZT-01 through ZT-17) across all modules, including MCP security, compliance automation, and data residency |
Quick Start
Single-Tenant Deployment
# Deploy the full platform (dev profile) az deployment sub create \ --location eastus2 \ --template-file infra/bicep/main.bicep \ --parameters infra/bicep/parameters/dev.bicepparam # Deploy with production profile az deployment sub create \ --location eastus2 \ --template-file infra/bicep/main.bicep \ --parameters infra/bicep/parameters/prod.bicepparam
Multi-LOB Platform Deployment
For enterprise scenarios with multiple lines of business (LOBs), use the hub-spoke architecture with full network, identity, data, and secrets isolation per LOB.
# Step 1: Deploy shared platform hub az deployment sub create \ --location eastus2 \ --template-file infra/bicep/main-platform.bicep \ --parameters infra/bicep/parameters/platform-dev.bicepparam # Step 2: Onboard each LOB via self-service CLI python scripts/onboard_lob.py \ --name banking \ --display-name "Banking Division" \ --env dev \ --cidr 10.1.0.0/16 \ --data-classification confidential # Step 3: Manage LOBs python scripts/afek.py lob list --env dev python scripts/afek.py lob status banking --env dev
Multi-LOB Architecture
The multi-LOB platform engineering layer provides complete isolation between business units:
| Isolation Layer | Mechanism | Module |
|---|---|---|
| Network | Dedicated spoke VNet per LOB with NSG deny-all cross-spoke | lob-spoke.bicep |
| Identity | Per-LOB UAMI with 6 scoped RBAC roles | lob-identity.bicep |
| Secrets | Dedicated Key Vault per LOB with private endpoint | lob-keyvault.bicep |
| Data | LOB-prefixed Cosmos containers + AI Search indexes | lob-cosmos-containers.bicep, lob-search-index.bicep |
| AI Workspace | Separate Foundry Project per LOB (child of shared Hub) | lob-project.bicep |
| Cost | Per-LOB budget alerts + LOB-tagged resources | cost-management.bicep |
Operations & Capacity
- Capacity Monitoring — Azure Monitor workbook with token consumption, Cosmos RU, AI Search latency, and budget burn rate per LOB
- Capacity Alerts — Automated alerts for Cosmos RU > 80%, AI Search latency > 500ms, token usage anomalies
- Failover Automation —
scripts/failover.pywith check/failover/failback/status commands - KQL Query Library — 9 pre-built queries for capacity planning and cross-LOB analysis
- Custom RBAC Roles — "AI Agent Developer" and "Platform Operator" roles scoped to LOB boundaries