layout
page
title
Resource Inventory
nav_order
8
description
Complete list of Azure resources created by the landing zone
This is the complete inventory of every Azure resource created by the Startup Landing Zone deployment. Both the Bicep and Terraform implementations produce identical resources. Use this page as the single source of truth for what the landing zone deploys.
Naming convention prefix: {companyName}-{environment} (e.g., contoso-prod)
Name Pattern
Azure Resource Type
Purpose
Conditional
rg-{company}-{env}-monitoring
Microsoft.Resources/resourceGroups
Log Analytics workspace and monitoring resources
Always created
rg-{company}-{env}-networking
Microsoft.Resources/resourceGroups
VNet, subnets, and NSGs
Only when deployNetworking = true
Management Groups (Separate Deployment)
Management groups deploy at tenant scope and must be deployed separately before the main landing zone using CLI commands (see Quick Start Step 2 in the README). They are not created via the Portal or CI/CD workflows.
Name Pattern
Azure Resource Type
Purpose
mg-{company}
Microsoft.Management/managementGroups
Top-level management group for the landing zone
Hierarchy:
Tenant Root Group
└── mg-{company} (display name: "{company} Landing Zone")
├── Production subscription
└── Non-production subscription
Requires: Owner or Management Group Contributor on the Tenant Root Group.
Networking resources are created in rg-{company}-{env}-networking when deployNetworking = true.
Property
Prod
Non-Prod
Name
vnet-{company}-{env}
vnet-{company}-{env}
Resource type
Microsoft.Network/virtualNetworks
—
Address space
10.0.0.0/16
10.1.0.0/16
Subnet Name
CIDR (Prod)
CIDR (Non-Prod)
Delegation
Purpose
snet-aks
10.0.0.0/20
10.1.0.0/20
None
AKS node pool
snet-app
10.0.16.0/22
10.1.16.0/22
Configurable (default: Microsoft.Web/serverFarms)
App Service / Container Apps
snet-data
10.0.20.0/22
10.1.20.0/22
None
Databases and data services
snet-shared
10.0.24.0/24
10.1.24.0/24
None
Shared services (Key Vault, etc.)
Each subnet has a dedicated NSG. All NSGs include a DenyAllInbound catch-all rule at priority 4096.
NSG Name
Azure Resource Type
Associated Subnet
nsg-snet-aks
Microsoft.Network/networkSecurityGroups
snet-aks
nsg-snet-app
Microsoft.Network/networkSecurityGroups
snet-app
nsg-snet-data
Microsoft.Network/networkSecurityGroups
snet-data
nsg-snet-shared
Microsoft.Network/networkSecurityGroups
snet-shared
Rule Name
Priority
Direction
Access
Protocol
Source
Dest Port
Dest
AllowAzureLoadBalancerInbound
110
Inbound
Allow
*
AzureLoadBalancer
*
*
AllowVNetInbound
120
Inbound
Allow
*
VirtualNetwork
*
VirtualNetwork
DenyAllInbound
4096
Inbound
Deny
*
*
*
*
Rule Name
Priority
Direction
Access
Protocol
Source
Dest Port
Dest
DenyAllInbound
4096
Inbound
Deny
*
*
*
*
Rule Name
Priority
Direction
Access
Protocol
Source
Dest Port
Dest
AllowFromAksSubnet
110
Inbound
Allow
TCP
snet-aks CIDR
1433, 5432, 6380, 443
*
AllowFromAppSubnet
120
Inbound
Allow
TCP
snet-app CIDR
1433, 5432, 6380, 443
*
DenyAllInbound
4096
Inbound
Deny
*
*
*
*
Allowed ports on snet-data: 1433 (SQL Server), 5432 (PostgreSQL), 6380 (Redis SSL), 443 (HTTPS)
Rule Name
Priority
Direction
Access
Protocol
Source
Dest Port
Dest
DenyAllInbound
4096
Inbound
Deny
*
*
*
*
Property
Value
Name
law-{company}-{env}
Resource type
Microsoft.OperationalInsights/workspaces
Resource group
rg-{company}-{env}-monitoring
SKU
PerGB2018
Retention
90 days (configurable, 30–730)
Daily quota
5 GB (configurable, -1 = unlimited)
Resource-only permissions
Enabled
Activity Log Diagnostic Setting
Property
Value
Name
diag-activity-log-to-law
Resource type
Microsoft.Insights/diagnosticSettings
Scope
Subscription
Target
Log Analytics workspace (law-{company}-{env})
Enabled log categories (all 8):
Category
Administrative
Security
Alert
Policy
ServiceHealth
Recommendation
Autoscale
ResourceHealth
Microsoft Defender for Cloud Plans
All plans are Microsoft.Security/pricings resources at subscription scope.
Plan Name (resource)
Resource Type Covered
Default Tier — Prod
Default Tier — Non-Prod
Sub-Plan
CloudPosture
CSPM
Free
Free
—
VirtualMachines
Servers
Standard
Free
P2 (when Standard)
Containers
Containers (AKS)
Free
Free
—
SqlServers
Azure SQL
Standard
Free
—
OpenSourceRelationalDatabases
PostgreSQL, MySQL, MariaDB
Standard
Free
—
KeyVaults
Key Vault
Standard
Standard
—
Arm
ARM control plane
Standard
Standard
—
StorageAccounts
Storage
Standard
Standard
DefenderForStorageV2
Notes:
Defender for Servers, Databases are enabled by default in prod, disabled in nonprod.
Defender for Containers defaults to disabled; enable via parameter if running AKS.
Defender for Key Vault and ARM are always Standard (low cost).
Property
Value
Resource type
Microsoft.Security/securityContacts
Name
default
Email
Configured via securityContactEmail parameter
Notifications
Enabled
Notify roles
Owner
Minimum severity
Medium
Alert source
Alert
All policies are Microsoft.Authorization/policyAssignments at subscription scope.
Assignment Name
Display Name
Built-in Policy/Initiative ID
Effect
Enforcement
Parameters
Identity
mcsb-audit
Microsoft Cloud Security Benchmark (Audit)
1f3afdf9-d0c9-4c3d-847f-89da613e70a8 (Initiative)
Audit
Default
—
None
allowed-locations
Allowed Locations
e56962a6-4747-49cd-b67b-bf8b01975c4c
Deny
Default
listOfAllowedLocations: deployment region
None
allowed-locations-rg
Allowed Locations for Resource Groups
e765b5de-1225-4ba3-bd56-1ac6695af988
Deny
Default
listOfAllowedLocations: deployment region
None
require-env-tag-rg
Require environment tag on resource groups
96670d01-0a4d-4649-9c89-2d3abc0a5025
Deny
Default
tagName: environment
None
require-team-tag-rg
Require team tag on resource groups
96670d01-0a4d-4649-9c89-2d3abc0a5025
Deny
Default
tagName: team
None
inherit-env-tag
Inherit environment tag from resource group
cd3aa116-8754-49c9-a813-ad46512ece54
Modify
Default
tagName: environment
SystemAssigned
inherit-team-tag
Inherit team tag from resource group
cd3aa116-8754-49c9-a813-ad46512ece54
Modify
Default
tagName: team
SystemAssigned
activity-log-diag
Deploy Activity Log diagnostics to Log Analytics
2465583e-4e78-4c15-b6be-a36cbc7c8b0f
DeployIfNotExists
Default
logAnalytics: workspace resource ID
SystemAssigned
Property
Value
Name
budget-{company}-{env}-monthly
Resource type
Microsoft.Consumption/budgets
Scope
Subscription
Category
Cost
Time grain
Monthly
Amount
Configured via monthlyBudgetAmount parameter
Start date
First day of the current month (configurable)
Threshold
Type
Operator
50%
Actual
GreaterThan
80%
Actual
GreaterThan
100%
Actual
GreaterThan
100%
Forecasted
GreaterThan
All notifications are sent to the email addresses specified in budgetAlertEmails.
Default tags applied to all resources and resource groups:
Tag Key
Value
Purpose
environment
prod or nonprod
Environment identification and cost tracking
managedBy
bicep or terraform
IaC tool used for deployment
project
landing-zone
Project identification
team
platform
Team ownership
Tag governance is enforced via policy:
environment and team tags are required on all resource groups (deny if missing).
environment and team tags are inherited from resource groups to child resources (auto-applied via Modify policy).
Workflow File
Name
Trigger
Purpose
validate.yml
Validate IaC
PR and push to main on infra/** or examples/**
Builds and lints all Bicep files; runs terraform fmt, TFLint, and terraform validate
deploy-bicep.yml
Deploy Landing Zone (Bicep)
Push to main on infra/bicep/**, PR, or manual dispatch
Validates, runs What-If on PRs (posts result as PR comment), deploys nonprod and prod independently
deploy-terraform.yml
Deploy Landing Zone (Terraform)
Push to main on infra/terraform/**, PR, or manual dispatch
Plans (posts result as PR comment), applies nonprod and prod independently (prod re-plans before apply)
integration-test.yml
Integration Test
Manual dispatch or weekly schedule (Monday 06:00 UTC)
Runs Bicep What-If and Terraform Plan; optionally deploys, validates resources, and tears down
github-pages.yml
Deploy to GitHub Pages
Push to main or manual dispatch
Builds Jekyll site and deploys to GitHub Pages
Resource Type
Azure Type
Naming Pattern
Example (prod)
Resource Group (monitoring)
Microsoft.Resources/resourceGroups
rg-{company}-{env}-monitoring
rg-contoso-prod-monitoring
Resource Group (networking)
Microsoft.Resources/resourceGroups
rg-{company}-{env}-networking
rg-contoso-prod-networking
Management Group
Microsoft.Management/managementGroups
mg-{company}
mg-contoso
Log Analytics Workspace
Microsoft.OperationalInsights/workspaces
law-{company}-{env}
law-contoso-prod
Virtual Network
Microsoft.Network/virtualNetworks
vnet-{company}-{env}
vnet-contoso-prod
Subnet
Microsoft.Network/virtualNetworks/subnets
snet-{purpose}
snet-aks, snet-app, snet-data, snet-shared
Network Security Group
Microsoft.Network/networkSecurityGroups
nsg-snet-{purpose}
nsg-snet-aks
Diagnostic Setting
Microsoft.Insights/diagnosticSettings
diag-activity-log-to-law
diag-activity-log-to-law
Budget
Microsoft.Consumption/budgets
budget-{company}-{env}-monthly
budget-contoso-prod-monthly
Defender Plans
Microsoft.Security/pricings
Azure-defined names
CloudPosture, VirtualMachines, KeyVaults, etc.
Security Contact
Microsoft.Security/securityContacts
default
default
Policy Assignments
Microsoft.Authorization/policyAssignments
Descriptive kebab-case
mcsb-audit, allowed-locations, etc.