Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
azure-security-auditor — CLI tool to audit Azure security posture, RBAC, NSGs, storage, identity, and encryption | Kitploit
Tools/GitHubGitHub/neelkotnis/azure-security-auditor
Cloud Infrastructure SecurityDefensive ToolsConfiguration AuditingNetwork SecurityCloud SecurityDevSecOpsIdentity & Access Management (IAM)Misconfiguration
GitHubneelkotnis/azure-security-auditor

azure-security-auditor

CLI tool to audit Azure security posture, RBAC, NSGs, storage, identity, and encryption

View Repository
191 month agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

Azure Security Posture Auditor

A lightweight, production-style CLI tool that audits Azure security configurations and surfaces common misconfigurations — mirroring what Microsoft Defender for Cloud checks internally.

Checks

IDCategoryCheckSeverity
AZ-001RBACOwner / Contributor assigned at subscription scopeCRITICAL
AZ-002RBACOwner / Contributor assigned at resource group scopeHIGH
AZ-003NetworkNSG with 0.0.0.0/0 inbound allow ruleHIGH
AZ-004StorageStorage account with public blob access enabledHIGH
AZ-005IdentityEntra ID user without MFA registeredHIGH
AZ-006IdentityService principal with Owner / Contributor permissionsHIGH
AZ-007EncryptionManaged disk without explicit encryption configurationMEDIUM
AZ-008EncryptionKey Vault exposed to public network without firewall restrictionsHIGH
AZ-009MonitoringActivity log retention below 90 daysMEDIUM
AZ-010MonitoringMicrosoft Defender for Cloud not enabled on key resource typesHIGH
AZ-011MonitoringKey Vault without diagnostic logging enabledMEDIUM
AZ-012ComputeVirtual Machine with public IP directly attachedMEDIUM
AZ-013ComputeVirtual Machine without endpoint protection extensionMEDIUM
AZ-014ComputeVirtual Machine OS disk without Azure Disk Encryption (ADE)MEDIUM
AZ-015NetworkRDP port 3389 exposed to internet via NSGCRITICAL
AZ-016NetworkSSH port 22 exposed to internet via NSGCRITICAL
AZ-017StorageStorage account permitting non-HTTPS trafficHIGH
AZ-018StorageStorage account allowing legacy TLS versions (below 1.2)MEDIUM
AZ-019IdentityGuest user accounts present in Entra ID tenantLOW
AZ-020EncryptionKey Vault missing soft delete or purge protectionMEDIUM

Requirements

  • Python 3.10+
  • Azure credentials configured — one of:
    • az login (Azure CLI)
    • Environment variables: AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID
    • Managed Identity (when running on Azure)
  • Required Azure RBAC permissions: Reader on the subscription
  • Required Microsoft Graph permissions (for AZ-005, AZ-006, AZ-019):
    • UserAuthenticationMethod.Read.All
    • Application.Read.All

Identity checks (AZ-005, AZ-019) are skipped gracefully if Graph API permissions are unavailable — the rest of the audit runs unaffected.

Installation

root@kitploit:~
pip install -e .

Usage

root@kitploit:~
# Full audit — all checks, all severities
azure-auditor

# Target a specific subscription
azure-auditor --subscription <subscription-id>

# Show only HIGH and CRITICAL findings
azure-auditor --severity HIGH

# Save JSON report to a specific directory
azure-auditor --output-dir ./reports

# Terminal output only
azure-auditor --no-json

# Verbose logging
azure-auditor --verbose

Or without installing:

root@kitploit:~
PYTHONPATH=src python -m azure_security_auditor.cli --subscription <id>

Output

Terminal — Rich-formatted table, sorted by severity (CRITICAL first):

root@kitploit:~
╭──────────────────────────────────────────────────────────────────╮
│                    Azure Security Posture Audit                   │
│  Subscription:  My Production Subscription                        │
│  ID:            xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx             │
│  Run at:        2026-07-12T10:00:00Z                              │
│  Findings:      12 total  (2 CRITICAL  6 HIGH  4 MEDIUM  0 LOW)  │
╰──────────────────────────────────────────────────────────────────╯

 Severity    Check ID  Check                                     Resource         Detail
 ✖ CRITICAL  AZ-015    RDP Port 3389 Exposed to Internet...      /subscriptions/. ...
 ✖ CRITICAL  AZ-001    Owner Role Assigned at Subscription...    <principal-id>   ...
 ■ HIGH      AZ-010    Defender for Cloud Not Enabled — VMs      /subscriptions/. ...
 ...

JSON — Written to reports/azure_audit_<subscription>_<timestamp>.json.

Project Structure

root@kitploit:~
src/
  azure_security_auditor/
    cli.py                      # argparse entrypoint
    engine.py                   # ThreadPoolExecutor orchestrator
    models.py                   # Finding, AuditResult, Severity
    checks/
      rbac.py                   # AZ-001, AZ-002
      network.py                # AZ-003, AZ-015, AZ-016
      storage.py                # AZ-004, AZ-017, AZ-018
      identity.py               # AZ-005, AZ-019
      service_principals.py     # AZ-006
      encryption.py             # AZ-007, AZ-008, AZ-020
      monitoring.py             # AZ-009, AZ-010, AZ-011
      compute.py                # AZ-012, AZ-013, AZ-014
    reporters/
      terminal.py               # Rich table output
      json_reporter.py          # JSON file output

Authentication

Uses DefaultAzureCredential — tries in order:

  1. Environment variables (AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID)
  2. Azure CLI (az login)
  3. Managed Identity

CI/CD (Service Principal)

root@kitploit:~
export AZURE_CLIENT_ID="<app-id>"
export AZURE_CLIENT_SECRET="<secret>"
export AZURE_TENANT_ID="<tenant-id>"
azure-auditor --subscription <subscription-id>
Download Tool