Enterprise identity governance automation for Conditional Access, PIM, Access Reviews, and Splunk SIEM correlation
|
Enterprise challenges with Microsoft identity:
Manual governance leads to:
|
Modern identity governance requires:
This toolkit bridges IAM and SecOps. |
Complete governance automation across all Entra ID pillars:
| Capability | Technology | Outcome |
|---|---|---|
| CA Analysis | Graph API + Policy Engine | Find gaps and conflicts |
| PIM Monitoring | Role Activation Tracking | Standing access violations |
| Access Reviews | Automation Framework | 95%+ completion rate |
| SIEM Integration | Splunk HEC + CIM | SOC identity visibility |
| Compliance | Automated Reports | Audit-ready evidence |
| PowerShell | Admin Scripts | Familiar AD tooling |
Governance Dashboard KPIs and security score |
Conditional Access Policy analysis |
PIM Analysis Standing access detection |
Access Reviews Completion tracking |
Compliance Reports Audit-ready evidence |
|
Splunk was chosen for v1.1 because:
|
|
MICROSOFT ENTRA ID
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Conditional β β PIM β β Access β
β Access β β Activations β β Reviews β
ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ
β β β
ββββββββββββββββββββββββΌβββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MICROSOFT GRAPH API β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β MSAL Authentication + Token Caching + Retry Logic β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ANALYSIS ENGINE β
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββββββ β
β β CA Analyzer β β PIM Analyzer β β Review Analyzer β β
β β βββββββββββββ β βββββββββββββ β βββββββββββββββββββββ β
β β Policy Score β β Standing β β Completion Rate β β
β β Gap Detectionβ β Access β β Bulk Approval β β
β β Conflicts β β Violations β β Overdue Detection β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββΌββββββββββββββββββββββ
βΌ βΌ βΌ
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β FastAPI β β React β β Splunk β
β Backend β β Frontend β β SIEM β
β β β β β β
β 15+ Endpointsβ β Dashboards β β HEC Events β
β REST API β β Reports β β CIM Format β
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
|
|
- Python 3.11+
- Node.js 18+
- Microsoft Entra ID tenant (free tier works)
- Splunk instance (optional, mock mode available)
# Clone repository
git clone https://github.com/MikeDominic92/entra-id-governance.git
cd entra-id-governance
# Backend setup
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
# Frontend setup (new terminal)
cd frontend
npm install# .env configuration
AZURE_TENANT_ID=your-tenant-id
AZURE_CLIENT_ID=your-app-registration-id
AZURE_CLIENT_SECRET=your-client-secret
# Splunk Configuration (optional)
SPLUNK_ENABLED=true
SPLUNK_HEC_URL=https://splunk.company.com:8088
SPLUNK_HEC_TOKEN=your-hec-token
SPLUNK_MOCK_MODE=false # Set true for demo# Start Backend
python -m src.api.main
# Start Frontend (new terminal)
cd frontend && npm run dev- API Docs: http://localhost:8000/docs
- Frontend: http://localhost:3000
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/ca/policies |
List CA policies |
| GET | /api/v1/ca/analysis |
Policy analysis report |
| GET | /api/v1/pim/assignments |
PIM role assignments |
| GET | /api/v1/pim/violations |
Standing access violations |
| GET | /api/v1/reviews/pending |
Pending access reviews |
| POST | /api/v1/reviews/bulk-approve |
Bulk approval |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/splunk/health |
Connection status |
| GET | /api/v1/splunk/statistics |
Forwarding stats |
| POST | /api/v1/splunk/events/forward |
Manual event forward |
| POST | /api/v1/splunk/alerts/webhook |
Receive Splunk alerts |
from src.integrations import SplunkHECConnector, EventForwarder
# Initialize connector
splunk = SplunkHECConnector(
hec_url="https://splunk.company.com:8088",
hec_token="your-token",
index="identity_governance"
)
# Forward PIM activation event
forwarder = EventForwarder(splunk)
forwarder.forward_pim_activation(
user_id="user@company.com",
role_name="Global Administrator",
activation_duration=8,
justification="Emergency change request CR-12345"
)
# Statistics
stats = forwarder.get_statistics()
print(f"Events forwarded: {stats['events_sent']}")
print(f"Failed: {stats['events_failed']}")|
Scenario: 150 CA policies accumulated over 3 years. Analysis:
Outcome: Consolidated to 45 policies, gaps closed. |
Scenario: SOX audit requires JIT access evidence. Analysis:
Outcome: Zero standing access findings. |
|
Scenario: 500 pending reviews, 30% completion rate. Automation:
Outcome: 95% completion rate achieved. |
Scenario: Security incident requires identity context. Integration:
Outcome: MTTR reduced by 60%. |
entra-id-governance/
βββ src/
β βββ api/ # FastAPI application
β β βββ main.py # Entry point
β β βββ routes/ # API routes
β βββ analyzers/ # Governance analyzers
β β βββ conditional_access.py
β β βββ pim_analyzer.py
β β βββ access_reviews.py
β β βββ entitlements.py
β βββ automation/ # Automation tools
β β βββ pim_activator.py
β β βββ policy_enforcer.py
β β βββ review_processor.py
β βββ integrations/ # v1.1: SIEM integration
β β βββ splunk_connector.py
β β βββ event_forwarder.py
β β βββ alert_receiver.py
β βββ graph_client.py # Microsoft Graph client
βββ powershell/ # PowerShell scripts
βββ frontend/ # React dashboard
βββ docs/ # Documentation
| Category | Technologies |
|---|---|
| Identity | Microsoft Entra ID, Graph API, MSAL |
| Governance | Conditional Access, PIM, Access Reviews |
| SIEM | Splunk HEC, CIM Data Model, Correlation |
| Backend | Python, FastAPI, Pydantic |
| Frontend | React, TypeScript, Material-UI |
| Automation | PowerShell, Microsoft Graph SDK |
- v1.0: CA, PIM, Access Review analysis
- v1.1: Splunk SIEM integration
- v1.2: Microsoft Sentinel integration
- v1.3: Teams notifications
- v2.0: Multi-tenant support
Mike Dominic
- GitHub: @MikeDominic92
- Focus: IAM Governance, Compliance Automation, Zero Trust Architecture
This project demonstrates key competencies for senior IAM engineering roles:
| Requirement | Evidence |
|---|---|
| Zero Trust architecture | Conditional Access policies with device compliance |
| IAM governance and RBAC | PIM role management and entitlement controls |
| SOC 2/ISO 27001/NIST compliance | Control mappings in docs/compliance/ |
| Audit evidence preparation | Evidence generator documentation |
| Access review automation | Access review completion tracking |
Enterprise Entra ID Governance with Compliance Automation
Demonstrates Conditional Access, PIM, Access Reviews, and SOC 2/ISO 27001 Compliance




