
Интерактивная платформа, связывающая стандарты и руководства по безопасности для проектирования, разработки, тестирования и закупки безопасного программного обеспечения. Предоставляет единый каталог общих требований (CRE) с перекрёстными ссылками на отраслевые стандарты.
Перейдите на https://www.opencre.org, чтобы увидеть OpenCRE в работе и получить более подробные объяснения. OpenCRE расшифровывается как Open Common Requirement Enumeration (открытое перечисление общих требований). Это интерактивная платформа для связывания контента, объединяющая стандарты и руководства по безопасности. Она обеспечивает простой и надежный доступ к соответствующей информации при проектировании, разработке, тестировании и закупке безопасного программного обеспечения.
OpenCRE состоит из:
Чтобы узнать, как вы можете внести вклад в приложение или данные (каталог или сопоставления со стандартами), см. Contributing. Мы очень рады вашему участию!
/rest/v1/openapi.yaml при запуске)Дорожную карту можно найти в issues.
Вы можете свободно использовать публичное приложение opencre на opencre.org. Кроме того, вы можете запустить собственное, если хотите, например, включить свои собственные стандарты и руководства по безопасности. Мы называем это myOpenCRE.
Самый простой способ запустить OpenCRE локально — запустить опубликованный docker-контейнер. Это можно сделать, выполнив:
docker run -p 5000:5000 ghcr.io/owasp/opencre/opencre:latest
После того как контейнер завершит загрузку удаленной информации, вы сможете получить к ней доступ по адресу http://127.0.0.1:5000.
Если вы хотите разрабатывать OpenCRE или Docker недоступен в вашем окружении, вы можете запустить его через CLI.
Для запуска вне Docker необходимо установить OpenCRE. Для установки этого приложения вам понадобятся python3, yarn и virtualenv.
Клонируйте репозиторий:
git clone https://github.com/OWASP/OpenCRE
(Рекомендуется) Создайте и активируйте виртуальное окружение Python:
python3 -m venv venv
source venv/bin/activate
Установите зависимости:
make install
Загрузите последний граф CRE из вышестоящего источника, выполнив:
make upstream-sync
Вы можете предварительно вычислить локальный кэш gap-analysis после импорта с помощью:
make backfill-gap-analysis
Чтобы запустить CRE локально, выполните:
make dev-flask
Чтобы запустить приложение командной строки, выполните:
python cre.py --help
Чтобы экспортировать таксономию CRE + стандартов в CSV (дружественный к CI), выполните:
python cre.py --export --csv <path/to/output.csv>
Пример:
python cre.py --export --csv artifacts/cres_and_standards.csv
Примечания:
--export — это выделенный режим экспорта, который завершается после записи CSV.--csv обязателен при использовании --export.Чтобы загрузить удаленную электронную таблицу CRE локально, выполните:
python cre.py --review --from_spreadsheet <google sheets url>
Чтобы добавить удаленную электронную таблицу в вашу локальную базу данных, выполните:
python cre.py --add --from_spreadsheet <google sheets url>
Чтобы запустить веб-приложение для разработки, выполните:
make start-containers
make start-worker
# в отдельной оболочке
make dev-flask
В качестве альтернативы вы можете использовать Dockerfile для сборки с помощью:
make docker && make docker-run
Некоторые функции, такие как Gap Analysis, требуют запущенной базы данных neo4j. Вы можете запустить её с помощью:
make docker-neo4j
Чтобы выполнить только обратное заполнение недостающих пар для gap-analysis (без запуска Flask), используйте:
RUN_COUNT=8 bash scripts/backfill_gap_analysis.sh
Для производственных операций предпочтительно использовать специальные скрипты из scripts/db/. Эти скрипты обеспечивают защитные механизмы и всегда создают свежий резервный экземпляр перед изменениями в БД.
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.sqlДля деструктивных операций (DELETE, DROP, TRUNCATE, необратимые ALTER) используйте:
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.mdПеременные окружения для подключения приложения к neo4jDB (по умолчанию):
NEO4J_URL (neo4j//neo4j:password@localhost:7687)Для запуска веб-приложения в продакшене необходим gunicorn, и вы можете запустить его из каталога cre_sync:
make prod-run
OpenCRE полностью поддерживается на macOS. Следующие примечания необязательны и предназначены для помощи участникам, запускающим OpenCRE локально на системах macOS.
Установите необходимые инструменты с помощью Homebrew:
brew install [email protected] yarn make
Примечание: Рекомендуется Python 3.11. Более новые версии Python могут вызывать несовместимость зависимостей.
Проверьте версию Python:
python3 --version
Создайте и активируйте виртуальное окружение явно с помощью Python 3:
python3 -m venv venv
source venv/bin/activate
Обновите pip:
pip install --upgrade pip
Установите зависимости, используя стандартный рабочий процесс:
make install
Если возникли проблемы со сборкой, убедитесь, что установлены Xcode Command Line Tools:
xcode-select --install
Синхронизируйте данные вышестоящего CRE (требуется доступ в интернет):
make upstream-sync
Затем запустите локальный сервер:
make dev-flask
Приложение будет доступно по адресу:
http://127.0.0.1:5000
Совет: Для большинства пользователей macOS запуск через Docker является самым простым и надежным подходом.
См. руководство пользователя myOpenCRE по использованию OpenCRE API, например, для добавления собственных руководств и стандартов безопасности.
Вы можете собрать образы Docker для продакшена или разработки с помощью:
make docker-prod
make docker-dev
Переменные окружения, используемые OpenCRE:
Скопируйте пример конфигурационного файла:
cp .env.example .env
Затем отредактируйте .env и укажите значения, соответствующие вашему окружению.
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, , Полный список и значения по умолчанию см. в .env.example.
OpenCRE использует LiteLLM для вызовов LLM. Настройте модели и учетные данные провайдера через переменные окружения.
Рекомендуемый минимальный пример:
# Модели чата / завершения (строки моделей LiteLLM)
CRE_LLM_CHAT_MODEL=gemini/gemini-2.5-flash
CRE_EMBED_ALIGN_MODEL=gemini/gemini-2.5-flash
# Модель встраивания, используемая для сохраненных векторов
CRE_EMBED_MODEL=gemini/gemini-embedding-001
CRE_EMBED_EXPECTED_DIM=3072
CRE_VALIDATE_EMBED_DIM_ON_INIT=1
# Политика повторов
CRE_LLM_MAX_RETRIES=2
CRE_LLM_RETRY_SLEEP_SECONDS=15
# Учетные данные провайдера (пример для Gemini)
GEMINI_API_KEY=your-key
Примечания:
CRE_EMBED_MODEL или CRE_EMBED_EXPECTED_DIM как к событию миграции данных (обычно требует повторного встраивания).CRE_EMBED_EXPECTED_DIM — это предохранитель: операции записи быстро завершаются ошибкой при несовпадении размерности.Вы можете запустить контейнеры с помощью:
make docker-prod-run
make docker-dev-run
Вы можете запустить бэкенд-тесты с помощью:
make test
Вы можете получить отчет о покрытии с помощью:
make cover
Старайтесь поддерживать покрытие выше 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 (включает пробу развертывания/аптайма GET /rest/v1/health; по умолчанию выключен, возвращает 404, если не задан), CRE_ENABLE_MYOPENCRE (отображает MyOpenCRE в GET /api/capabilities; по умолчанию выключен), CRE_ENABLE_LOGIN (отображает UI Входа/Выхода через capabilities.login; по умолчанию выключен)