InfoGrab DocsInfoGrab Docs

SARIF 보고서

요약

이 기능의 사용 가능 여부는 sarif_ingestion이라는 기능 플래그로 제어됩니다. 서드파티 SARIF 보고서를 사용하면 SARIF 2.1.0 스캐너의 결과를 GitLab 취약점 관리에 추가할 수 있습니다. 보고서를 추가하면 결과가 다음 페이지에서 네이티브 GitLab 스캐너의 결과와 함께 표시됩니다:

히스토리
  • GitLab 18.11에서 sarif_ingestion이라는 플래그와 함께 도입됨.

기본적으로 비활성화됨.

  • GitLab 19.1에서 기본적으로 활성화됨.
Note

이 기능의 사용 가능 여부는 sarif_ingestion이라는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하세요.

서드파티 SARIF 보고서를 사용하면 SARIF 2.1.0 스캐너의 결과를 GitLab 취약점 관리에 추가할 수 있습니다. CI/CD job이 SARIF를 생성하는 스캐너를 실행하고 SARIF 아티팩트를 추가합니다. GitLab은 아티팩트를 파싱, 검증하여 보안 결과로 추가합니다.

보고서를 추가하면 결과가 다음 페이지에서 네이티브 GitLab 스캐너의 결과와 함께 표시됩니다:

  • 파이프라인 Security

  • 프로젝트 취약점 보고서

  • 보안 대시보드

  • 머지 리퀘스트 보안 위젯

  • 보안 정책

서드파티 SARIF 보고서는 GitLab에서 제공하는 내장 스캐너를 보완합니다. GitLab이 네이티브로 제공하지 않는 서드파티 스캐너를 통합하거나, 이미 실행 중인 도구의 결과를 통합할 때 사용하세요.

SARIF 보고서 추가#

SARIF 결과를 GitLab에 추가하려면:

사전 요구사항:

  • 프로젝트에 대한 Maintainer 또는 Owner 권한.

  • SARIF 2.1.0 파일을 생성하는 CI/CD job.

  1. .gitlab-ci.yml 파일에서 스캐너를 실행하고 SARIF 출력을 artifacts:reports:sarif 아티팩트로 저장하는 job을 정의하세요. 예시:

    sarif_scan:
      image: <scanner-image>
      script:
        - <scanner-command> --output sarif.json
      artifacts:
        reports:
          sarif: sarif.json
    
  2. 변경 사항을 커밋하고 푸시하세요. GitLab은 job이 완료되면 SARIF 파일을 파싱합니다.

  3. 파이프라인 Security 탭에서 추가된 결과를 확인하세요.

CI/CD 아티팩트 참조는 artifacts:reports:sarif를 참조하세요.

할당된 보고서 유형#

GitLab은 결과의 위치와 식별자를 기반으로 각 SARIF 결과에 취약점 보고서 유형을 할당합니다. 유형은 취약점 보고서에서 결과가 표시되는 위치와 보안 정책과의 상호 작용 방식을 결정합니다.

GitLab은 다음 규칙을 순서대로 평가하여 결과와 일치하는 첫 번째 유형을 할당합니다.

규칙 할당된 보고서 유형
식별자 중 하나가 CVE인 경우. 종속성 스캐닝
식별자 중 하나가 시크릿 관련 CWE인 경우. 1 시크릿 탐지
기본값 (어떤 규칙도 일치하지 않는 경우) SAST

각주:

  • 다음 CWE는 시크릿 관련입니다:

CWE-798 (하드 코딩된 자격 증명).

GitLab은 결과와 해당 규칙에서 다음 순서로 세 가지 소스에서 식별자를 읽습니다:

  • result.ruleId 항목이 CVE-YYYY-N 또는 CWE-N 형식과 일치하는 경우.

  • rule.properties.tags[] 항목이 cwe:N, cwe-N, cve:YYYY-N, 또는 cve-YYYY-N 형식과 일치하는 경우.

  • rule.relationships[] 관계의 target.toolComponent.nameCWE인 경우.

Note

CVE 또는 지원되는 CWE 식별자가 없는 결과는 SAST로 할당됩니다. GitLab이 할당하는 유형을 변경하려면, 일치하는 CVE 또는 CWE 식별자를 내보내도록 스캐너를 구성하세요.

SARIF 필드 매핑#

GitLab은 다음 규칙에 따라 SARIF 필드를 GitLab과 호환되는 필드에 할당합니다.

GitLab 필드 SARIF 소스 필수 여부 비고
심각도 심각도 해결 참조 No 심각도 필드가 설정되지 않은 경우 기본값은 medium.
기본 식별자 result.ruleId가 run.tool.driver.rules[].id의 해당 값과 매핑됨 check-sm ruleId가 없는 결과는 추가되지 않음.
보조 식별자 rule.properties.tags[] 및 rule.relationships[] No 보고서 유형 할당에 사용됨.
위치 result.locations[0].physicalLocation check-sm 물리적 위치가 없는 결과는 추가되지 않음.
스캐너 이름 run.tool.driver.name check-sm 유효한 SARIF에 필수.
스캐너 공급업체 run.tool.driver.organization, 그 다음 run.tool.driver.informationUri No 첫 번째 비어 있지 않은 값이 사용됨.
스캐너 버전 run.tool.driver.version, 그 다음 run.tool.driver.semanticVersion No 첫 번째 비어 있지 않은 값이 사용됨.
억제 result.suppressions[] No 억제된 결과는 모든 억제가 underReview 또는 rejected가 아닌 한 건너뜀.

심각도 해결#

GitLab은 다음 필드를 우선순위 순서로 확인하여 SARIF 결과의 심각도를 해결합니다. 값이 있는 첫 번째 필드가 사용됩니다.

  • result.rank. 0.0에서 100.0 사이의 부동소수점 수.

  • rule.properties.security-severity. 0.0에서 10.0 사이의 부동소수점 수. 버킷 분류 전에 값에 10을 곱합니다.

  • result.properties.security-severity. 0.0에서 10.0 사이의 부동소수점 수. 버킷 분류 전에 값에 10을 곱합니다.

  • result.level.

  • rule.defaultConfiguration.level.

  • 다른 항목이 일치하지 않는 경우 기본값으로 medium.

result.rank 또는 security-severity의 숫자 점수는 다음 범위를 사용하여 심각도로 할당됩니다:

점수 (0-100) 심각도
0.0-9.9 Info
10.0-39.9 Low
40.0-69.9 Medium
70.0-89.9 High
90.0-100 Critical

SARIF level 값은 다음과 같이 매핑됩니다:

level 심각도
error High
warning Medium
note Low
none Info
Note

GitLab은 level: error를 critical이 아닌 high로 할당합니다. critical 결과를 보고하려면, result.rank90 이상으로 설정하거나 security-severity9.0 이상으로 설정하세요.

수집 동작#

SARIF 파일이 올바르게 형성되었지만 일부 결과를 추가할 수 없는 경우, GitLab은 처리할 수 없는 결과의 비율을 사용하여 전체 스캔에 대해 수행할 작업을 결정합니다.

드롭 비율 동작 보고 방식
0% 모든 결과가 수집됨. 메시지 없음.
1% ~ 50% 유효한 결과가 수집됨. 드롭 수와 함께 경고 표시.
50% 초과 전체 스캔이 실패함. 보고서의 어떤 결과도 수집되지 않음. 드롭 수와 함께 오류 표시.

GitLab은 다음 경우 중 하나에 해당하면 결과를 처리할 수 없습니다:

  • ruleId가 누락된 경우.

  • physicalLocation이 누락된 경우.

  • 결과 식별자 생성에 사용되는 필수 구성 요소 중 하나라도 nil인 경우.

  • 문자열 필드가 문자 제한을 초과하는 경우.

드롭 비율은 파일의 각 run이 아니라 전체 SARIF 아티팩트에 걸쳐 계산됩니다. 모든 run에 걸친 처리 불가능한 결과의 비율이 임계값을 초과하면, 수집 피드백이 아티팩트에서 내보낸 모든 보고서에 적용됩니다.

스키마 유효성 검사 오류와 지원되지 않는 SARIF 버전은 드롭 비율에 관계없이 전체 보고서를 거부합니다.

다중 도구 보고서#

SARIF 파일은 각각 자체 runs[] 항목을 가진 여러 도구 실행을 포함할 수 있습니다. 각 run에 대해 GitLab은 추론된 보고서 유형별로 결과를 그룹화하고 각 그룹에 대해 별도의 스캔 레코드를 생성합니다. 둘 이상의 추론된 유형의 결과를 포함하는 run은 둘 이상의 스캔 레코드를 생성합니다. 각 스캔은 run의 tool.driver.name을 스캐너로 사용합니다.

여러 스캐너의 출력을 단일 아티팩트로 결합하려면 다중 run 보고서를 사용하세요. 예를 들어, job은 두 스캐너를 실행하고 두 개의 run을 포함하는 단일 SARIF 파일을 내보낼 수 있습니다.

파일별 run 제한은 제한을 참조하세요.

제한#

제한 기본값 구성 가능 여부
최대 SARIF 아티팩트 크기 10 MB (ci_max_artifact_size_sarif) check-sm
SARIF 파일당 최대 run 수 20 No
run당 최대 결과 수 5,000 No
run당 최대 규칙 수 25,000 No
규칙당 최대 태그 수 10 No
최대 rule.name 길이 255자 No
최대 shortDescription.text 길이 1,024자 No
최대 fullDescription.text 길이 1,024자, 결과 제목으로 사용 시 255자로 잘림 No
최대 message.text 길이 1,024자, 결과 제목으로 사용 시 255자로 잘림 No
최대 helpUri 길이 2,048자 No
지원되는 SARIF 버전 2.1.0만 지원 No

run당 개수가 제한을 초과하면 GitLab은 처음 N개 항목을 처리하고 경고를 기록합니다. 결과의 문자열 필드가 문자 제한을 초과하면 전체 결과가 건너뛰어지고 드롭 비율에 포함됩니다.

GitLab Self-Managed 인스턴스의 경우, 관리자는 인스턴스 제한을 통해 구성 가능한 제한을 변경할 수 있습니다.

알려진 문제#

  • SAST, 종속성 스캐닝, 또는 시크릿 탐지로 할당된 SARIF 결과는 동등한 네이티브 GitLab 스캐너의 결과와 중복 제거되지 않습니다. 자세한 내용은 이슈 592410을 참조하세요.

  • SARIF 억제를 통해 결과를 제외할 수 있지만, GitLab은 억제를 기반으로 취약점 기각을 생성하지 않습니다. 결과를 기각하려면 취약점 보고서를 사용하세요.

관련 항목#

SARIF 보고서

GitLab v19.1
Tier: Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

이 기능의 사용 가능 여부는 sarif_ingestion이라는 기능 플래그로 제어됩니다. 서드파티 SARIF 보고서를 사용하면 SARIF 2.1.0 스캐너의 결과를 GitLab 취약점 관리에 추가할 수 있습니다. 보고서를 추가하면 결과가 다음 페이지에서 네이티브 GitLab 스캐너의 결과와 함께 표시됩니다:

히스토리
  • GitLab 18.11에서 sarif_ingestion이라는 플래그와 함께 도입됨.

기본적으로 비활성화됨.

  • GitLab 19.1에서 기본적으로 활성화됨.
Note

이 기능의 사용 가능 여부는 sarif_ingestion이라는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하세요.

서드파티 SARIF 보고서를 사용하면 SARIF 2.1.0 스캐너의 결과를 GitLab 취약점 관리에 추가할 수 있습니다. CI/CD job이 SARIF를 생성하는 스캐너를 실행하고 SARIF 아티팩트를 추가합니다. GitLab은 아티팩트를 파싱, 검증하여 보안 결과로 추가합니다.

보고서를 추가하면 결과가 다음 페이지에서 네이티브 GitLab 스캐너의 결과와 함께 표시됩니다:

  • 파이프라인 Security

  • 프로젝트 취약점 보고서

  • 보안 대시보드

  • 머지 리퀘스트 보안 위젯

  • 보안 정책

서드파티 SARIF 보고서는 GitLab에서 제공하는 내장 스캐너를 보완합니다. GitLab이 네이티브로 제공하지 않는 서드파티 스캐너를 통합하거나, 이미 실행 중인 도구의 결과를 통합할 때 사용하세요.

SARIF 보고서 추가#

SARIF 결과를 GitLab에 추가하려면:

사전 요구사항:

  • 프로젝트에 대한 Maintainer 또는 Owner 권한.

  • SARIF 2.1.0 파일을 생성하는 CI/CD job.

  1. .gitlab-ci.yml 파일에서 스캐너를 실행하고 SARIF 출력을 artifacts:reports:sarif 아티팩트로 저장하는 job을 정의하세요. 예시:

    sarif_scan:
      image: <scanner-image>
      script:
        - <scanner-command> --output sarif.json
      artifacts:
        reports:
          sarif: sarif.json
    
  2. 변경 사항을 커밋하고 푸시하세요. GitLab은 job이 완료되면 SARIF 파일을 파싱합니다.

  3. 파이프라인 Security 탭에서 추가된 결과를 확인하세요.

CI/CD 아티팩트 참조는 artifacts:reports:sarif를 참조하세요.

할당된 보고서 유형#

GitLab은 결과의 위치와 식별자를 기반으로 각 SARIF 결과에 취약점 보고서 유형을 할당합니다. 유형은 취약점 보고서에서 결과가 표시되는 위치와 보안 정책과의 상호 작용 방식을 결정합니다.

GitLab은 다음 규칙을 순서대로 평가하여 결과와 일치하는 첫 번째 유형을 할당합니다.

규칙 할당된 보고서 유형
식별자 중 하나가 CVE인 경우. 종속성 스캐닝
식별자 중 하나가 시크릿 관련 CWE인 경우. 1 시크릿 탐지
기본값 (어떤 규칙도 일치하지 않는 경우) SAST

각주:

  • 다음 CWE는 시크릿 관련입니다:

CWE-798 (하드 코딩된 자격 증명).

GitLab은 결과와 해당 규칙에서 다음 순서로 세 가지 소스에서 식별자를 읽습니다:

  • result.ruleId 항목이 CVE-YYYY-N 또는 CWE-N 형식과 일치하는 경우.

  • rule.properties.tags[] 항목이 cwe:N, cwe-N, cve:YYYY-N, 또는 cve-YYYY-N 형식과 일치하는 경우.

  • rule.relationships[] 관계의 target.toolComponent.nameCWE인 경우.

Note

CVE 또는 지원되는 CWE 식별자가 없는 결과는 SAST로 할당됩니다. GitLab이 할당하는 유형을 변경하려면, 일치하는 CVE 또는 CWE 식별자를 내보내도록 스캐너를 구성하세요.

SARIF 필드 매핑#

GitLab은 다음 규칙에 따라 SARIF 필드를 GitLab과 호환되는 필드에 할당합니다.

GitLab 필드 SARIF 소스 필수 여부 비고
심각도 심각도 해결 참조 No 심각도 필드가 설정되지 않은 경우 기본값은 medium.
기본 식별자 result.ruleId가 run.tool.driver.rules[].id의 해당 값과 매핑됨 check-sm ruleId가 없는 결과는 추가되지 않음.
보조 식별자 rule.properties.tags[] 및 rule.relationships[] No 보고서 유형 할당에 사용됨.
위치 result.locations[0].physicalLocation check-sm 물리적 위치가 없는 결과는 추가되지 않음.
스캐너 이름 run.tool.driver.name check-sm 유효한 SARIF에 필수.
스캐너 공급업체 run.tool.driver.organization, 그 다음 run.tool.driver.informationUri No 첫 번째 비어 있지 않은 값이 사용됨.
스캐너 버전 run.tool.driver.version, 그 다음 run.tool.driver.semanticVersion No 첫 번째 비어 있지 않은 값이 사용됨.
억제 result.suppressions[] No 억제된 결과는 모든 억제가 underReview 또는 rejected가 아닌 한 건너뜀.

심각도 해결#

GitLab은 다음 필드를 우선순위 순서로 확인하여 SARIF 결과의 심각도를 해결합니다. 값이 있는 첫 번째 필드가 사용됩니다.

  • result.rank. 0.0에서 100.0 사이의 부동소수점 수.

  • rule.properties.security-severity. 0.0에서 10.0 사이의 부동소수점 수. 버킷 분류 전에 값에 10을 곱합니다.

  • result.properties.security-severity. 0.0에서 10.0 사이의 부동소수점 수. 버킷 분류 전에 값에 10을 곱합니다.

  • result.level.

  • rule.defaultConfiguration.level.

  • 다른 항목이 일치하지 않는 경우 기본값으로 medium.

result.rank 또는 security-severity의 숫자 점수는 다음 범위를 사용하여 심각도로 할당됩니다:

점수 (0-100) 심각도
0.0-9.9 Info
10.0-39.9 Low
40.0-69.9 Medium
70.0-89.9 High
90.0-100 Critical

SARIF level 값은 다음과 같이 매핑됩니다:

level 심각도
error High
warning Medium
note Low
none Info
Note

GitLab은 level: error를 critical이 아닌 high로 할당합니다. critical 결과를 보고하려면, result.rank90 이상으로 설정하거나 security-severity9.0 이상으로 설정하세요.

수집 동작#

SARIF 파일이 올바르게 형성되었지만 일부 결과를 추가할 수 없는 경우, GitLab은 처리할 수 없는 결과의 비율을 사용하여 전체 스캔에 대해 수행할 작업을 결정합니다.

드롭 비율 동작 보고 방식
0% 모든 결과가 수집됨. 메시지 없음.
1% ~ 50% 유효한 결과가 수집됨. 드롭 수와 함께 경고 표시.
50% 초과 전체 스캔이 실패함. 보고서의 어떤 결과도 수집되지 않음. 드롭 수와 함께 오류 표시.

GitLab은 다음 경우 중 하나에 해당하면 결과를 처리할 수 없습니다:

  • ruleId가 누락된 경우.

  • physicalLocation이 누락된 경우.

  • 결과 식별자 생성에 사용되는 필수 구성 요소 중 하나라도 nil인 경우.

  • 문자열 필드가 문자 제한을 초과하는 경우.

드롭 비율은 파일의 각 run이 아니라 전체 SARIF 아티팩트에 걸쳐 계산됩니다. 모든 run에 걸친 처리 불가능한 결과의 비율이 임계값을 초과하면, 수집 피드백이 아티팩트에서 내보낸 모든 보고서에 적용됩니다.

스키마 유효성 검사 오류와 지원되지 않는 SARIF 버전은 드롭 비율에 관계없이 전체 보고서를 거부합니다.

다중 도구 보고서#

SARIF 파일은 각각 자체 runs[] 항목을 가진 여러 도구 실행을 포함할 수 있습니다. 각 run에 대해 GitLab은 추론된 보고서 유형별로 결과를 그룹화하고 각 그룹에 대해 별도의 스캔 레코드를 생성합니다. 둘 이상의 추론된 유형의 결과를 포함하는 run은 둘 이상의 스캔 레코드를 생성합니다. 각 스캔은 run의 tool.driver.name을 스캐너로 사용합니다.

여러 스캐너의 출력을 단일 아티팩트로 결합하려면 다중 run 보고서를 사용하세요. 예를 들어, job은 두 스캐너를 실행하고 두 개의 run을 포함하는 단일 SARIF 파일을 내보낼 수 있습니다.

파일별 run 제한은 제한을 참조하세요.

제한#

제한 기본값 구성 가능 여부
최대 SARIF 아티팩트 크기 10 MB (ci_max_artifact_size_sarif) check-sm
SARIF 파일당 최대 run 수 20 No
run당 최대 결과 수 5,000 No
run당 최대 규칙 수 25,000 No
규칙당 최대 태그 수 10 No
최대 rule.name 길이 255자 No
최대 shortDescription.text 길이 1,024자 No
최대 fullDescription.text 길이 1,024자, 결과 제목으로 사용 시 255자로 잘림 No
최대 message.text 길이 1,024자, 결과 제목으로 사용 시 255자로 잘림 No
최대 helpUri 길이 2,048자 No
지원되는 SARIF 버전 2.1.0만 지원 No

run당 개수가 제한을 초과하면 GitLab은 처음 N개 항목을 처리하고 경고를 기록합니다. 결과의 문자열 필드가 문자 제한을 초과하면 전체 결과가 건너뛰어지고 드롭 비율에 포함됩니다.

GitLab Self-Managed 인스턴스의 경우, 관리자는 인스턴스 제한을 통해 구성 가능한 제한을 변경할 수 있습니다.

알려진 문제#

  • SAST, 종속성 스캐닝, 또는 시크릿 탐지로 할당된 SARIF 결과는 동등한 네이티브 GitLab 스캐너의 결과와 중복 제거되지 않습니다. 자세한 내용은 이슈 592410을 참조하세요.

  • SARIF 억제를 통해 결과를 제외할 수 있지만, GitLab은 억제를 기반으로 취약점 기각을 생성하지 않습니다. 결과를 기각하려면 취약점 보고서를 사용하세요.

관련 항목#