Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,10 @@ Findings map to NIST FIPS 203 (ML-KEM), FIPS 204 (ML-DSA), and FIPS 205 (SLH-DSA

| Feature | Description |
|---|---|
| **Misconfiguration Scanner** | Runs 95 Azure security rules across storage, network, identity, database, compute, Key Vault, AKS, post-quantum cryptography, backup, serverless, private endpoint, and supply chain posture |
| **Misconfiguration Scanner** | Runs 96 Azure security rules across storage, network, identity, database, compute, Key Vault, AKS, post-quantum cryptography, backup, serverless, private endpoint, and supply chain posture |
| **Compliance Mapper** | Maps findings to CIS Benchmarks, NIST CSF, ISO 27001, and SOC 2 framework JSON files |
| **Scan History API** | Stores scans and findings in PostgreSQL and exposes findings, score, scan history, compliance posture, drift, and resource inventory over REST |
| **Remediation Playbooks** | Every rule ships with a matching Azure CLI remediation script (95 playbooks) |
| **Remediation Playbooks** | Every rule ships with a matching Azure CLI remediation script (96 playbooks) |
| **Security Dashboard** | Full React dashboard deployed on Vercel - live monitoring, findings, compliance, drift, prioritization, and AI-layer views |
| **Project Website** | Documentation and reference site at [openshield-website.vercel.app](https://openshield-website.vercel.app) - blog, rules gallery, docs, roadmap, releases, and interactive playground |
| **Sentinel Integration** | Normalises findings and pushes them into Microsoft Sentinel via a Log Analytics custom table and KQL analytics rules |
Expand Down Expand Up @@ -104,11 +104,11 @@ Project policies and assurance evidence:
flowchart TD
A["React Dashboard\nVercel · Live"]
B["Flask REST API\nJWT · CORS · Blueprints"]
C["Scanner Engine\n95 Python rules"]
C["Scanner Engine\n96 Python rules"]
D["Azure Subscription\nScanned via Azure SDK + Graph"]
E["Compliance Framework JSON\nCIS · NIST · ISO 27001 · SOC 2"]
F["PostgreSQL Database\nFindings · Scans"]
G["Azure CLI Playbooks\n95 remediation scripts"]
G["Azure CLI Playbooks\n96 remediation scripts"]
H["sentinel/ingest.py\nNormalise + HMAC upload"]
I["Microsoft Sentinel\nOpenShieldFindings_CL · KQL rules"]

Expand Down
16 changes: 8 additions & 8 deletions docs/learn/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -752,7 +752,7 @@ <h1><span class="gradient-text">Learn Azure security posture with OpenShield.</s
<div class="terminal-top" aria-hidden="true"><span class="dot"></span><span class="dot"></span><span class="dot"></span></div>
<div class="terminal-body">
<p><span class="prompt">openshield</span> scan --subscription Azure</p>
<p><span class="dim">loading rules:</span> <span class="cyan">95 dynamic checks</span></p>
<p><span class="dim">loading rules:</span> <span class="cyan">96 dynamic checks</span></p>
<p><span class="dim">enrichment:</span> NVD / CVE intelligence</p>
<p><span class="dim">storage:</span> PostgreSQL scan history</p>
<p><span class="dim">api:</span> Flask + JWT + CORS</p>
Expand All @@ -764,8 +764,8 @@ <h1><span class="gradient-text">Learn Azure security posture with OpenShield.</s
</div>

<div class="metrics" aria-label="OpenShield project metrics">
<div class="metric"><strong>95</strong><span>Azure scan rules</span></div>
<div class="metric"><strong>95</strong><span>CLI remediation playbooks</span></div>
<div class="metric"><strong>96</strong><span>Azure scan rules</span></div>
<div class="metric"><strong>96</strong><span>CLI remediation playbooks</span></div>
<div class="metric"><strong>4</strong><span>Compliance frameworks</span></div>
<div class="metric"><strong>8</strong><span>AI security skills</span></div>
<div class="metric"><strong>58</strong><span>High-severity checks</span></div>
Expand Down Expand Up @@ -821,7 +821,7 @@ <h2 class="section-title">Production-shaped, MVP-friendly architecture</h2>
<div class="pipeline" aria-label="OpenShield platform pipeline">
<div class="pipeline-step"><strong>Azure Subscription</strong><span>Resources and configuration</span></div>
<div class="pipeline-step"><strong>Scanner Engine</strong><span>Python rule execution</span></div>
<div class="pipeline-step"><strong>Rule Evaluation</strong><span>95 dynamic checks</span></div>
<div class="pipeline-step"><strong>Rule Evaluation</strong><span>96 dynamic checks</span></div>
<div class="pipeline-step"><strong>CVE Enrichment</strong><span>NVD risk context</span></div>
<div class="pipeline-step"><strong>PostgreSQL</strong><span>Findings and scan history</span></div>
<div class="pipeline-step"><strong>Flask API</strong><span>JWT-protected REST routes</span></div>
Expand All @@ -841,9 +841,9 @@ <h2 class="section-title">Production-shaped, MVP-friendly architecture</h2>

<section id="rules" class="learn-section" data-search="rules coverage network storage compute database identity key vault post quantum severity high medium low findings">
<p class="section-kicker">Rule coverage</p>
<h2 class="section-title">95 Azure security rules</h2>
<h2 class="section-title">96 Azure security rules</h2>
<p class="section-intro">
OpenShield currently has 95 dynamic rules. The strongest contributor work improves rule accuracy, reduces false positives,
OpenShield currently has 96 dynamic rules. The strongest contributor work improves rule accuracy, reduces false positives,
strengthens validation, or improves remediation quality.
</p>

Expand All @@ -857,10 +857,10 @@ <h3>Coverage by category</h3>
<div class="bar-row"><span>Supply Chain</span><div class="bar"><span style="width: 35%;"></span></div><span>8</span></div>
<div class="bar-row"><span>KeyVault</span><div class="bar"><span style="width: 26%;"></span></div><span>6</span></div>
<div class="bar-row"><span>Kubernetes</span><div class="bar"><span style="width: 26%;"></span></div><span>6</span></div>
<div class="bar-row"><span>Compute</span><div class="bar"><span style="width: 22%;"></span></div><span>5</span></div>
<div class="bar-row"><span>Serverless</span><div class="bar"><span style="width: 22%;"></span></div><span>5</span></div>
<div class="bar-row"><span>Storage</span><div class="bar"><span style="width: 22%;"></span></div><span>5</span></div>
<div class="bar-row"><span>Backup</span><div class="bar"><span style="width: 17%;"></span></div><span>4</span></div>
<div class="bar-row"><span>Compute</span><div class="bar"><span style="width: 17%;"></span></div><span>4</span></div>
<div class="bar-row"><span>Database</span><div class="bar"><span style="width: 17%;"></span></div><span>4</span></div>
<div class="bar-row"><span>PostQuantum</span><div class="bar"><span style="width: 13%;"></span></div><span>3</span></div>
<div class="bar-row"><span>Data Link</span><div class="bar"><span style="width: 9%;"></span></div><span>2</span></div>
Expand All @@ -872,7 +872,7 @@ <h3>Severity distribution</h3>
<p>Most checks are high severity. That makes validation important: high-severity false positives damage trust quickly.</p>
<div class="severity" aria-label="Severity count summary">
<div class="severity-box high"><strong>58</strong><span>HIGH</span></div>
<div class="severity-box medium"><strong>31</strong><span>MEDIUM</span></div>
<div class="severity-box medium"><strong>32</strong><span>MEDIUM</span></div>
<div class="severity-box low"><strong>4</strong><span>LOW</span></div>
</div>
</article>
Expand Down
Loading