Skip to content

benarch/Azure-IPAM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Azure IPAM Dashboard

A web-based IP Address Management (IPAM) tool for Azure that provides comprehensive visibility into your IP address usage across tenants, subscriptions, and resource groups.

Deploy to Azure

Azure IPAM Dashboard

Features

πŸ“‹ IP Address Inventory

  • View all public and private IP addresses across your Azure tenant
  • Filter by subscription, resource group, IP type, and allocation method
  • See which resources are using each IP address
  • Click-through to Azure Portal for detailed resource management
  • Export to CSV for reporting

πŸ”² Subnet Utilization

  • Visual utilization graphs for each subnet (color-coded: 🟒 green, 🟑 amber, πŸ”΄ red)
  • Group by VNet with expandable/collapsible views
  • Track used vs. available IPs in real-time
  • Identify subnets approaching exhaustion
  • View delegations, NSG, and route table associations

⚠️ CIDR Conflict Detection

  • Automatically detect overlapping address spaces across VNets
  • Identify subset/superset conflicts
  • Impact analysis for each conflict
  • Cross-subscription conflict detection

πŸ“Š Events & Activity Logs

  • Track network resource changes (create, update, delete)
  • Monitor IP exhaustion warnings
  • Quota usage alerts for public IPs
  • Filter by event type, time range, and subscription

Quick Start

Prerequisites

  • Node.js 18+
  • Azure CLI (az login)
  • Azure subscription with network resources

Local Development

# Clone the repository
git clone https://github.com/your-org/azure-ipam.git
cd azure-ipam

# Set up Azure credentials
cd deploy/local
cp .env.example .env
# Edit .env with your Azure credentials

# Install and run
cd ../../frontend
npm install
npm run dev

Open http://localhost:3000 in your browser.

See Local Deployment Guide for detailed instructions.

Deployment Options

Deployment Description Guide
Azure Container Apps One-click serverless deployment deploy/azure-container-apps/
Local Development Native Node.js with hot reload deploy/local/
Docker Production-ready containers with nginx deploy/docker/
Kubernetes Kustomize manifests with HPA, PDB, ingress deploy/kubernetes/
Azure AKS Full Azure integration with Key Vault, ACR, Managed Identity deploy/azure-aks/

Azure Container Apps (Recommended)

Click the Deploy to Azure button above, or use Azure CLI:

# Create resource group
az group create --name rg-azure-ipam --location eastus

# Deploy (requires App Registration - see deploy/azure-container-apps/README.md)
az deployment group create \
  --resource-group rg-azure-ipam \
  --template-file deploy/azure-container-apps/azuredeploy.json \
  --parameters frontendClientId="<your-app-registration-client-id>"

Docker Deployment

cd deploy/docker
cp .env.example .env
# Edit .env with your Azure credentials
docker-compose build
docker-compose up -d
# Access at http://localhost:8080

Kubernetes Deployment

# Configure secrets
kubectl create namespace azure-ipam
kubectl create secret generic azure-ipam-secrets \
  --namespace azure-ipam \
  --from-literal=AZURE_TENANT_ID=<your-tenant-id> \
  --from-literal=AZURE_CLIENT_ID=<your-client-id> \
  --from-literal=AZURE_CLIENT_SECRET=<your-secret>

# Deploy with Kustomize
kubectl apply -k deploy/kubernetes/base

Azure AKS Deployment

cd deploy/azure-aks

# Option 1: Automated (creates all Azure resources)
./deploy.sh

# Option 2: Infrastructure as Code
az deployment group create \
  --resource-group rg-azure-ipam \
  --template-file infrastructure/main.bicep

Azure Permissions

This tool requires read-only access to Azure networking resources. A custom "IPAM Reader" role is provided.

See AZURE-PERMISSIONS.md for:

  • Custom role definition
  • Service principal setup
  • Managed identity configuration
  • Multi-subscription access

Quick Role Setup

# Create the IPAM Reader custom role
az role definition create --role-definition @ipam-reader-role.json

# Create service principal and assign role
az ad sp create-for-rbac --name "ipam-app" --skip-assignment
az role assignment create --assignee "<APP_ID>" --role "IPAM Reader" --scope "/providers/Microsoft.Management/managementGroups/<TENANT_ID>"

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 β”‚     β”‚                 β”‚     β”‚                  β”‚
β”‚  React Frontend │────▢│  Azure Functions│────▢│  Azure Resource  β”‚
β”‚  (TypeScript)   β”‚     β”‚  API            β”‚     β”‚  Graph           β”‚
β”‚                 β”‚     β”‚                 β”‚     β”‚                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚                       β”‚                       β”‚
        β”‚                       β”‚                       β”‚
        β–Ό                       β–Ό                       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  MSAL.js        β”‚     β”‚  Azure Identity β”‚     β”‚  Activity Logs   β”‚
β”‚  (User Auth)    β”‚     β”‚  (API Auth)     β”‚     β”‚  API             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Technology Stack

  • Frontend: React 18, TypeScript, Tailwind CSS, AG Grid, Recharts
  • Backend: Azure Functions (Node.js), Azure SDK
  • Authentication: MSAL.js, Azure AD / Entra ID
  • Data: Azure Resource Graph, Azure Activity Logs

Project Structure

Azure-IPAM/
β”œβ”€β”€ frontend/                 # React + TypeScript frontend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/       # UI components
β”‚   β”‚   β”œβ”€β”€ pages/            # Page components
β”‚   β”‚   β”œβ”€β”€ services/         # API client
β”‚   β”‚   └── types/            # TypeScript types
β”‚   └── package.json
β”œβ”€β”€ api/                      # Azure Functions backend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ functions/        # HTTP function handlers
β”‚   β”‚   └── shared/           # Shared utilities
β”‚   └── package.json
β”œβ”€β”€ deploy/                   # Deployment configurations
β”‚   β”œβ”€β”€ local/                # Local development (docker-compose)
β”‚   β”œβ”€β”€ docker/               # Production Docker containers
β”‚   β”œβ”€β”€ kubernetes/           # Generic K8s manifests (Kustomize)
β”‚   β”‚   └── base/             # Base manifests
β”‚   β”œβ”€β”€ azure-container-apps/ # One-click Azure deployment (ARM)
β”‚   └── azure-aks/            # Azure AKS with Key Vault, ACR, Bicep
β”‚       β”œβ”€β”€ infrastructure/   # Bicep templates
β”‚       └── patches/          # AKS-specific Kustomize patches
β”œβ”€β”€ docs/                     # Documentation
β”‚   └── AZURE-PERMISSIONS.md  # Permissions guide
β”œβ”€β”€ ipam-reader-role.json     # Custom Azure role definition
└── README.md

Configuration

Environment Variables

Variable Description Required
AZURE_TENANT_ID Azure AD tenant ID Yes
AZURE_CLIENT_ID Service principal or app registration ID Yes
AZURE_CLIENT_SECRET Service principal secret (not needed for managed identity) Depends
VITE_AZURE_CLIENT_ID Frontend auth client ID Yes
VITE_AZURE_TENANT_ID Frontend tenant ID Yes

Contributing

Contributions are welcome! Please read our contributing guidelines before submitting a PR.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published