Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
de371f4
chore: add skeleton files and requirements
Vishnu2707 Apr 25, 2026
dd24ce0
fix: remove embedded git repo
Vishnu2707 Apr 25, 2026
e872074
Core Structure Created
Vishnu2707 Apr 25, 2026
ee77377
feat: build complete core — scanner engine, 10 rules, API, playbooks,…
Vishnu2707 Apr 25, 2026
053be03
docs: replace ASCII architecture with interactive Mermaid diagram
Vishnu2707 Apr 25, 2026
b31ecb7
feat: Sentinel integration — ingest.py, 4 KQL rules, setup guide (#12)
TFT444 May 2, 2026
d545744
fix: add AZ-STOR-003 compliance mappings, correct NIST control to PR.…
Vishnu2707 May 4, 2026
6c0c58e
docs: add real-world breach scenarios for all 10 starter rules (#15)
TFT444 May 4, 2026
e4382cd
feat: add AZ-KV-002 key vault public access rule and remediation play…
parthrohit22 May 4, 2026
7593ba0
Merge branch 'main' into dev
Vishnu2707 May 4, 2026
0ec2290
Merge remote-tracking branch 'origin/main' into dev
Vishnu2707 May 4, 2026
e8fed83
docs: update README with rule count, roadmap progress and contributors
Vishnu2707 May 4, 2026
35312d4
feat: add network security rules AZ-NET-003 to AZ-NET-010 (#16)
TFT444 May 4, 2026
aee88b2
Merge remote-tracking branch 'origin/main' into dev
Vishnu2707 May 4, 2026
2badbce
Feat/az stor 003 (#21)
ritiksah141 May 5, 2026
1e7a81f
docs: add SOC 2 Type II compliance framework mapping (#33)
TFT444 May 8, 2026
f409b67
Refactor/azure client network methods (#22)
TFT444 May 9, 2026
bb47779
feat: add CI pipeline with 6 automated checks (#34)
ritiksah141 May 9, 2026
0d99e2d
Merge branch 'main' into dev
Vishnu2707 May 9, 2026
46096a6
Merge remote-tracking branch 'origin/main' into dev
Vishnu2707 May 9, 2026
9e5d355
docs: update .github/ISSUE_TEMPLATE/new_rule.md to reflect current co…
Vishnu2707 May 9, 2026
2a5655e
docs: update .github/PULL_REQUEST_TEMPLATE.md to reflect current code…
Vishnu2707 May 9, 2026
57f25a6
docs: update CONTRIBUTING.md to reflect current codebase state
Vishnu2707 May 9, 2026
309deca
docs: update README.md to reflect current codebase state
Vishnu2707 May 9, 2026
693b20c
docs: update compliance/frameworks/iso27001.json to reflect current c…
Vishnu2707 May 9, 2026
c292efc
docs: update compliance/frameworks/nist_csf.json to reflect current c…
Vishnu2707 May 9, 2026
034b9d5
docs: update docs/adding-a-rule.md to reflect current codebase state
Vishnu2707 May 9, 2026
936a7d6
docs: update docs/architecture.md to reflect current codebase state
Vishnu2707 May 9, 2026
3cd0f00
docs: update docs/az-stor-003-test-plan.md to reflect current codebas…
Vishnu2707 May 9, 2026
17c29f4
docs: update docs/azure-setup.md to reflect current codebase state
Vishnu2707 May 9, 2026
6275396
docs: update docs/ci-pipeline.md to reflect current codebase state
Vishnu2707 May 9, 2026
ab16a16
docs: update docs/sentinel-setup.md to reflect current codebase state
Vishnu2707 May 9, 2026
1cd89dd
docs: update sentinel/TEST_PLAN.md to reflect current codebase state
Vishnu2707 May 9, 2026
a2fed2e
docs: update docs/api-reference.md to reflect current codebase state
Vishnu2707 May 9, 2026
98894bc
docs: update docs/rules-reference.md to reflect current codebase state
Vishnu2707 May 9, 2026
fdae7e7
Merge remote-tracking branch 'origin/dev' into dev
Vishnu2707 May 9, 2026
85bbb7f
docs: update README.md for professional open source style
Vishnu2707 May 9, 2026
0643eaf
docs: update CONTRIBUTING.md for professional open source style
Vishnu2707 May 9, 2026
5ebcdd9
docs: update docs/adding-a-rule.md for professional open source style
Vishnu2707 May 9, 2026
eb88659
Merge branch 'main' into dev
Vishnu2707 May 9, 2026
2d230dd
docs: update deployment guide to use Render instead of Azure App Service
Vishnu2707 May 9, 2026
bac6146
Merge remote-tracking branch 'origin/dev' into dev
Vishnu2707 May 9, 2026
d4384fe
feat: add rule AZ-STOR-004 storage account diagnostic logging check (…
SHAURYAKSHARMA24 May 13, 2026
826396a
feat: add rule AZ-IDN-003 Adds scanner rule AZ-IDN-003 detecting Entr…
TFT444 May 13, 2026
cd47b68
feat: add rule AZ-CMP-002 — VM disk not protected by CMK or ADE (#47)
TFT444 May 13, 2026
1efe1f3
Feat/api deployment (#46)
ritiksah141 May 13, 2026
ba6c70c
feat: AZ-NET-011 Network Watcher not enabled in all regions (#42)
emon22-ts May 13, 2026
e7c3487
feat: add AZ-DB-003 PostgreSQL Flexible Server SSL enforcement rule a…
emon22-ts May 16, 2026
024e635
Merge branch 'main' into dev
Vishnu2707 May 16, 2026
bc146ef
[RULE] AZ-CMP-003: VM without endpoint protection installed (#57)
TFT444 May 23, 2026
923cc75
[DOCS] Add OpenShield learning and onboarding portal (#51)
parthrohit22 May 23, 2026
954505c
Merge branch 'main' into dev
Vishnu2707 May 24, 2026
4a2ef01
refactor: reuse database connection per request using Flask g (#41)
safidnadaf May 24, 2026
0e82402
docs: add security policy, issue template, and README badges (#64)
ritiksah141 May 24, 2026
1b25a74
feat: add rule AZ-KV-004 Key Vault purge protection disabled (#55)
aav-wh May 24, 2026
4a1b153
feat: add AZ-STOR-005 geo-redundant storage rule (#74)
SHAURYAKSHARMA24 May 27, 2026
cd339e1
feat: add rule AZ-DB-004 SQL Server firewall allows all Azure service…
aav-wh May 27, 2026
00dad53
docs: add 6 README badges (#79)
ritiksah141 May 28, 2026
d362cc7
feat: add AZ-KV-005 Key Vault certificate expiring within 30 days (#75)
TFT444 May 28, 2026
82efdfb
[RULE] AZ-CMP-004: VM without automatic OS patching enabled (#73)
TFT444 May 28, 2026
1757c84
Merge branch 'main' into dev
Vishnu2707 May 29, 2026
6ff2686
feat: add AI provider abstraction layer for Anthropic, Groq and Gemin…
TFT444 May 29, 2026
5dedde9
Smoke Test Alginment after the recent changes to the Repository causi…
ritiksah141 May 29, 2026
8cf18db
feat: add AZ-IDN-004 PIM not configured for admin roles rule and play…
emon22-ts May 30, 2026
4b2afb5
feat: add AI executive summary and remediation endpoint (#95)
SHAURYAKSHARMA24 May 30, 2026
3636dd7
feat(scanner): add AZ-NET-014 VNet peering gateway transit rule (#94)
aav-wh May 30, 2026
70cb686
feat: add AZ-NET-013 Azure Firewall VNet rule (#99)
SHAURYAKSHARMA24 May 31, 2026
bf82c39
Implement AI Q&A over scan findings (#98)
SHAURYAKSHARMA24 May 31, 2026
9a1f824
Merge branch 'main' into dev
Vishnu2707 May 31, 2026
c0116f8
Feat/CVE correlation (#96)
ritiksah141 Jun 1, 2026
3d17d7b
feat: add RAG powered AI insights layer with Azure security skill emb…
TFT444 Jun 1, 2026
a2263a4
feat: add AZ-NET-012 - NSG flow logs not enabled rule (#76)
safidnadaf Jun 1, 2026
808a9c6
fix: resolve CodeQL warnings in embed.py and test files
Vishnu2707 Jun 1, 2026
c9592c0
Merge branch 'main' into dev
Vishnu2707 Jun 1, 2026
931d32c
feat(frontend): build complete 7-page security dashboard (#111)
vogonPrayas Jun 3, 2026
673511e
Feat/jwt secret prod fail closed (#117)
ritiksah141 Jun 3, 2026
03cd7cb
feat: AI-004 RAG Pipeline - Document Ingestion and Vector Store (#104)
emon22-ts Jun 3, 2026
115320f
Potential fix for pull request finding 'Unused import'
Vishnu2707 Jun 4, 2026
4ad4ceb
feat: add AZ-PQC-001 to AZ-PQC-003 post-quantum cryptography scanner …
Vishnu2707 Jun 4, 2026
6e5e9a4
feat: add PQC compliance mappings, azure client methods and dependencies
Vishnu2707 Jun 4, 2026
83502d9
docs: update README with post-quantum cryptography scanning and rule …
Vishnu2707 Jun 4, 2026
16f7e77
Feat/live data wiring (#122)
ritiksah141 Jun 4, 2026
ffc3652
Feat/decouple CVE enrichment (#127)
ritiksah141 Jun 5, 2026
1e09618
docs: update OpenShield Learn content, navigation, and hosting suppor…
parthrohit22 Jun 5, 2026
c938551
feat(tests): MockAzureClient rule regression test harness — 7 rules o…
TFT444 Jun 5, 2026
cdcbb2b
AZ-IDN-005 to AZ-IDN-009 — Entra ID identity scanner rules (#109)
TFT444 Jun 5, 2026
9da652b
Merge branch 'main' into dev
Vishnu2707 Jun 5, 2026
7dd74b9
Potential fix for pull request finding 'Empty except'
Vishnu2707 Jun 5, 2026
1ba73b1
Potential fix for pull request finding 'Unused variable, import, func…
Vishnu2707 Jun 5, 2026
d537461
Implement threat simulation prompt builder (#138)
TFT444 Jun 13, 2026
852768d
docs: add frontend API validation guide (#134)
SHAURYAKSHARMA24 Jun 13, 2026
42a0399
fix(compliance): align rule reference and framework mappings (#130)
m-khan-97 Jun 13, 2026
d7c59db
feat: implement asynchronous scan execution with background worker (#…
ritiksah141 Jun 13, 2026
6b5b75f
feat(scanner): add AZ-NET-015 public DNS zone enumeration rule (#106)
aav-wh Jun 13, 2026
d37e8dc
fix: scope posture endpoints to latest completed scan (#145)
TFT444 Jun 21, 2026
4abc2d6
Fix: Make Flask app test-safe and run full pytest suite in CI (#143)
emon22-ts Jun 21, 2026
e0512bc
feat: Integrate Azure Offensive Skills and Dynamic AI Grounding (#137)
ritiksah141 Jun 21, 2026
3c951ce
feat(auth): require JWT for GET /api/* endpoints with optional public…
TFT444 Jul 2, 2026
15d0537
fix(scanner): improve AZ-NET-008 with SOC2 mapping and azure_client a…
aav-wh Jul 2, 2026
e137e64
CI: parallel jobs, lint/format gate, security scanning, coverage (#15…
ritiksah141 Jul 6, 2026
cdd5b42
Fix async scan state recovery (#169)
ritiksah141 Jul 8, 2026
82cf855
feat(infra): observability layer — structured logs, request IDs, metr…
SHAURYAKSHARMA24 Jul 8, 2026
b6b312a
fix(compliance): correct duplicate CIS control mappings, TLS version …
TFT444 Jul 8, 2026
c4f7e0a
build(deps): bump react-router (#148)
dependabot[bot] Jul 8, 2026
69d1f5e
build(deps-dev): bump vite (#147)
dependabot[bot] Jul 8, 2026
6f138b2
docs: add Azure scanner validation docs (#142)
parthrohit22 Jul 8, 2026
0abe4bd
Merge branch 'main' into dev
Vishnu2707 Jul 8, 2026
fea9314
fix: disable auto deploy to Render, manual trigger only
Vishnu2707 Jul 8, 2026
0e85ecf
fix: ruff auto fixes
Vishnu2707 Jul 8, 2026
8cd0406
fix: resolve CodeQL high findings - XSS innerHTML, clear text logging…
Vishnu2707 Jul 8, 2026
8becdd1
chore: add CODEOWNERS, issue templates, Docker setup and autonomous C…
Vishnu2707 Jul 8, 2026
7170af4
fix: raise dependency review threshold to critical only
Vishnu2707 Jul 8, 2026
886a283
fix: upgrade vulnerable dependencies flagged by pip-audit and npm audit
Vishnu2707 Jul 8, 2026
1ca80bc
fix: revert dependency review threshold back to high
Vishnu2707 Jul 8, 2026
52ec129
fix: use python:3.11-slim-bookworm base image to reduce Trivy vulnera…
Vishnu2707 Jul 8, 2026
eec36fe
fix: upgrade jaraco.context, transformers and wheel to fix Trivy HIGH…
Vishnu2707 Jul 8, 2026
a0ac0d0
Merge branch 'main' into dev
Vishnu2707 Jul 8, 2026
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
14 changes: 14 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Database
DATABASE_URL=postgresql://openshield:openshield@localhost:5432/openshield

# Auth
JWT_SECRET=change-me-in-production

# AI providers - add at least one
ANTHROPIC_API_KEY=
GROQ_API_KEY=
GEMINI_API_KEY=

# Optional
NVD_API_KEY=
SENTRY_DSN=
27 changes: 27 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Global owner - final merge approval
* @Vishnu2707

# Scanner rules
/scanner/rules/ @SHAURYAKSHARMA24 @TFT444
/playbooks/ @SHAURYAKSHARMA24 @TFT444

# AI layer
/ai/ @ritiksah141 @TFT444

# Frontend
/frontend/ @vogonPrayas @SHAURYAKSHARMA24

# API and backend
/api/ @ritiksah141

# Tests
/tests/ @ritiksah141 @parthrohit22

# Compliance
/compliance/ @SHAURYAKSHARMA24

# Docs
/docs/ @parthrohit22

# CI/CD and infra
/.github/ @Vishnu2707 @ritiksah141
11 changes: 8 additions & 3 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
---
name: Bug report
name: Bug Report
about: Something is broken
title: 'bug: '
labels: bug
assignees: ''
---

## What happened?

## What did you expect?

## Steps to reproduce?
## Steps to reproduce

## Environment
- OpenShield version:
- Python version:
- Azure SDK version:
- OS:

## Logs or screenshots
68 changes: 7 additions & 61 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -1,69 +1,15 @@
---
name: Feature Request
about: Suggest a new rule, compliance mapping, playbook, or capability for OpenShield
title: "feat: "
about: Suggest a new feature or improvement
title: 'feat: '
labels: enhancement
assignees: ''
---

## Summary

A clear one-sentence description of the feature you are proposing.

## Problem It Solves

What is the current limitation or gap? Why does this matter for Azure cloud security posture?
Link any related issues or discussions if relevant.

## Proposed Solution

Describe what you want to happen. Be specific.

---

**If proposing a new scanner rule, fill in all fields below:**

- Azure resource type:
- Misconfiguration it detects:
- Suggested RULE_ID (format: `AZ-<SERVICE>-<NNN>`, e.g. `AZ-KV-003`):
- Severity: (CRITICAL / HIGH / MEDIUM / LOW)
- Compliance frameworks it maps to:
- CIS Azure Benchmark control:
- NIST CSF control:
- ISO 27001 control:
- Does a matching remediation playbook need to be created? (Yes / No)

---

**If proposing a compliance mapping:**

- Framework name and version:
- Control ID(s):
- Which existing rules does it apply to:
- Source documentation link:

---

**If proposing an API or CLI change:**

- Endpoint or command affected:
- Current behaviour:
- Proposed behaviour:
- Example request/response or command:

---

## Alternatives Considered

What other approaches did you consider, and why did you rule them out?

## Additional Context

Add any Azure documentation links, CVE references, CIS Benchmark pages, screenshots, or reference implementations here.
## What problem does this solve?

## Contribution
## Describe the solution

Are you willing to implement this yourself?
## Alternatives considered

- [ ] Yes, I plan to open a PR for this
- [ ] I can help review a PR but cannot implement it myself
- [ ] I am not able to contribute code for this
## Additional context
36 changes: 20 additions & 16 deletions .github/ISSUE_TEMPLATE/new_rule.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,28 @@
---
name: New scan rule
about: Propose a new Azure misconfiguration rule
labels: new-rule, good-first-issue
name: New Scanner Rule
about: Propose a new Azure security scanner rule
title: 'feat(scanner): add AZ-XXX-000 rule name'
labels: scanner-rule
assignees: ''
---

## Rule proposal
## Rule Details
- Rule ID: AZ-XXX-000
- Severity: HIGH / MEDIUM / LOW
- Category: Storage / Network / Identity / Database / Compute / Key Vault / PostQuantum
- Frameworks: CIS / NIST / ISO 27001 / SOC 2

**Rule ID:** AZ-XXX-000
**Rule name:**
**Severity:** HIGH / MEDIUM / LOW
**Category:** Storage / Network / Identity / Database / Compute / Key Vault
## What does it detect?

## What misconfiguration does it detect?
## Detection logic

## Why is it a security risk?
## Why is this a security risk?

## Which frameworks does it map to?
- CIS:
- NIST:
- ISO 27001:
- SOC 2:
## Remediation steps

## Remediation (how to fix it)?
## Test plan
- [ ] Tested against real Azure free trial subscription
- [ ] Compliant case returns no findings
- [ ] Non-compliant case returns correct finding
- [ ] CLI playbook written and tested
- [ ] All four compliance framework JSONs updated
19 changes: 19 additions & 0 deletions .github/workflows/dependency-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Dependency Review

on:
pull_request:
branches: [dev, main]

permissions:
contents: read
pull-requests: write

jobs:
dependency-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/dependency-review-action@v4
with:
fail-on-severity: high
comment-summary-in-pr: always
42 changes: 42 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Docker Build and Push

on:
push:
tags:
- 'v*'
workflow_dispatch:

permissions:
contents: read
packages: write

jobs:
docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/openshield-org/openshield
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=raw,value=latest,enable={{is_default_branch}}

- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
21 changes: 21 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Release

on:
push:
tags:
- 'v*'

permissions:
contents: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
make_latest: true
25 changes: 25 additions & 0 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Mark stale issues and PRs

on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:

jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
stale-issue-message: 'This issue has been inactive for 30 days and will be closed in 7 days unless there is activity.'
stale-pr-message: 'This PR has been inactive for 14 days. Please update or it will be closed in 7 days.'
close-issue-message: 'Closing due to inactivity. Feel free to reopen if still relevant.'
close-pr-message: 'Closing due to inactivity. Feel free to reopen if still relevant.'
days-before-issue-stale: 30
days-before-pr-stale: 14
days-before-issue-close: 7
days-before-pr-close: 7
stale-issue-label: stale
stale-pr-label: stale
exempt-issue-labels: 'pinned,security,roadmap'
exempt-pr-labels: 'pinned,security'
13 changes: 13 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM python:3.11-slim-bookworm

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["gunicorn", "--workers", "2", "--threads", "2", "--timeout", "120", "--bind", "0.0.0.0:8000", "api.app:app"]
45 changes: 45 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
version: '3.8'

services:
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: openshield
POSTGRES_USER: openshield
POSTGRES_PASSWORD: openshield
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U openshield"]
interval: 10s
timeout: 5s
retries: 5

api:
build: .
ports:
- "8000:8000"
environment:
DATABASE_URL: postgresql://openshield:openshield@db:5432/openshield
JWT_SECRET: change-me-in-production
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-}
NVD_API_KEY: ${NVD_API_KEY:-}
depends_on:
db:
condition: service_healthy

frontend:
image: node:20-alpine
working_dir: /app
volumes:
- ./frontend:/app
command: sh -c "npm install && npm run dev -- --host"
ports:
- "5173:5173"
environment:
VITE_API_BASE_URL: http://localhost:8000

volumes:
postgres_data:
4 changes: 3 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ psycopg2-binary==2.9.9
python-dotenv==1.2.2
pyjwt==2.13.0
requests==2.34.2
pyyaml==6.0.1
PyYAML==6.0.3
gunicorn==26.0.0
cryptography==49.0.0
msrest==0.7.1
Expand All @@ -32,3 +32,5 @@ python-json-logger>=2.0.7
sentry-sdk>=1.40.0
pytest>=7.4.0
pytest-cov>=4.1.0
certifi==2026.6.17
cryptography==49.0.0
Loading