Sec 섹션 분석기 개발
GitLab 보안 분석기(analyzer)의 개발, 테스트, 릴리스 및 버전 관리 방법을 설명합니다.
분석기는 CI 파이프라인 컨텍스트 내에서 실행되는 Docker 이미지로 제공됩니다. 이 가이드는 분석기 전반에 걸친 개발 및 테스트 관행을 설명합니다. 공유 모듈 # 공통 동작 및 인터페이스를 위해 분석기 간에 공유되는 여러 공유 Go 모듈이 있습니다: command Go 패키지는 CLI 인터페이스를 구현합니다. common 프로젝트는 로깅, 인증서 처리, 디렉터리 검색 기능을 위한 기타 공유 모듈을 제공합니다. report Go 패키지의 Report 및 Finding 구조체는 JSON 리포트를 마샬링합니다. template 프로젝트는 새 분석기의 스캐폴딩을 제공합니다. 분석기 사용 방법 # 분석기는 Docker 이미지로 제공됩니다. 예를 들어, 작업 디렉터리를 스캔하기 위해 Semgrep Docker 이미지를 실행하려면: 스캔하려는 소스 코드의 디렉터리로 cd 합니다. docker login registry.gitlab.com 을 실행하고 최소 read_registry 범위를 가진 사용자 이름과 개인 또는 프로젝트 액세스 토큰을 제공합니다. Docker 이미지를 실행합니다: docker run \ --interactive --tty --rm \ --volume "$PWD":/tmp/app \ --env CI_PROJECT_DIR=/tmp/app \ -w /tmp/app \ registry.gitlab.com/gitlab-org/security-products/analyzers/semgrep:latest /analyzer run Docker 컨테이너는 마운트된 프로젝트 디렉터리에 분석기 카테고리에 해당하는 리포트 파일명으로 리포트를 생성합니다. 예를 들어, SAST 는 gl-sast-report.json 이라는 파일을 생성합니다. 분석기 개발 # 분석기를 업데이트하려면: Go 소스 코드를 수정합니다. 새 Docker 이미지를 빌드합니다. 테스트 프로젝트에 대해 분석기를 실행합니다. 생성된 리포트를 예상 결과와 비교합니다. analyzer 라는 이름의 Docker 이미지를 생성하는 방법은 다음과 같습니다: docker build -t analyzer . 예를 들어, 시크릿 탐지를 테스트하려면 다음을 실행합니다: wget https://gitlab.com/gitlab-org/security-products/ci-templates/-/raw/master/scripts/compare_reports.sh sh ./compare_reports.sh sd test/fixtures/gl-secret-detection-report.json test/expect/gl-secret-detection-report.json \ | patch -Np1 test/expect/gl-secret-detection-report.json && Git commit -m 'Update expectation' test/expect/gl-secret-detection-report.json rm compare_reports.sh 자신의 환경에 맞게 바이너리를 컴