Skip to main content

SARIF 결과 파일의 용량이 과도하게 큽니다.

code scanning에서는 10MB를 초과하는 SARIF 결과 파일의 업로드를 지원하지 않습니다. 영향력 있는 핵심 결과만을 담은 경량화된 파일 생성 방법을 모색합니다.

이 오류에 대해

SARIF file is too large
SARIF results file is too large
SARIF upload is rejected (bigger than allowed size for zip archive)
SARIF ZIP upload is too large
A fatal error occurred: SARIF file is too large
413: Payload Too Large

프로세스 진행 중 10MB 용량 제한을 초과하는 SARIF 파일을 업로드할 경우, 해당 오류 메시지 중 하나가 발생합니다. Code scanning는 이 크기를 초과하는 파일을 처리하지 않습니다. code scanning에 업로드할 결과의 수를 줄이기 위한 여러 방법이 있습니다.

CodeQL 또는 타사 분석 도구로 생성된 SARIF 파일의 경우, 파일 내에서 직접 해당 오류들을 확인하실 수 있습니다. code scanning의 업로드 제한에 대한 자세한 내용은 코드 검사에 대한 SARIF 지원을 참조하세요.

오류 원인 확인

SARIF 결과 파일의 크기가 지나치게 커지는 원인은 다양합니다.

SARIF 파일 압축

code scanning에서 거부된 결과 파일을 검토하여 다음 사항을 확인할 수 있습니다.

  • SARIF 파일은 gzip 형식으로 압축되어 있습니다.
  • 압축 파일의 용량이 10MB 미만입니다.

gzip으로 파일 압축에 실패했다면, 업로드 프로세스를 재시작하기 전에 먼저 파일을 압축하시기 바랍니다. 압축된 파일의 크기가 여전히 문제가 된다면, 더 작은 결과 집합을 생성하도록 분석 설정을 조정하는 것이 필요합니다.

분석된 코드의 양

결과가 과도할 때는 분석을 재구성하여 가장 핵심적인 코드에만 집중하도록 해야 합니다.

  • 해석된 언어의 경우, 리포지토리에 경고 수정 우선순위가 낮은 테스트, 데모, 공급업체 종속성이 많이 포함되어 있는지 먼저 확인해야 합니다. 이 코드는 분석 대상에서 제외하시기 바랍니다. 코드 제외에 관한 자세한 설명은 해석된 언어 분석 섹션을 참고하시기 바랍니다.
  • 컴파일된 언어의 경우, 빌드 프로세스가 여러 운영 환경이나 아키텍처를 대상으로 하는 둘 이상의 코드 변형을 생성하는지 검증해야 합니다. 먼저 코드의 한 가지 변형만 분석해보는 것이 좋습니다. 자세한 내용은 빌드 명령 최적화를 참조하세요.

실행 쿼리 수

검색 결과가 여전히 너무 많다면, 코드 분석에 사용하는 쿼리의 개수를 점검해보세요. 쿼리 실행 횟수를 줄여 보세요. 초기 경고를 수정한 후에는 추가 쿼리를 다시 도입할 수 있습니다. 한 예로 CodeQL 분석에서는 기본 쿼리 모음만 실행되도록 제한할 수 있습니다. 자세한 내용은 코드 검색을 위한 워크플로 구성 옵션을(를) 참조하세요.

쿼리에서 찾은 결과 수

코드베이스 고유의 코딩 스타일을 따르거나 분석 도구가 특정 라이브러리를 제대로 인식하지 못할 경우, 단일 쿼리에서 과도하게 많은 결과가 도출될 수 있습니다. SARIF 뷰어를 통해 결과 파일을 검토하면 결과의 분포를 파악할 수 있습니다. 예: https://microsoft.github.io/sarif-web-component/.

  • 단일 쿼리로 식별된 경고가 결과를 주도하고 있는지 확인합니다. 분석 대상에서 해당 쿼리를 제외해 보세요. 다른 경고가 해결되면 다시 도입할 수 있습니다. CodeQL 쿼리 구성에 대한 자세한 내용은 분석에서 쿼리 제외를 참조하세요.
  • 깊이 있는 여러 경로를 포함하는 데이터 흐름 쿼리의 존재 여부를 검증합니다. 출력 시 데이터의 흐름 경로를 제외하고 표시해 보세요. CodeQL 분석 구성에 대한 자세한 내용은 출력에서 데이터 흐름 경로 생략을 참조하세요.

문제 해결

다음 옵션은 복잡성순으로 나열되어 있습니다. 검색 결과를 효과적으로 관리할 수 있도록 설정을 조정해야 합니다. 발생한 경고를 모두 해결한 뒤에는 분석 범위를 넓혀 더 많은 코드를 포함하거나 쿼리 실행 횟수를 늘리도록 설정을 변경할 수 있습니다.

해석된 언어에 대한 분석에서 코드 제외

분석 결과 파일의 크기를 줄이기 위해서는 비프로덕션 코드를 제외하는 것이 가장 간단한 방법입니다.

  • CodeQL code scanning의 고급 설정: 워크플로 파일에서 pathspaths-ignore 를 사용하여 분석 대상 코드를 지정합니다. 자세한 내용은 코드 검색을 위한 워크플로 구성 옵션을(를) 참조하세요.
  • CodeQL CLI database create: 동일한 구문으로 YAML 구성 파일을 작성하여 코드 검색 시 분석 대상이 될 코드를 정의합니다. 이 구성 파일을 호출할 수 있도록 database create 옵션을 활용해 --codescanning-config 명령을 수정합니다. 자세한 내용은 코드 검색을 위한 워크플로 구성 옵션을(를) 참조하세요.

빌드 명령 최적화

빌드 시 특정 변형만 선택하여 컴파일하면 결과 파일의 용량을 최적화할 수 있습니다.

  • CodeQL code scanning의 고급 설정: 워크플로 파일에서 사용자가 선택한 빌드 명령어를 업데이트합니다. 자세한 내용은 컴파일된 언어에 CodeQL 코드 스캐닝을(를) 참조하세요.
  • CodeQL CLI database create: database create 옵션을 사용하여 --command 명령을 호출하거나 코드를 검색하고 --codescanning-config 옵션을 사용하여 YAML 구성 파일에서 빌드 명령을 정의하여 파일을 호출할 때 원하는 빌드 명령을 지정할 수 있습니다. 자세한 내용은 CodeQL 분석을 위한 코드 준비을(를) 참조하세요.

실행할 쿼리 도구 모음 정의

기본 보안 쿼리가 이미 실행 중일 수 있지만, 검토해 볼 가치가 충분합니다.

  • code scanning에 대한 CodeQL 고급 설정: 워크플로 파일에서 queries 키워드를 확인하세요. 그렇지 않은 경우 기본 쿼리 도구 모음만 실행됩니다. 있는 경우 실행할 쿼리를 정의합니다. 워크플로 파일의 해당 줄을 주석 처리하는 것을 시도해 보세요. 자세한 내용은 코드 검색을 위한 워크플로 구성 옵션을(를) 참조하세요.
  • CodeQL CLI database analyze: 데이터베이스 분석 명령이 쿼리, 쿼리 도구 모음 또는 쿼리 팩이 위치한 경로를 정확히 참조하고 있는지 확인하세요. 해당 항목이 없으면 기본 쿼리 도구 모음만 실행됩니다. 실행할 쿼리가 정의되어 있다면, 필요에 따라 해당 호출 단계에서 이를 제외할 수 있습니다. 자세한 내용은 CodeQL 쿼리를 사용하여 코드 분석을(를) 참조하세요.

분석에서 쿼리 제외

만약 분석 결과가 특정 규칙 하나에만 과도하게 의존한다면, 해당 규칙을 분석 대상에서 제외하는 것이 가장 효과적인 해결책이 될 수 있습니다.

  • code scanning에 대한 CodeQL 고급 설정: query-filters 분석에서 특정 키워드를 사용하여 하나 이상의 쿼리를 제외할 수 있습니다. 자세한 내용은 코드 검색을 위한 워크플로 구성 옵션을(를) 참조하세요.
  • CodeQL CLI database analyze: 데이터베이스 분석 명령을 업데이트하여 하나 이상의 쿼리를 분석 대상에서 제외합니다. 자세한 내용은 CodeQL 쿼리를 사용하여 코드 분석을(를) 참조하세요.

또는 filter-sarif SARIF 파일을 재작성할 때 특정 검색 결과를 제외 패턴을 사용하여 제외하는 방식으로 작업을 수행할 수 있습니다.

출력 시 데이터의 흐름 경로를 제외한 부분만 표시해 보세요.

SARIF 결과에서 강조 표시된 심층 코드 경로가 많은 경우, 각 경고에 대해 보고되는 경로 수를 줄이는 것이 좋습니다.

데이터 재사용.코드 스캐닝.max-경로 설정 옵션 %}

추가 읽기

  •         [AUTOTITLE](/code-security/code-scanning/integrating-with-code-scanning/sarif-support-for-code-scanning)