PRIscope: 오픈 소스 저장소 코드 변경 이력 분석 도구
요약
PRIscope는 오픈 소스 저장소의 코드 변경 이력을 분석하여 소프트웨어 공급망 위험을 식별하는 Python 기반 도구입니다. AI 모델(Ollama)과 연동하여 병합된 풀 리퀘스트를 검사하고, 잠재적인 보안 취약점이나 악성 코드를 찾아내어 요약 및 JSON 보고서를 제공합니다.
핵심 포인트
- 오픈 소스 코드 변경 이력 분석을 통한 공급망 위험 해결
- Ollama와 같은 로컬 AI 모델을 활용한 지능형 코드 분석 구현
- Python 스크립트 또는 Docker 컨테이너로 배포 가능하여 높은 보안성 확보
PRIscope는 주로 소프트웨어 공급망 위험(software supply chain risks)을 해결하기 위해 오픈 소스 저장소의 코드 변경 이력을 분석하도록 설계된 Python 기반 도구입니다. AI 기반 코드 분석을 사용하여 병합된 풀 리퀘스트(merged pull requests)를 검사함으로써 잠재적인 보안 위험이나 악성 코드 수정을 식별하는 데 도움을 줍니다.
중요 면책 조항: PRIscope의 효과는 컨텍스트 창 크기가 작은 모델을 사용할 때 제한적일 수 있습니다. 최적의 성능을 위해서는 아래 '더 큰 컨텍스트 창을 위한 Ollama 구성' 섹션을 참조하십시오.
-
지정된 GitHub 저장소에서 가장 최근에 병합된 풀 리퀘스트를 가져와 분석합니다.
-
지능형 코드 분석을 위해 로컬 AI 모델 서버인 Ollama를 활용합니다.
-
분석된 각 풀 리퀘스트에 대한 잠재적 보안 위험의 간결한 요약을 제공합니다.
-
상세한 분석 결과를 담은 선택적 JSON 보고서를 생성합니다.
-
독립 실행형 Python 스크립트 또는 Docker 컨테이너 내에서 실행할 수 있습니다.
-
Python 3.9 이상
-
Ollama가 설치되어 있고
ollama serve를 통해 로컬로 실행 중이어야 합니다. -
Ollama에 로드된
mistral-small모델 (코드 분석 기능으로 권장) - Docker (선택 사항, 컨테이너 사용 시) -
저장소 클론:
git clone https://github.com/yourusername/priscope.git cd priscope
- 필수 Python 패키지 설치:
pip install -r requirements.txt
- Ollama가 설치되어 있고
mistral-small또는 유사한 모델로 실행 중인지 확인합니다:ollama run mistral-small
환경 설정 파일인 config.json을 편집하여 선호 사항을 설정하십시오:
GitHub 저장소를 분석하려면:
python priscope.py https://github.com/owner/repo [-n NUMBER | -s SINCE] [-j]
https://github.com/owner/repo를 대상 저장소 URL로 대체합니다.-n NUMBER는 분석할 최근 PR의 개수를 지정하며 (기본값은 10)입니다.-s SINCE는 이 시점 이후에 병합된 PR을 분석합니다 (형식: 일(d), 주(w), 월(m) 단위로 2d, 3w, 1m).-j는 JSON 보고서를 생성합니다 (선택 사항).
PRIscope는 향상된 보안 및 격리를 위해 Docker 컨테이너에서도 실행할 수 있습니다. 이 방법은 스크립트가 파일 시스템에 읽기 전용 접근만 하는 통제된 환경에서 실행되도록 보장합니다.
- Docker 이미지 빌드:
docker build -t priscope .
- 컨테이너 실행:
docker run --rm -v $(pwd):/app/output:rw --read-only -u $(id -u):$(id -g) priscope https://github.com/owner/repo -n 5 -j
이 명령어는 다음 작업을 수행합니다:
- 현재 디렉토리를 보고서 출력을 위해 컨테이너의
/app/output에 마운트합니다. - 보안을 위해 컨테이너의 파일 시스템을 읽기 전용으로 설정합니다. - 적절한 파일 권한을 보장하기 위해 현재 사용자로 컨테이너를 실행합니다.
PRIscope는 분석된 각 PR에 대해 색상 코드가 지정된 콘솔 출력을 제공합니다:
- 녹색(Green): 문제가 발견되지 않음
- 빨간색(Red): 잠재적인 보안 위험 감지
JSON 보고서 옵션을 사용하면 현재 디렉토리(또는 Docker를 사용하는 경우 /app/output)에 상세 보고서가 생성됩니다.
여러 이유로 mistral-small 모델을 Ollama와 함께 사용하는 것을 권장합니다:
- 코드 분석 및 이해에서 강력한 역량을 보여줍니다. - 성능과 리소스 요구 사항 사이의 좋은 균형을 제공합니다.
하지만, config.json 파일에서 model_name을 변경하여 다른 모델로 실험해 볼 수 있습니다.
기본적으로 Ollama 템플릿은 2048 토큰의 컨텍스트 창으로 구성됩니다. 하지만 이는 더 큰 PR을 분석할 때 상당히 작을 수 있습니다. 더 나은 성능을 위해 이 컨텍스트 창을 확장하는 것을 강력히 권장합니다.
컨텍스트 창 크기를 늘리려면:
- 모델 설정 생성:
ollama show mistral-small --modelfile > ollama_conf.txt
ollama_conf.txt파일을 열고FROM ...줄 바로 아래에 다음 줄을 추가합니다:PARAMETER num_ctx 32768
이렇게 하면 컨텍스트 창이 128k 토큰(mistral-small의 최대치)으로 설정됩니다.
- 새로운 모델 템플릿 빌드:
ollama create mistral-small-128K -f ollama_conf.txt
config.json업데이트
새 모델 이름이 포함된 파일: {"model_name": "mistral-small-128K"}
참고용으로 저장소에 ollama_conf.txt 샘플 파일이 포함되어 있습니다.
PRIscope에 대한 기여를 환영합니다! 풀 리퀘스트(pull requests) 제출, 버그 보고 또는 기능 제안을 자유롭게 해주세요.
PRIscope는 잠재적인 보안 위험을 식별하는 데 도움을 주기 위해 설계된 도구이지만, 포괄적인 보안 솔루션으로 간주되어서는 안 됩니다. 항상 철저한 코드 검토를 수행하고 개발 프로세스에서 추가적인 보안 조치를 사용하십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기