Hub-and-Spoke Virtual Network Architecture

High‑level hub‑and‑spoke network architecture showing centralized management in the hub and isolated workloads in spoke VNets.

Overview

I built a secure Hub‑and‑Spoke network architecture in Microsoft Azure to demonstrate my ability to design cloud networks that are scalable, well‑segmented, and aligned with enterprise best practices. The hub hosts shared services like Bastion, DNS, and peerings, while each spoke contains isolated workloads with tightly governed traffic paths. This project highlights my knowledge of cloud networking, routing design, Zero Trust principles, and operational governance. It also shows that I can build environments that are secure, predictable, and ready for real‑world workloads.

Architecture Diagram

Hub-Spoke Architecture Diagram

Project Screenshots

Methodologies Used

Hub-and-spoke Topology Design

Cost Optimization

Network Segmentation

Infrastructure as Code (IaC)

Bastion Access

Route Architecture

Traffic Flow Modeling

Step-by-Step Walkthrough

1. Create the Resource Group

2. Build the Virtual Networks

hubvnetwithsubnets spoke1vnetwithsubnets spoke2vnetwithsubnets

3. Configure Hub‑Spoke VNet Peering

connectedpeerings

4. Create and Apply Network Security Groups

hubmanagementNSG spoke1webNSG spoke1appNSG spoke2webNSG

5. Create a Route Table (UDR)


{
            "type": "Microsoft.Network/routeTables",
            "apiVersion": "2025-05-01",
            "name": "[parameters('routeTables_rt_spoke1_to_hub_name')]",
            "location": "eastus",
            "tags": {
                "project": "portfolio-lab1"
            },
            "properties": {
                "disableBgpRoutePropagation": false,
                "routes": [
                    {
                        "name": "route-to-hub-nva",
                        "id": "[resourceId('Microsoft.Network/routeTables/routes', parameters('routeTables_rt_spoke1_to_hub_name'), 'route-to-hub-nva')]",
                        "properties": {
                            "addressPrefix": "0.0.0.0/0",
                            "nextHopType": "VirtualAppliance",
                            "nextHopIpAddress": "10.0.1.4"
                        }
                    }
                ]
            }
        },

6. Configure Private DNS

privatednszonelinked

7. Deploy Test VMs

AzureBastionSSHsuccessfulconnection

8. Validate Connectivity

intetionaldenialofaccessonport3389 accesssuccessfulonport22

9. Tear Down Temporary Resources

Key Configurations

Challenges & Solutions

Results & Metrics

Key Takeaways

View on GitHub