
보안 소프트웨어의 설계, 개발, 테스트 및 조달을 위한 보안 표준과 지침을 연결하는 대화형 플랫폼입니다. 업계 표준에 대한 상호 참조와 함께 공통 요구사항(CRE)의 통합 카탈로그를 제공합니다.
OpenCRE가 실제로 작동하는 모습과 자세한 설명을 보려면 https://www.opencre.org를 방문하세요. OpenCRE는 Open Common Requirement enumeration(공개 공통 요구사항 열거)의 약자입니다. 보안 표준 및 가이드라인을 통합하기 위한 대화형 콘텐츠 연결 플랫폼으로, 안전한 소프트웨어를 설계, 개발, 테스트 및 조달할 때 관련 정보에 쉽고 견고하게 접근할 수 있게 해줍니다.
OpenCRE는 다음으로 구성됩니다:
애플리케이션이나 데이터(카탈로그 또는 표준 매핑)에 기여하는 방법을 알아보려면 Contributing을 참조하세요. 여러분의 기여를 진심으로 환영합니다!
/rest/v1/openapi.yaml)로드맵은 issues를 참조하세요.
opencre.org의 공개 opencre 애플리케이션을 자유롭게 사용할 수 있습니다. 또한, 예를 들어 자체 보안 표준 및 가이드라인을 포함하려면 직접 실행할 수도 있습니다. 이를 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
가져오기 후 다음 명령으로 로컬 갭 분석 캐시를 미리 계산할 수 있습니다:
make backfill-gap-analysis
그런 다음 로컬에서 CRE를 실행하려면 다음을 수행할 수 있습니다:
make dev-flask
CLI 애플리케이션을 실행하려면 다음을 실행할 수 있습니다:
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
# in a separate shell
make dev-flask
또는 dockerfile을 다음과 같이 사용할 수 있습니다:
make docker && make docker-run
갭 분석과 같은 일부 기능은 실행 중인 neo4j DB가 필요하며, 다음 명령으로 시작할 수 있습니다:
make docker-neo4j
누락된 갭 분석 쌍 백필만 실행하려면(Flask를 시작하지 않고) 다음을 사용하세요:
RUN_COUNT=8 bash scripts/backfill_gap_analysis.sh
프로덕션 운영에는 scripts/db/의 전용 스크립트를 사용하세요. 이 스크립트들은 안전 장치를 적용하며 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
런북:
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에서 완전히 지원됩니다. 다음 참고 사항은 선택 사항이며 macOS 시스템에서 OpenCRE를 로컬로 실행하는 기여자를 돕기 위한 것입니다.
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를 통한 실행이 가장 간단하고 안정적인 방법입니다.
OpenCRE API를 사용하여 예를 들어 자체 보안 가이드라인과 표준을 추가하는 방법은 myOpenCRE 사용자 가이드를 참조하세요.
프로덕션 또는 개발 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는 LLM 호출에 LiteLLM을 사용합니다. 환경 변수를 통해 모델과 공급자 자격 증명을 구성하세요.
권장 최소 예시:
# 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
참고:
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(GET /api/capabilities에서 MyOpenCRE 노출, 기본적으로 꺼짐), CRE_ENABLE_LOGIN(capabilities.login을 통해 로그인/로그아웃 UI 노출, 기본적으로 꺼짐)