
CSPM de código aberto para Azure - faça varredura em busca de configurações incorretas e criptografia insegura para quantum, mapeie os achados para CIS/NIST/ISO27001/SOC2 e corrija-os com um único comando
Cloud Security Posture Management (CSPM) de código aberto para Azure detecta configurações incorretas, mapeia-as para CIS / NIST / ISO 27001 / SOC 2, corrige com um único comando e identifica ativos criptográficos que exigem migração para segurança quântica.
Website · Documentação · Roadmap · Changelog · Política de Segurança · Discord
Os artefatos de release incluem checksums SHA-256, um SBOM e atestados de proveniência vinculados à identidade. Consulte verificação de release.
Ferramentas empresariais de segurança em nuvem como Wiz, Prisma Cloud e Microsoft Defender for Cloud custam $50.000–$500.000/ano.
Startups, PMEs, universidades e equipes de estudantes ficam com visibilidade zero sobre sua postura de segurança no Azure. Um blob de armazenamento mal configurado, um service principal com privilégios excessivos ou uma regra NSG aberta podem passar meses sem serem detectados.
O OpenShield muda isso.
Adversários estão coletando tráfego Azure criptografado hoje para descriptografá-lo quando computadores quânticos estiverem disponíveis. Isso é chamado de ataque Harvest Now Decrypt Later e está acontecendo agora mesmo.
O OpenShield escaneia o Azure em busca de ativos criptográficos clássicos que precisam de migração antes que seja tarde demais:
Os achados são mapeados para NIST FIPS 203 (ML-KEM), FIPS 204 (ML-DSA) e FIPS 205 (SLH-DSA) e alimentam diretamente o planejamento de migração pós-quântica.
| Recurso | Descrição |
|---|---|
| Scanner de Configurações Incorretas | Executa 95 regras de segurança do Azure em armazenamento, rede, identidade, banco de dados, computação, Key Vault, AKS, criptografia pós-quântica, backup, serverless, private endpoint e postura de cadeia de suprimentos |
| Mapeador de Conformidade | Mapeia achados para arquivos JSON dos frameworks CIS Benchmarks, NIST CSF, ISO 27001 e SOC 2 |
| API de Histórico de Scans | Armazena scans e achados no PostgreSQL e expõe achados, pontuação, histórico de scans, postura de conformidade, drift e inventário de recursos via REST |
| Playbooks de Remediação | Cada regra vem com um script de remediação correspondente em Azure CLI (95 playbooks) |
| Dashboard de Segurança | Dashboard React completo implantado na Vercel - monitoramento ao vivo, achados, conformidade, drift, priorização e visualizações da camada de IA |
| Website do Projeto | Site de documentação e referência em openshield-org.github.io/openshield - blog, galeria de regras, arquitetura, guias de evidências, roadmap e releases |
| Integração com Sentinel | Normaliza achados e os envia para o Microsoft Sentinel por meio de uma tabela personalizada do Log Analytics e regras de análise KQL |
O OpenShield conquistou o OpenSSF Best Practices Passing Badge, completando 100% dos critérios aplicáveis do nível Passing em governança de projeto, controle de mudanças, relatórios, qualidade, segurança e análise de código.
OpenSSF Best Practices - Passing
O status OpenSSF do projeto é publicamente verificável por meio do registro oficial do projeto OpenSSF Best Practices. O OpenShield continua a fortalecer suas práticas de engenharia, garantia de segurança e governança de código aberto à medida que avança pelos critérios de níveis superiores.
Políticas do projeto e evidências de garantia:
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| Serviço | URL |
|---|---|
| Dashboard de Segurança (Vercel) | https://openshield-gules.vercel.app |
| API REST (Render) | https://openshield-api.onrender.com |
| Website do Projeto | https://openshield-org.github.io/openshield/ |
Nota: A API está hospedada na Render. O dashboard se conecta automaticamente ao carregar e mostra dados ao vivo do banco de dados PostgreSQL.
[!IMPORTANT] Requisito de Segurança: Implantações em produção falham na inicialização se
JWT_SECRETestiver ausente, definido com o valor padrão inseguro ou tiver menos de 32 caracteres. Gere um segredo forte com:python -c "import secrets; print(secrets.token_urlsafe(32))"Defina
OPENSHIELD_ENV=production(ou conte com oRENDER=trueautomático da Render) para habilitar essa imposição. Execuções de desenvolvimento local sem esses sinais podem usar o padrão com um aviso.
| Camada | Tecnologia | Custo |
|---|---|---|
| Website do Projeto | HTML estático + Tailwind CDN, implantado na Vercel | Gratuito |
| Dashboard de Segurança | React + Vite + Tailwind, implantado na Vercel | Gratuito |
| API Backend | Python + Flask | Gratuito |
| Banco de Dados | PostgreSQL | PostgreSQL gerenciado pela Render |
| Scanner de Nuvem | Python + Azure SDK | Gratuito |
| Remediação | Playbooks Azure CLI | Gratuito |
| SIEM | Microsoft Sentinel | Teste gratuito de 90 dias |
| CI/CD | GitHub Actions | Gratuito |
| Repositório | GitHub | Gratuito |
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
Consulte Migrações de Banco de Dados para alterações de esquema e a etapa de integração única necessária para bancos de dados de produção existentes.
Contêineres locais (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
O perfil é intencionalmente chamado local: suas credenciais de banco de dados e segredo JWT são valores apenas para desenvolvimento, as portas se vinculam ao loopback e o dashboard se comunica com http://localhost:8000. Defina as quatro variáveis AZURE_* no seu shell antes de iniciar o Compose se quiser que o worker execute scans reais. Pare a stack com docker compose --profile local down; adicione --volumes apenas quando quiser intencionalmente remover os dados locais do banco de dados e das dependências do frontend.
Frontend (dashboard 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
Nenhum token é necessário no modo de demonstração pública. Por padrão, os endpoints da API exigem um JWT, e os endpoints POST sempre exigem um.
Acolhemos ativamente contribuições de estudantes e desenvolvedores de todos os níveis.
Formas de contribuir:
Consulte CONTRIBUTING.md para um guia completo, incluindo como adicionar sua primeira regra em menos de 30 minutos.
Os contribuidores são creditados abaixo.
MIT - livre para usar, modificar e distribuir.
Construído por engenheiros de segurança e estudantes que acreditam que ferramentas de segurança em nuvem devem ser acessíveis a todos.
Aprenda OpenShield abrange:
Portal de Aprendizado ao Vivo: https://openshieldlearn.netlify.app/learn/ Documentação completa, a galeria de regras de segurança, guia de arquitetura, guia de evidências e blog estão disponíveis no website do projeto:
A documentação completa da API está disponível em docs/api-reference.md.
Consulte CHANGELOG.md para o histórico completo de releases.