
CSPM de código abierto para Azure: escanea en busca de configuraciones incorrectas y criptografía no segura frente a ataques cuánticos, asigna los hallazgos a CIS/NIST/ISO27001/SOC2 y los corrige con un solo comando
Gestión de Postura de Seguridad en la Nube (CSPM) de código abierto para Azure detecta configuraciones incorrectas, las asigna a CIS / NIST / ISO 27001 / SOC 2, las remedia con un solo comando e identifica activos criptográficos que requieren migración a seguridad cuántica.
Sitio Web · Documentación · Hoja de Ruta · Registro de Cambios · Política de Seguridad · Discord
Los artefactos de la versión incluyen sumas de verificación SHA-256, un SBOM y atestaciones de procedencia vinculadas a la identidad. Consulte verificación de versiones.
Las herramientas empresariales de seguridad en la nube como Wiz, Prisma Cloud y Microsoft Defender for Cloud cuestan $50,000–$500,000 al año.
Las startups, PYMES, universidades y equipos de estudiantes se quedan con cero visibilidad sobre su postura de seguridad en Azure. Un blob de almacenamiento mal configurado, una entidad de servicio con privilegios excesivos o una regla NSG abierta pueden pasar meses sin ser detectados.
OpenShield cambia eso.
Los adversarios están recopilando tráfico cifrado de Azure hoy para descifrarlo cuando los computadores cuánticos estén disponibles. Esto se llama ataque Harvest Now Decrypt Later y está ocurriendo ahora mismo.
OpenShield escanea Azure en busca de activos criptográficos clásicos que necesitan migración antes de que sea demasiado tarde:
Los hallazgos se asignan a NIST FIPS 203 (ML-KEM), FIPS 204 (ML-DSA) y FIPS 205 (SLH-DSA) y alimentan directamente la planificación de migración post-cuántica.
| Característica | Descripción |
|---|---|
| Escáner de Configuraciones Incorrectas | Ejecuta 95 reglas de seguridad de Azure en almacenamiento, red, identidad, base de datos, cómputo, Key Vault, AKS, criptografía post-cuántica, respaldo, serverless, endpoint privado y postura de cadena de suministro |
| Mapeador de Cumplimiento | Asigna hallazgos a archivos JSON de marcos CIS Benchmarks, NIST CSF, ISO 27001 y SOC 2 |
| API de Historial de Escaneos | Almacena escaneos y hallazgos en PostgreSQL y expone hallazgos, puntuación, historial de escaneos, postura de cumplimiento, deriva e inventario de recursos a través de REST |
| Playbooks de Remediación | Cada regla incluye un script de remediación de Azure CLI correspondiente (95 playbooks) |
| Panel de Seguridad | Panel completo en React desplegado en Vercel - monitoreo en vivo, hallazgos, cumplimiento, deriva, priorización y vistas de capa de IA |
| Sitio Web del Proyecto | Sitio de documentación y referencia en openshield-org.github.io/openshield - blog, galería de reglas, arquitectura, guías de evidencia, hoja de ruta y versiones |
| Integración con Sentinel | Normaliza los hallazgos y los envía a Microsoft Sentinel a través de una tabla personalizada de Log Analytics y reglas analíticas KQL |
OpenShield ha obtenido la Insignia de Aprobación de Mejores Prácticas de OpenSSF, completando el 100% de los criterios aplicables de nivel Aprobación en gobernanza del proyecto, control de cambios, informes, calidad, seguridad y análisis de código.
OpenSSF Best Practices - Passing
El estado de OpenSSF del proyecto es verificable públicamente a través del registro oficial del proyecto OpenSSF Best Practices. OpenShield continúa fortaleciendo sus prácticas de ingeniería, garantía de seguridad y gobernanza de código abierto a medida que avanza hacia los criterios de nivel superior.
Políticas del proyecto y evidencia de garantía:
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| Servicio | URL |
|---|---|
| Panel de Seguridad (Vercel) | https://openshield-gules.vercel.app |
| API REST (Render) | https://openshield-api.onrender.com |
| Sitio Web del Proyecto | https://openshield-org.github.io/openshield/ |
Nota: La API está alojada en Render. El panel se conecta automáticamente al cargar y muestra datos en vivo desde la base de datos PostgreSQL.
[!IMPORTANT] Requisito de Seguridad: Los despliegues en producción fallan al iniciar si
JWT_SECRETfalta, está establecido en el valor predeterminado inseguro o tiene menos de 32 caracteres. Genere un secreto fuerte con:python -c "import secrets; print(secrets.token_urlsafe(32))"Establezca
OPENSHIELD_ENV=production(o confíe en elRENDER=trueautomático de Render) para habilitar esta aplicación. Las ejecuciones de desarrollo local sin estas señales pueden usar el valor predeterminado con una advertencia.
| Capa | Tecnología | Costo |
|---|---|---|
| Sitio Web del Proyecto | HTML estático + Tailwind CDN, desplegado en Vercel | Gratis |
| Panel de Seguridad | React + Vite + Tailwind, desplegado en Vercel | Gratis |
| API Backend | Python + Flask | Gratis |
| Base de Datos | PostgreSQL | PostgreSQL gestionado por Render |
| Escáner de Nube | Python + Azure SDK | Gratis |
| Remediación | Playbooks de Azure CLI | Gratis |
| SIEM | Microsoft Sentinel | Prueba gratuita de 90 días |
| CI/CD | GitHub Actions | Gratis |
| Repositorio | GitHub | Gratis |
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 + Escáner)
# 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
Consulte Migraciones de Base de Datos para cambios de esquema y el paso de incorporación único requerido para bases de datos de producción existentes.
Contenedores locales (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
El perfil se llama intencionalmente local: sus credenciales de base de datos y secreto JWT son valores solo para desarrollo, los puertos se vinculan a loopback y el panel se comunica con http://localhost:8000. Establezca las cuatro variables AZURE_* en su shell antes de iniciar Compose si desea que el worker ejecute escaneos reales. Detenga el stack con docker compose --profile local down; agregue --volumes solo cuando desee intencionalmente eliminar los datos locales de la base de datos y las dependencias del frontend.
Frontend (panel 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
No se requiere token en modo de demostración pública. Por defecto, los endpoints de la API requieren un JWT, y los endpoints POST siempre requieren uno.
Damos la bienvenida activamente a contribuciones de estudiantes y desarrolladores de todos los niveles.
Formas de contribuir:
Consulte CONTRIBUTING.md para una guía completa, incluido cómo agregar su primera regla en menos de 30 minutos.
Los contribuyentes se acreditan a continuación.
MIT - libre para usar, modificar y distribuir.
Construido por ingenieros de seguridad y estudiantes que creen que las herramientas de seguridad en la nube deberían ser accesibles para todos.
Aprender OpenShield cubre:
Portal de Aprendizaje en Vivo: https://openshieldlearn.netlify.app/learn/ La documentación completa, la galería de reglas de seguridad, la guía de arquitectura, la guía de evidencia y el blog están disponibles en el sitio web del proyecto:
La documentación completa de la API está disponible en docs/api-reference.md.
Consulte CHANGELOG.md para el historial completo de versiones.