
Plateforme interactive reliant les normes et directives de sécurité pour concevoir, développer, tester et acquérir des logiciels sécurisés. Fournit un catalogue unifié d'exigences communes (CRE) avec des références croisées aux normes industrielles.
Rendez-vous sur https://www.opencre.org pour voir OpenCRE en action et obtenir plus d'explications. OpenCRE signifie « Open Common Requirement enumeration » (énumération ouverte des exigences communes). C'est une plateforme interactive de liaison de contenu pour unifier les normes et directives de sécurité. Elle offre un accès simple et fiable aux informations pertinentes lors de la conception, du développement, des tests et de l'acquisition de logiciels sécurisés.
OpenCRE se compose de :
Pour voir comment contribuer à l'application ou aux données (catalogue ou mappages de normes), consultez Contribuer. Votre contribution est vraiment la bienvenue !
/rest/v1/openapi.yaml lorsqu'elle est en cours d'exécution)Pour la feuille de route, veuillez consulter les issues.
Vous êtes libre d'utiliser l'application publique opencre sur opencre.org. En dehors de cela, vous pouvez exécuter votre propre instance si vous souhaitez par exemple inclure vos propres normes et directives de sécurité. Nous appelons cela myOpenCRE.
Le moyen le plus simple d'exécuter OpenCRE localement est de lancer le conteneur Docker publié. Pour ce faire, exécutez :
docker run -p 5000:5000 ghcr.io/owasp/opencre/opencre:latest
Une fois que le conteneur a fini de télécharger les informations distantes, vous pouvez y accéder sur http://127.0.0.1:5000.
Si vous souhaitez développer sur OpenCRE ou si Docker n'est pas disponible dans votre environnement, vous pouvez également l'exécuter via la CLI.
Pour exécuter en dehors de Docker, vous devez installer OpenCRE. Pour installer cette application, vous avez besoin de python3, yarn et virtualenv.
Clonez le dépôt :
git clone https://github.com/OWASP/OpenCRE
(Recommandé) Créez et activez un environnement virtuel Python :
python3 -m venv venv
source venv/bin/activate
Installez les dépendances :
make install
Téléchargez le dernier graphe CRE depuis l'amont en exécutant :
make upstream-sync
Vous pouvez précalculer le cache local d'analyse des écarts après les imports avec :
make backfill-gap-analysis
Pour exécuter CRE localement, vous pouvez ensuite faire :
make dev-flask
Pour exécuter l'application CLI, vous pouvez lancer :
python cre.py --help
Pour exporter la taxonomie CRE + normes au format CSV (adapté à la CI), exécutez :
python cre.py --export --csv <path/to/output.csv>
Exemple :
python cre.py --export --csv artifacts/cres_and_standards.csv
Remarques :
--export est un mode d'exportation dédié et se termine après l'écriture du CSV.--csv est requis lors de l'utilisation de --export.Pour télécharger localement une feuille de calcul CRE distante, vous pouvez exécuter :
python cre.py --review --from_spreadsheet <google sheets url>
Pour ajouter une feuille de calcul distante à votre base de données locale, vous pouvez exécuter :
python cre.py --add --from_spreadsheet <google sheets url>
Pour exécuter l'application web en développement, vous pouvez lancer :
make start-containers
make start-worker
# in a separate shell
make dev-flask
Alternativement, vous pouvez utiliser le Dockerfile avec :
make docker && make docker-run
Certaines fonctionnalités comme l'analyse des écarts (Gap Analysis) nécessitent une base de données neo4j en cours d'exécution ; vous pouvez la démarrer avec :
make docker-neo4j
Pour exécuter uniquement le remplissage des paires manquantes de l'analyse des écarts (sans démarrer Flask), utilisez :
RUN_COUNT=8 bash scripts/backfill_gap_analysis.sh
Privilégiez les scripts dédiés dans scripts/db/ pour les opérations de production. Ces scripts appliquent des garde-fous de sécurité et créent toujours une sauvegarde fraîche avant toute modification de la base de données.
APP_NAME=opencreorg scripts/db/backup-opencreorg.shAPP_NAME=opencreorg SOURCE_DB_URL="postgresql://cre:[email protected]:5432/cre" scripts/db/sync-local-to-opencreorg.shAPP_NAME=opencreorg scripts/db/surgery-opencreorg.sh --sql-file ./tmp/change.sqlPour une intervention destructrice (DELETE, DROP, TRUNCATE, ALTER irréversible), utilisez :
APP_NAME=opencreorg \
CONFIRM_DESTRUCTIVE=I_UNDERSTAND_OPENCREORG_PROD_DB_DESTRUCTIVE_ACTION \
scripts/db/surgery-opencreorg.sh --sql-file ./tmp/destructive-change.sql --destructive
Manuels d'exploitation :
docs/runbooks/opencreorg-db-sync-and-surgery.mddocs/runbooks/opencreorg-db-destructive-ops-checklist.mdVariables d'environnement pour que l'application se connecte à neo4jDB (par défaut) :
NEO4J_URL (neo4j//neo4j:password@localhost:7687)Pour exécuter l'application web en production, vous avez besoin de gunicorn et vous pouvez lancer depuis le répertoire cre_sync :
make prod-run
OpenCRE est entièrement pris en charge sur macOS. Les notes suivantes sont facultatives et destinées à aider les contributeurs qui exécutent OpenCRE localement sur des systèmes macOS.
Installez les outils requis avec Homebrew :
brew install [email protected] yarn make
Remarque : Python 3.11 est recommandé. Les versions plus récentes de Python peuvent provoquer des incompatibilités de dépendances.
Vérifiez la version de Python :
python3 --version
Créez et activez un environnement virtuel explicitement avec Python 3 :
python3 -m venv venv
source venv/bin/activate
Mettez à niveau pip :
pip install --upgrade pip
Installez les dépendances en suivant le processus standard :
make install
Si vous rencontrez des problèmes de compilation, assurez-vous que les outils en ligne de commande Xcode sont installés :
xcode-select --install
Synchronisez les données CRE amont (nécessite un accès Internet) :
make upstream-sync
Puis démarrez le serveur local :
make dev-flask
L'application sera disponible à l'adresse :
http://127.0.0.1:5000
Astuce : pour la plupart des utilisateurs de macOS, l'exécution via Docker est l'approche la plus simple et la plus fiable.
Consultez le guide d'utilisation de myOpenCRE pour utiliser l'API OpenCRE afin, par exemple, d'ajouter vos propres directives et normes de sécurité.
Vous pouvez construire les images Docker de production ou de développement avec :
make docker-prod
make docker-dev
Les variables d'environnement utilisées par OpenCRE sont :
Copiez le fichier de configuration d'exemple :
cp .env.example .env
Puis modifiez .env et fournissez les valeurs adaptées à votre environnement.
DEV_DATABASE_URLNEO4J_URLREDIS_HOST, REDIS_PORT, REDIS_URL, REDIS_NO_SSLFLASK_CONFIG, INSECURE_REQUESTSNO_GEN_EMBEDDINGS, CRE_EMBED_MODEL, CRE_EMBED_EXPECTED_DIM, CRE_VALIDATE_EMBED_DIM_ON_INITCRE_LLM_CHAT_MODEL, CRE_EMBED_ALIGN_MODEL, , Voir .env.example pour la liste complète et les valeurs par défaut.
OpenCRE utilise LiteLLM pour les appels aux LLM. Configurez les modèles et les identifiants du fournisseur via les variables d'environnement.
Exemple minimal recommandé :
# Chat / completion models (LiteLLM model strings)
CRE_LLM_CHAT_MODEL=gemini/gemini-2.5-flash
CRE_EMBED_ALIGN_MODEL=gemini/gemini-2.5-flash
# Embedding model used for persisted vectors
CRE_EMBED_MODEL=gemini/gemini-embedding-001
CRE_EMBED_EXPECTED_DIM=3072
CRE_VALIDATE_EMBED_DIM_ON_INIT=1
# Retry policy
CRE_LLM_MAX_RETRIES=2
CRE_LLM_RETRY_SLEEP_SECONDS=15
# Provider credential (example for Gemini)
GEMINI_API_KEY=your-key
Remarques :
CRE_EMBED_MODEL ou CRE_EMBED_EXPECTED_DIM comme un événement de migration de données (nécessite généralement une ré-embedding).CRE_EMBED_EXPECTED_DIM est une protection : les écritures échouent rapidement en cas d'incohérence de dimension.Vous pouvez exécuter les conteneurs avec :
make docker-prod-run
make docker-dev-run
Vous pouvez exécuter les tests du backend avec :
make test
Vous pouvez obtenir un rapport de couverture avec :
make cover
Essayez de maintenir la couverture au-dessus de 70 %.
CRE_LLM_MAX_RETRIESCRE_LLM_RETRY_SLEEP_SECONDSOPENAI_API_KEY, GEMINI_API_KEY, GCP_NATIVEGOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_SECRET_JSON, LOGIN_ALLOWED_DOMAINSGCP_NATIVEOpenCRE_gspread_AuthCRE_ENABLE_HEALTH (active la sonde de déploiement/disponibilité GET /rest/v1/health ; désactivée par défaut, renvoie 404 si non définie), CRE_ENABLE_MYOPENCRE (expose MyOpenCRE dans GET /api/capabilities ; désactivé par défaut), CRE_ENABLE_LOGIN (expose l'interface de connexion/déconnexion via capabilities.login ; désactivé par défaut)