보안 스캐닝 결과
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
GitLab에서 파이프라인 보안 스캐닝 결과를 보고 조치를 취합니다. 프로젝트에서 결과를 생성하려면 보안 스캐닝이 구성되어 있어야 합니다. 보안 스캔 결과를 이해하기 위한 주요 용어: 발견(Finding) : 발견은 개발 브랜치에서 식별된 잠재적 취약점입니다.
히스토리
- GitLab 17.9에서
dependency_scanning_for_pipelines_with_cyclonedx_reports라는 플래그와 함께 도입. 기본적으로 비활성화됨. - GitLab 17.9에서 GitLab.com 및 GitLab Self-Managed에서 활성화.
- 17.10에서 기능 플래그
dependency_scanning_for_pipelines_with_cyclonedx_reports제거.
GitLab에서 파이프라인 보안 스캐닝 결과를 보고 조치를 취합니다. 선택된 보안 스캐너가 파이프라인에서 실행되고 보안 보고서를 출력합니다. 이 보고서의 내용은 처리되어 GitLab에 표시됩니다.
프로젝트에서 결과를 생성하려면 보안 스캐닝이 구성되어 있어야 합니다. 보안 스캐너 구성에 대한 정보는 보안 구성을 참조하십시오.
보안 스캔 결과를 이해하기 위한 주요 용어:
발견(Finding) : 발견은 개발 브랜치에서 식별된 잠재적 취약점입니다. 브랜치가 기본 브랜치에 병합되면 발견이 취약점이 됩니다. : 발견은 관련 CI/CD 작업 아티팩트가 만료되거나 파이프라인이 생성된 후 90일이 지나면 만료됩니다. 관련 작업 아티팩트가 잠겨 있더라도 마찬가지입니다.
취약점(Vulnerability) : 취약점은 기본 브랜치에서 식별된 소프트웨어 보안 약점입니다. : 취약점 레코드는 기본 브랜치에서 더 이상 감지되지 않더라도 보관될 때까지 유지됩니다.
기본 브랜치에서 식별된 취약점은 취약점 보고서에 나열됩니다.
보안 보고서 아티팩트#
보안 스캐너는 브랜치 파이프라인과 활성화된 경우 머지 리퀘스트 파이프라인에서 실행됩니다. 각 보안 스캐너는 특정 보안 스캐너에서 감지된 모든 발견 또는 취약점의 세부 정보가 포함된 보안 보고서 아티팩트를 출력합니다.
자식 파이프라인의 보안 보고서는 파이프라인 보안 보고서 및 머지 리퀘스트 위젯에 포함됩니다.
개발(비기본) 브랜치에서 발견에는 개발 브랜치가 생성될 때 대상 브랜치에 있는 모든 취약점이 포함됩니다.
발견은 관련 CI/CD 작업 아티팩트가 만료되거나 파이프라인이 생성된 후 90일이 지나면 만료됩니다. 관련 작업 아티팩트가 잠겨 있더라도 마찬가지입니다. 만료된 발견은 파이프라인의 보안 탭에 표시되지 않습니다. 재현하려면 파이프라인을 다시 실행합니다.
보안 보고서 다운로드#
예를 들어 GitLab 외부에서 분析하거나 보관 목적으로 보안 보고서를 다운로드할 수 있습니다. 보안 보고서는 JSON 파일입니다.
전제 조건:
- 프로젝트에 대한 Security Manager, Developer, Maintainer 또는 Owner 역할이 있어야 합니다.
보안 보고서를 다운로드하려면:
- 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 빌드 > 파이프라인을 선택합니다.
- 파이프라인을 선택합니다.
- 보안 탭을 선택합니다.
- 결과 다운로드를 선택한 다음 원하는 보안 보고서를 선택합니다.
선택한 보안 보고서가 장치에 다운로드됩니다.

파이프라인 보안 보고서#
파이프라인 보안 보고서에는 브랜치에서 감지된 모든 발견 또는 취약점의 세부 정보가 포함됩니다. 기본 브랜치에 대해 실행된 파이프라인의 경우 파이프라인 보안 보고서의 모든 취약점은 취약점 보고서에도 있습니다.

파이프라인 보안 보고서 보기#
브랜치에서 감지된 모든 발견 또는 취약점의 세부 정보를 보려면 파이프라인 보안 보고서를 봅니다.
전제 조건:
- 프로젝트에 대한 Security Manager, Developer, Maintainer 또는 Owner 역할이 있어야 합니다.
파이프라인 보안 보고서를 보려면:
- 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 빌드 > 파이프라인을 선택합니다.
- 최신 파이프라인을 선택합니다.
발견 또는 취약점의 세부 정보를 보려면 설명을 선택합니다.
이슈 만들기#
발견 또는 취약점의 수정 작업을 추적, 문서화 및 관리하기 위한 이슈를 만듭니다.
전제 조건:
- 프로젝트에 대한 Security Manager, Developer, Maintainer 또는 Owner 역할이 있어야 합니다.
이슈를 만들려면:
- 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 빌드 > 파이프라인을 선택합니다.
- 파이프라인을 선택합니다.
- 보안 탭을 선택합니다.
- 발견의 설명을 선택합니다.
- 이슈 만들기를 선택합니다.
프로젝트에 이슈가 만들어지고 발견 또는 취약점의 설명에서 설명이 복사됩니다.
상태 변경#
파이프라인의 보안 탭에서 발견 또는 취약점의 상태를 변경할 수 있습니다. 발견에 대한 모든 변경 사항은 브랜치가 기본 브랜치에 병합될 때 유지됩니다.
전제 조건:
- 프로젝트에 대한 Maintainer 역할 또는
admin_vulnerability사용자 정의 권한이 있어야 합니다.
발견 또는 취약점의 상태를 변경하려면:
-
상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
왼쪽 사이드바에서 빌드 > 파이프라인을 선택합니다.
-
최신 파이프라인을 선택합니다.
-
보안 탭을 선택합니다.
-
발견 보고서에서:
-
변경할 발견 또는 취약점을 선택합니다.
- 개별 발견 또는 취약점을 선택하려면 각 항목 옆의 체크박스를 선택합니다.
- 페이지의 모든 발견 또는 취약점을 선택하려면 테이블 헤더의 체크박스를 선택합니다.
-
작업 선택 드롭다운 목록에서 해제됨 또는 분류 필요를 선택합니다.
-
상태 변경을 선택합니다.
-
보안 보고서 다운로드#
예를 들어 GitLab 외부에서 分析하거나 보관 목적으로 보안 보고서를 다운로드할 수 있습니다. 보안 보고서는 JSON 파일입니다.
전제 조건:
- 프로젝트에 대한 Security Manager, Developer, Maintainer 또는 Owner 역할이 있어야 합니다.
보안 보고서를 다운로드하려면:
- 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 빌드 > 파이프라인을 선택합니다.
- 파이프라인을 선택합니다.
- 보안 탭을 선택합니다.
- 결과 다운로드를 선택한 다음 원하는 보안 보고서를 선택합니다.
선택한 보안 보고서가 장치에 다운로드됩니다.

머지 리퀘스트 보안 위젯#
머지 리퀘스트는 변경 사항이 발견에 미치는 차이의 요약을 제공하는 보안 위젯을 표시합니다. CI/CD 파이프라인이 실행된 후 보안 보고서를 처리하는 데 시간이 걸리기 때문에 보안 위젯이 표시되기까지 지연이 발생할 수 있습니다.
예를 들어 다음 스캔 결과가 있는 두 개의 파이프라인을 고려합니다:
- 소스 브랜치 파이프라인은
V1과V2로 식별된 두 가지 취약점을 감지합니다. - 대상 브랜치 파이프라인은
V1과V3으로 식별된 두 가지 취약점을 감지합니다. V2는 머지 리퀘스트 위젯에 "추가됨"으로 표시됩니다.V3은 머지 리퀘스트 위젯에 "수정됨"으로 표시됩니다.V1은 두 브랜치 모두에 존재하며 머지 리퀘스트 위젯에 표시되지 않습니다.
소스 브랜치와 대상 브랜치 간의 차이를 표시하려면 두 브랜치의 보안 보고서가 모두 필요합니다. 시스템은 대상 브랜치의 마지막 10개 커밋에서 유효한 보안 파이프라인을 확인합니다. 각 커밋에 대해 최대 10개의 최근 파이프라인에서 보안 보고서를 확인합니다. 이 접근 방식은 커밋이 파이프라인을 건너뛰더라도 이전 커밋의 유효한 보안 보고서를 찾을 수 있도록 합니다. 보안 보고서를 찾지 못하면 모든 발견이 신규로 나열됩니다. 머지 리퀘스트에서 보안 스캐닝을 활성화하기 전에 기본 브랜치에 보안 스캐닝이 활성화되어 있는지 확인합니다.
보안 위젯 보기#
변경 사항이 발견에 미치는 차이를 보려면 머지 리퀘스트 보안 위젯을 봅니다.
전제 조건:
- 프로젝트에 대한 Developer, Maintainer 또는 Owner 역할이 있어야 합니다.
보안 위젯을 보려면:
- 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 코드 > 머지 리퀘스트를 선택합니다.
- 머지 리퀘스트를 선택합니다.
각 보안 보고서 유형의 세부 정보를 보려면 세부 정보 표시([chevron-down])를 선택합니다. 각 보안 보고서 유형에 대해 위젯은 심각도별로 정렬된 처음 25개의 추가된 발견과 25개의 수정된 발견을 표시합니다. 머지 리퀘스트의 소스 브랜치에 있는 모든 발견을 보려면 모든 파이프라인 발견 보기를 선택합니다.

문제 해결#
보안 스캐닝으로 작업할 때 다음 문제가 발생할 수 있습니다.
해제된 취약점이 MR 보안 위젯에 표시됨#
머지 리퀘스트의 보안 위젯을 볼 때 해제된 취약점이 여전히 나열되는 경우가 있습니다.
이 문제에 대한 해결책은 아직 없습니다. 자세한 내용은 이슈 411235를 참조하십시오.
보고서 파싱 및 스캔 수집 오류#
이 단계는 GitLab 지원팀이 이러한 오류를 재현하는 데 사용됩니다.
일부 보안 스캔은 보고서 파싱 또는 스캔 수집과 관련된 파이프라인의 보안 탭에서 오류를 발생시킬 수 있습니다. 사용자로부터 프로젝트 사본을 얻을 수 없는 경우 스캔에서 생성된 보고서를 사용하여 오류를 재현할 수 있습니다.
오류를 재현하려면:
-
사용자로부터 보고서 사본을 얻습니다. 이 예시에서는
gl-sast-report.json입니다. -
프로젝트를 만듭니다.
-
저장소에 보고서를 커밋합니다.
-
.gitlab-ci.yml파일을 추가하고 작업의 아티팩트로 보고서를 지정합니다.예를 들어 SAST 작업으로 인한 오류를 재현하려면:
sample-job: script: - echo "Testing report" artifacts: reports: sast: gl-sast-report.json -
파이프라인이 완료된 후 파이프라인의 보안 탭 내용에서 오류를 확인합니다.
스캔에 따라 sast: gl-sast-report.json을 해당 artifacts:reports 유형과 올바른 JSON 보고서 파일 이름으로 교체할 수 있습니다.
