
Interaktive Plattform, die Sicherheitsstandards und Richtlinien für Design, Entwicklung, Tests und Beschaffung sicherer Software verknüpft. Bietet einen einheitlichen Katalog von Common Requirements (CREs) mit Querverweisen auf Industriestandards.
Besuchen Sie https://www.opencre.org, um OpenCRE in Aktion zu sehen und weitere Erläuterungen zu erhalten. OpenCRE steht für Open Common Requirement enumeration. Es ist eine interaktive Plattform zur Verknüpfung von Inhalten, die Sicherheitsstandards und -richtlinien vereint. Sie bietet einfachen und robusten Zugriff auf relevante Informationen beim Entwerfen, Entwickeln, Testen und Beschaffen sicherer Software.
OpenCRE besteht aus:
Wie Sie zur Anwendung oder zu den Daten (Katalog oder Standardzuordnungen) beitragen können, erfahren Sie unter Contributing. Wir heißen Sie herzlich willkommen!
/rest/v1/openapi.yamlEine Roadmap finden Sie in den Issues.
Sie können die öffentliche OpenCRE-Anwendung unter opencre.org frei nutzen. Darüber hinaus können Sie eine eigene Instanz betreiben, wenn Sie beispielsweise Ihre eigenen Sicherheitsstandards und -richtlinien einbinden möchten. Wir nennen das myOpenCRE.
Der einfachste Weg, OpenCRE lokal auszuführen, ist die Verwendung des veröffentlichten Docker-Containers. Das geht mit folgendem Befehl:
docker run -p 5000:5000 ghcr.io/owasp/opencre/opencre:latest
Sobald der Container die entfernten Informationen heruntergeladen hat, können Sie unter http://127.0.0.1:5000 darauf zugreifen.
Wenn Sie an OpenCRE entwickeln möchten oder Docker in Ihrer Umgebung nicht verfügbar ist, können Sie es alternativ über die CLI ausführen.
Um OpenCRE außerhalb von Docker auszuführen, müssen Sie es installieren. Für die Installation dieser Anwendung benötigen Sie python3, yarn und virtualenv.
Klonen Sie das Repository:
git clone https://github.com/OWASP/OpenCRE
(Empfohlen) Erstellen und aktivieren Sie eine virtuelle Python-Umgebung:
python3 -m venv venv
source venv/bin/activate
Installieren Sie die Abhängigkeiten:
make install
Laden Sie den neuesten CRE-Graphen von Upstream mit folgendem Befehl herunter:
make upstream-sync
Sie können den lokalen Gap-Analyse-Cache nach den Importen mit folgendem Befehl vorberechnen:
make backfill-gap-analysis
Um CRE lokal auszuführen, können Sie Folgendes ausführen:
make dev-flask
Um die CLI-Anwendung auszuführen, können Sie Folgendes ausführen:
python cre.py --help
Um die CRE- und Standard-Taxonomie als CSV zu exportieren (CI-freundlich), führen Sie Folgendes aus:
python cre.py --export --csv <path/to/output.csv>
Beispiel:
python cre.py --export --csv artifacts/cres_and_standards.csv
Hinweise:
--export ist ein dedizierter Exportmodus und beendet sich nach dem Schreiben der CSV.--csv ist bei Verwendung von --export erforderlich.Um eine entfernte CRE-Tabelle lokal herunterzuladen, können Sie Folgendes ausführen:
python cre.py --review --from_spreadsheet <google sheets url>
Um eine entfernte Tabelle zu Ihrer lokalen Datenbank hinzuzufügen, können Sie Folgendes ausführen:
python cre.py --add --from_spreadsheet <google sheets url>
Um die Webanwendung für die Entwicklung auszuführen, können Sie Folgendes ausführen:
make start-containers
make start-worker
# in a separate shell
make dev-flask
Alternativ können Sie das Dockerfile mit folgendem Befehl verwenden:
make docker && make docker-run
Einige Funktionen wie die Gap-Analyse erfordern eine laufende neo4j-Datenbank. Sie können diese mit folgendem Befehl starten:
make docker-neo4j
Um nur das Backfill fehlender Gap-Analyse-Paare auszuführen (ohne Flask zu starten), verwenden Sie:
RUN_COUNT=8 bash scripts/backfill_gap_analysis.sh
Bevorzugen Sie für Produktionsoperationen die dedizierten Skripte in scripts/db/. Diese Skripte erzwingen Sicherheitsvorkehrungen und erstellen vor Datenbankänderungen immer ein frisches Backup.
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.sqlFür destruktive Operationen (DELETE, DROP, TRUNCATE, irreversibles ALTER) verwenden Sie:
APP_NAME=opencreorg \
CONFIRM_DESTRUCTIVE=I_UNDERSTAND_OPENCREORG_PROD_DB_DESTRUCTIVE_ACTION \
scripts/db/surgery-opencreorg.sh --sql-file ./tmp/destructive-change.sql --destructive
Runbooks:
docs/runbooks/opencreorg-db-sync-and-surgery.mddocs/runbooks/opencreorg-db-destructive-ops-checklist.mdUmgebungsvariablen für die Verbindung der Anwendung zur neo4jDB (Standard):
NEO4J_URL (neo4j//neo4j:password@localhost:7687)Um die Webanwendung für die Produktion auszuführen, benötigen Sie gunicorn und können diese aus dem Verzeichnis cre_sync heraus ausführen:
make prod-run
OpenCRE wird auf macOS vollständig unterstützt. Die folgenden Hinweise sind optional und sollen Mitwirkenden helfen, OpenCRE lokal auf macOS-Systemen auszuführen.
Installieren Sie die erforderlichen Werkzeuge mit Homebrew:
brew install [email protected] yarn make
Hinweis: Python 3.11 wird empfohlen. Neuere Python-Versionen können zu Abhängigkeitsinkompatibilitäten führen.
Überprüfen Sie die Python-Version:
python3 --version
Erstellen und aktivieren Sie eine virtuelle Umgebung explizit mit Python 3:
python3 -m venv venv
source venv/bin/activate
Aktualisieren Sie pip:
pip install --upgrade pip
Installieren Sie die Abhängigkeiten mit dem Standard-Workflow:
make install
Wenn Build-Probleme auftreten, stellen Sie sicher, dass die Xcode Command Line Tools installiert sind:
xcode-select --install
Synchronisieren Sie die Upstream-CRE-Daten (erfordert Internetzugriff):
make upstream-sync
Starten Sie dann den lokalen Server:
make dev-flask
Die Anwendung ist dann verfügbar unter:
http://127.0.0.1:5000
Tipp: Für die meisten macOS-Benutzer ist die Ausführung über Docker der einfachste und zuverlässigste Ansatz.
Siehe das myOpenCRE-Benutzerhandbuch zur Verwendung der OpenCRE-API, um beispielsweise eigene Sicherheitsrichtlinien und -standards hinzuzufügen.
Sie können die Produktions- oder Entwicklungs-Docker-Images mit den folgenden Befehlen erstellen:
make docker-prod
make docker-dev
Die von OpenCRE verwendeten Umgebungsvariablen sind:
Kopieren Sie die Beispielkonfigurationsdatei:
cp .env.example .env
Bearbeiten Sie dann .env und geben Sie für Ihre Umgebung passende Werte an.
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, CRE_LLM_MAX_RETRIES, CRE_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 (aktiviert den GET /rest/v1/health-Deploy-/Uptime-Probe; standardmäßig deaktiviert, gibt 404 zurück, wenn nicht gesetzt), CRE_ENABLE_MYOPENCRE (macht MyOpenCRE in GET /api/capabilities verfügbar; standardmäßig deaktiviert), CRE_ENABLE_LOGIN (macht die Login-/Logout-Benutzeroberfläche über capabilities.login verfügbar; standardmäßig deaktiviert)Die vollständige Liste und die Standardwerte finden Sie in .env.example.
OpenCRE verwendet LiteLLM für LLM-Aufrufe. Konfigurieren Sie Modelle und Anbieter-Anmeldeinformationen über Umgebungsvariablen.
Empfohlenes Minimalbeispiel:
# 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
Hinweise:
CRE_EMBED_MODEL oder CRE_EMBED_EXPECTED_DIM als Datenmigrationsereignis (erfordert in der Regel ein erneutes Embedding).CRE_EMBED_EXPECTED_DIM ist eine Sicherheitsvorkehrung: Schreibvorgänge schlagen bei Dimensionsabweichungen sofort fehl.Sie können die Container mit den folgenden Befehlen ausführen:
make docker-prod-run
make docker-dev-run
Sie können Backend-Tests mit folgendem Befehl ausführen:
make test
Sie können einen Coverage-Bericht mit folgendem Befehl erhalten:
make cover
Versuchen Sie, die Coverage über 70 % zu halten.