
CSPM open source pour Azure - analysez les erreurs de configuration et la cryptographie non sûre face aux ordinateurs quantiques, mappez les résultats à CIS/NIST/ISO27001/SOC2, et corrigez-les avec une seule commande
Gestion de la posture de sécurité cloud (CSPM) open source pour Azure : détectez les erreurs de configuration, associez-les aux référentiels CIS / NIST / ISO 27001 / SOC 2, corrigez-les avec une seule commande et identifiez les actifs cryptographiques nécessitant une migration post-quantique.
Site web · Documentation · Feuille de route · Journal des modifications · Politique de sécurité · Discord
Les artefacts de version incluent des sommes de contrôle SHA-256, un SBOM et des attestations de provenance liées à l'identité. Voir vérification des versions.
Les outils de sécurité cloud d'entreprise comme Wiz, Prisma Cloud et Microsoft Defender for Cloud coûtent 50 000 à 500 000 $/an.
Les startups, PME, universités et équipes étudiantes se retrouvent avec une visibilité nulle sur leur posture de sécurité Azure. Un blob de stockage mal configuré, un principal de service sur-privilégié ou une règle NSG ouverte peuvent rester indétectés pendant des mois.
OpenShield change la donne.
Les adversaires collectent aujourd'hui le trafic Azure chiffré pour le déchiffrer lorsque les ordinateurs quantiques seront disponibles. C'est ce qu'on appelle une attaque Harvest Now Decrypt Later (récolter maintenant, déchiffrer plus tard) et elle se produit en ce moment même.
OpenShield analyse Azure à la recherche d'actifs cryptographiques classiques qui doivent être migrés avant qu'il ne soit trop tard :
Les résultats sont associés aux normes NIST FIPS 203 (ML-KEM), FIPS 204 (ML-DSA) et FIPS 205 (SLH-DSA) et alimentent directement la planification de la migration post-quantique.
| Fonctionnalité | Description |
|---|---|
| Scanner d'erreurs de configuration | Exécute 95 règles de sécurité Azure couvrant le stockage, le réseau, l'identité, les bases de données, le calcul, Key Vault, AKS, la cryptographie post-quantique, la sauvegarde, le serverless, les points de terminaison privés et la posture de la chaîne d'approvisionnement |
| Mappeur de conformité | Associe les résultats aux fichiers JSON des référentiels CIS Benchmarks, NIST CSF, ISO 27001 et SOC 2 |
| API d'historique des analyses | Stocke les analyses et les résultats dans PostgreSQL et expose les résultats, le score, l'historique des analyses, la posture de conformité, la dérive et l'inventaire des ressources via REST |
| Playbooks de remédiation | Chaque règle est livrée avec un script de remédiation Azure CLI correspondant (95 playbooks) |
| Tableau de bord de sécurité | Tableau de bord React complet déployé sur Vercel : surveillance en direct, résultats, conformité, dérive, priorisation et vues de la couche IA |
| Site web du projet | Site de documentation et de référence à openshield-org.github.io/openshield : blog, galerie de règles, architecture, guides de preuves, feuille de route et versions |
| Intégration Sentinel | Normalise les résultats et les pousse dans Microsoft Sentinel via une table personnalisée Log Analytics et des règles analytiques KQL |
OpenShield a obtenu le badge OpenSSF Best Practices Passing, en complétant 100 % des critères applicables de niveau Passing couvrant la gouvernance du projet, le contrôle des changements, le signalement, la qualité, la sécurité et l'analyse de code.
OpenSSF Best Practices - Passing
Le statut OpenSSF du projet est publiquement vérifiable via le registre officiel du projet OpenSSF Best Practices. OpenShield continue de renforcer ses pratiques d'ingénierie, d'assurance sécurité et de gouvernance open source à mesure qu'il progresse vers les critères de niveau supérieur.
Politiques du projet et preuves d'assurance :
flowchart TD
A["React Dashboard\nVercel · Live"]
B["Flask REST API\nJWT · CORS · Blueprints"]
C["Scanner Engine\n95 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"]
H["sentinel/ingest.py\nNormalise + HMAC upload"]
I["Microsoft Sentinel\nOpenShieldFindings_CL · KQL rules"]
A -->|REST calls| B
B -->|trigger scans| C
B -->|read/write| F
B -->|compliance score| E
C -->|Azure SDK + Graph| D
C -->|findings| F
C -->|scan output JSON| H
G -->|manual fixes| D
H -->|Data Collector API| I
I -->|alerts| A| Service | URL |
|---|---|
| Tableau de bord de sécurité (Vercel) | https://openshield-gules.vercel.app |
| API REST (Render) | https://openshield-api.onrender.com |
| Site web du projet | https://openshield-org.github.io/openshield/ |
Remarque : L'API est hébergée sur Render. Le tableau de bord se connecte automatiquement au chargement et affiche les données en direct de la base de données PostgreSQL.
[!IMPORTANT] Exigence de sécurité : Les déploiements en production échouent au démarrage si
JWT_SECRETest manquant, défini sur la valeur par défaut non sécurisée ou comporte moins de 32 caractères. Générez un secret fort avec :python -c "import secrets; print(secrets.token_urlsafe(32))"Définissez
OPENSHIELD_ENV=production(ou comptez sur leRENDER=trueautomatique de Render) pour activer cette application. Les exécutions de développement local sans ces signaux sont autorisées à utiliser la valeur par défaut avec un avertissement.
| Couche | Technologie | Coût |
|---|---|---|
| Site web du projet | HTML statique + Tailwind CDN, déployé sur Vercel | Gratuit |
| Tableau de bord de sécurité | React + Vite + Tailwind, déployé sur Vercel | Gratuit |
| API backend | Python + Flask | Gratuit |
| Base de données | PostgreSQL | PostgreSQL managé Render |
| Scanner cloud | Python + Azure SDK | Gratuit |
| Remédiation | Playbooks Azure CLI | Gratuit |
| SIEM | Microsoft Sentinel | Essai gratuit de 90 jours |
| CI/CD | GitHub Actions | Gratuit |
| Dépôt | GitHub | Gratuit |
openshield/
├── scanner/ # Azure misconfiguration rule engine
│ ├── rules/ # Individual scan rules (contribute here!)
│ ├── engine.py # Core scanning orchestration
│ └── azure_client.py # Azure SDK wrapper
├── compliance/ # Framework mapping engine
│ └── frameworks/ # CIS, NIST, ISO 27001, SOC 2 mappings
├── playbooks/ # Remediation playbooks
│ ├── arm/ # Reserved for future ARM templates
│ ├── terraform/ # Reserved for future Terraform fixes
│ └── cli/ # Azure CLI scripts
├── api/ # Flask REST API
│ ├── routes/
│ └── models/
├── frontend/ # React security dashboard (Vercel)
├── website/ # Project website - docs, blog, rules gallery (Vercel)
├── sentinel/ # Sentinel integration & KQL rules
├── .github/workflows/ # CI checks
├── docs/ # Documentation
├── CONTRIBUTING.md
└── README.md
Backend (API Flask + Scanner)
# Clone the repo
git clone https://github.com/openshield-org/openshield.git
cd openshield
# Install Python dependencies
pip install -r requirements.txt
# Set your Azure credentials
export AZURE_SUBSCRIPTION_ID=your-subscription-id
export AZURE_CLIENT_ID=your-client-id
export AZURE_CLIENT_SECRET=your-client-secret
export AZURE_TENANT_ID=your-tenant-id
export JWT_SECRET=your-strong-secret # used to protect write endpoints (scan trigger, AI)
export DATABASE_URL=postgresql://openshield:openshield@localhost:5432/openshield
# Create or update the database schema
alembic upgrade head
# Run a scan
python -c "
from scanner.engine import ScanEngine
import json, os
result = ScanEngine(os.environ['AZURE_SUBSCRIPTION_ID']).run_scan()
print(json.dumps(result, indent=2))
"
# Start the API
FLASK_APP=api/app.py flask run
Voir Migrations de base de données pour les modifications de schéma et l'étape d'intégration unique requise pour les bases de données de production existantes.
Conteneurs locaux (Compose)
# Starts PostgreSQL 16, applies migrations, then starts the API, worker, and dashboard
docker compose --profile local up --build
# Database-aware API readiness
curl --fail http://127.0.0.1:8000/ready
Le profil est intentionnellement nommé local : ses identifiants de base de données et son secret JWT sont des valeurs réservées au développement, les ports sont liés à la boucle locale et le tableau de bord communique avec http://localhost:8000. Définissez les quatre variables AZURE_* dans votre shell avant de démarrer Compose si vous souhaitez que le worker exécute de vraies analyses. Arrêtez la pile avec docker compose --profile local down ; ajoutez --volumes uniquement lorsque vous souhaitez intentionnellement supprimer les données locales de la base de données et des dépendances du frontend.
Frontend (tableau de bord React)
cd frontend
npm install
# Local dev - points at http://localhost:5000 by default
npm run dev
# To develop against the live Render backend:
VITE_API_URL=https://openshield-api.onrender.com npm run dev
Aucun jeton n'est requis en mode démo public. Par défaut, les points de terminaison de l'API nécessitent un JWT, et les points de terminaison POST en nécessitent toujours un.
Nous accueillons activement les contributions d'étudiants et de développeurs de tous niveaux.
Façons de contribuer :
Voir CONTRIBUTING.md pour un guide complet, y compris comment ajouter votre première règle en moins de 30 minutes.
Les contributeurs sont crédités ci-dessous.
MIT : libre d'utilisation, de modification et de distribution.
Construit par des ingénieurs en sécurité et des étudiants qui croient que les outils de sécurité cloud doivent être accessibles à tous.
Apprendre OpenShield couvre :
Portail d'apprentissage en direct : https://openshieldlearn.netlify.app/learn/ La documentation complète, la galerie des règles de sécurité, le guide d'architecture, le guide des preuves et le blog sont disponibles sur le site web du projet :
La documentation complète de l'API est disponible à docs/api-reference.md.
Voir CHANGELOG.md pour l'historique complet des versions.