
Azure सुरक्षा स्थिति, RBAC, NSGs, भंडारण, पहचान और एन्क्रिप्शन का ऑडिट करने के लिए CLI उपकरण
एक हल्का, प्रोडक्शन-शैली CLI टूल जो Azure सुरक्षा कॉन्फ़िगरेशन का ऑडिट करता है और सामान्य गलत कॉन्फ़िगरेशन को सामने लाता है — यह वही दर्शाता है जो Microsoft Defender for Cloud आंतरिक रूप से जाँचता है।
| ID | Category | Check | Severity |
|---|---|---|---|
| AZ-001 | RBAC | सब्सक्रिप्शन स्कोप पर Owner / Contributor असाइन किया गया | CRITICAL |
| AZ-002 | RBAC | रिसोर्स ग्रुप स्कोप पर Owner / Contributor असाइन किया गया | HIGH |
| AZ-003 | Network | 0.0.0.0/0 इनबाउंड अनुमति नियम वाला NSG | HIGH |
| AZ-004 | Storage | सार्वजनिक ब्लॉब एक्सेस सक्षम वाला स्टोरेज अकाउंट | HIGH |
| AZ-005 | Identity | MFA पंजीकृत किए बिना Entra ID उपयोगकर्ता | HIGH |
| AZ-006 | Identity | Owner / Contributor अनुमतियों वाला सेवा प्रिंसिपल | HIGH |
| AZ-007 | Encryption | स्पष्ट एन्क्रिप्शन कॉन्फ़िगरेशन के बिना प्रबंधित डिस्क | MEDIUM |
| AZ-008 | Encryption | फ़ायरवॉल प्रतिबंधों के बिना सार्वजनिक नेटवर्क के लिए खुला Key Vault | HIGH |
| AZ-009 | Monitoring | एक्टिविटी लॉग प्रतिधारण 90 दिनों से कम | MEDIUM |
| AZ-010 | Monitoring | मुख्य रिसोर्स प्रकारों पर Microsoft Defender for Cloud सक्षम नहीं है | HIGH |
| AZ-011 | Monitoring | डायग्नोस्टिक लॉगिंग सक्षम किए बिना Key Vault | MEDIUM |
| AZ-012 | Compute | सीधे संलग्न सार्वजनिक IP वाला वर्चुअल मशीन | MEDIUM |
| AZ-013 | Compute | एंडपॉइंट सुरक्षा एक्सटेंशन के बिना वर्चुअल मशीन | MEDIUM |
| AZ-014 | Compute | Azure Disk Encryption (ADE) के बिना वर्चुअल मशीन OS डिस्क | MEDIUM |
| AZ-015 | Network | NSG के माध्यम से इंटरनेट पर खुला RDP पोर्ट 3389 | CRITICAL |
| AZ-016 | Network | NSG के माध्यम से इंटरनेट पर खुला SSH पोर्ट 22 | CRITICAL |
| AZ-017 | Storage | गैर-HTTPS ट्रैफ़िक की अनुमति देने वाला स्टोरेज अकाउंट | HIGH |
| AZ-018 | Storage | पुराने TLS संस्करणों (1.2 से नीचे) की अनुमति देने वाला स्टोरेज अकाउंट | MEDIUM |
| AZ-019 | Identity | Entra ID टेनेंट में मौजूद अतिथि उपयोगकर्ता खाते | LOW |
| AZ-020 |
az login (Azure CLI)AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_IDReaderUserAuthenticationMethod.Read.AllApplication.Read.Allपहचान जाँच (AZ-005, AZ-019) को Graph API अनुमतियाँ उपलब्ध न होने पर सुचारू रूप से छोड़ दिया जाता है — बाकी ऑडिट अप्रभावित चलती है।
pip install -e .
# पूर्ण ऑडिट — सभी जाँच, सभी गंभीरताएँ
azure-auditor
# किसी विशिष्ट सब्सक्रिप्शन को लक्षित करें
azure-auditor --subscription <subscription-id>
# केवल HIGH और CRITICAL निष्कर्ष दिखाएँ
azure-auditor --severity HIGH
# JSON रिपोर्ट को किसी विशिष्ट निर्देशिका में सहेजें
azure-auditor --output-dir ./reports
# केवल टर्मिनल आउटपुट
azure-auditor --no-json
# वर्बोज़ लॉगिंग
azure-auditor --verbose
या बिना इंस्टॉल किए:
PYTHONPATH=src python -m azure_security_auditor.cli --subscription <id>
टर्मिनल — Rich-फ़ॉर्मेटेड तालिका, गंभीरता के अनुसार क्रमबद्ध (CRITICAL पहले):
╭──────────────────────────────────────────────────────────────────╮
│ 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 — reports/azure_audit_<subscription>_<timestamp>.json पर लिखा जाता है।
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
DefaultAzureCredential का उपयोग करता है — इस क्रम में प्रयास करता है:
AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID)az login)export AZURE_CLIENT_ID="<app-id>"
export AZURE_CLIENT_SECRET="<secret>"
export AZURE_TENANT_ID="<tenant-id>"
azure-auditor --subscription <subscription-id>
| Encryption |
| सॉफ्ट डिलीट या पर्ज सुरक्षा से वंचित Key Vault |
| MEDIUM |