Misconfiguration scanning
Dynamic Python rule modules inspect Azure resources through Azure SDK clients and return normalized security findings.
OpenShield scans Azure subscriptions for misconfigurations, enriches findings with CVE intelligence, maps risks to compliance frameworks, stores scan history, exposes a Flask API, and presents results through a React dashboard with demo and live modes.
Static learning hub. No backend, no login, no fake upload flows.
Overview
OpenShield is built to help users identify risky Azure configurations, understand the impact, connect findings to compliance controls, and follow practical remediation guidance. It is not a cloud provider replacement or a SIEM; it is a focused Azure CSPM platform for posture visibility and learning.
Dynamic Python rule modules inspect Azure resources through Azure SDK clients and return normalized security findings.
Findings can be enriched with NVD/CVE context so security issues are easier to prioritize and explain.
Technical findings are mapped to CIS Azure, NIST CSF, ISO 27001, and SOC 2 for governance-oriented reporting.
Each rule is paired with a CLI playbook so contributors and users can move from detection to manual remediation.
Architecture
The platform follows a simple pipeline: Azure credentials are resolved by DefaultAzureCredential, the scan engine loads
rule files from scanner/rules/*.py, findings are enriched and stored, then exposed through the API and dashboard.
Core engine, Azure SDK wrapper, NVD/CVE enrichment, and auto-loaded rule files.
Flask REST API with JWT authentication, CORS, migrations, scans, findings, score, compliance, and AI routes.
Vite, React, and Tailwind dashboard covering monitoring, discovery, prioritization, compliance, drift, and AI.
RAG knowledge pipeline, ChromaDB vector store builder, retriever, and cloud-security knowledge skills.
Optional Log Analytics ingestion plus KQL analytics rules for detection workflows.
Checks syntax, secrets, rule structure, playbooks, compliance JSON, API syntax, and cross-references.
Rule coverage
OpenShield currently has 39 dynamic rules. The strongest contributor work improves rule accuracy, reduces false positives, strengthens validation, or improves remediation quality.
Most checks are high severity. That makes validation important: high-severity false positives damage trust quickly.
Known cleanup item: keep category names consistent, especially KeyVault vs Key Vault.
Learning roadmap
Follow this path if you are new to OpenShield or preparing to contribute. Learn the security problem before touching code.
Understand subscriptions, identities, resources, networking, storage, Key Vault, and logging.
ReadLearn how posture tools detect insecure cloud configuration and why false positives matter.
ReadTrace the flow from Azure SDK collection to scanner rules, enrichment, storage, API, and dashboard.
ReadStudy rule structure, metadata, severity, categories, and safe test scenarios.
ReadMap technical findings to CIS, NIST CSF, ISO 27001, and SOC 2 without forcing weak mappings.
ReadWrite CLI guidance that fixes the issue and includes validation commands.
ReadUnderstand optional Log Analytics ingestion and KQL analytics rules for security monitoring.
ReadReview the RAG pipeline, knowledge loaders, retriever, and AI insight routes.
ReadFind topics
Contributors
Good contributions should improve detection accuracy, correctness of findings, remediation quality, documentation clarity, or system reliability. Cosmetic work is useful only when it supports those goals.
Add or improve Azure checks with accurate metadata, safe SDK usage, realistic test cases, and clear findings.
Keep remediation scripts aligned with rules. Every fix should include validation and avoid unsafe blanket changes.
Improve CIS, NIST, ISO 27001, and SOC 2 mappings. Do not map controls just to inflate coverage.
Connect live API flows carefully. Do not leave mock-backed UI pretending to be production data.
Implement missing endpoints consistently with JWT auth, error handling, data contracts, and PostgreSQL models.
Improve RAG quality, knowledge loading, KQL rules, and ingestion without exposing sensitive findings unnecessarily.
Known gaps
These are not failures; they are useful follow-up targets. Documenting them prevents contributors from pretending the platform is more complete than it is.
python, but local environments may only expose python3.Documentation
These relative links are intentionally static-hosting friendly when this file is served from the docs learning folder. Adjust paths if the Learn page is moved.