InfoGrab DocsInfoGrab Docs

지속적 컨테이너 스캐닝

요약

컨테이너 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인을 실행하지 않고도 컴포넌트 이름과 버전을 최신 보안 어드바이저리의 정보와 비교하여 프로젝트 이미지 의존성의 보안 취약점을 탐지합니다. 지속적 취약점 스캐닝이 지원되는 패키지 유형의 컴포넌트를 포함한 모든 프로젝트에 대해 스캔을 트리거하면 새로운 취약점이 나타날 수 있습니다.

히스토리
  • 지속적 컨테이너 스캐닝은 GitLab 16.8에서 container_scanning_continuous_vulnerability_scans라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
  • 지속적 컨테이너 스캐닝은 GitLab 16.10에서 GitLab Self-Managed 및 GitLab Dedicated에서 활성화되었습니다.
  • GitLab 17.0에서 일반 공개되었습니다. 기능 플래그 container_scanning_continuous_vulnerability_scans는 제거되었습니다.

컨테이너 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인을 실행하지 않고도 컴포넌트 이름과 버전을 최신 보안 어드바이저리의 정보와 비교하여 프로젝트 이미지 의존성의 보안 취약점을 탐지합니다. CVS는 프로젝트가 사용하는 컴포넌트를 파악하기 위해 기본 브랜치에 저장된 CycloneDX SBOM 보고서를 사용합니다. 이 SBOM을 생성하려면 기본 브랜치에서 컨테이너 스캐닝 job 이 최소 한 번 실행되어야 합니다. 그 이후부터 CVS는 추가 파이프라인 실행 없이 해당 컴포넌트에 대해 새로 게시된 어드바이저리를 자동으로 탐지합니다. 이미지 콘텐츠가 변경되면 CVS가 갱신된 컴포넌트 집합을 평가할 수 있도록 기본 브랜치에서 새 파이프라인을 실행하여 SBOM을 갱신해야 합니다. 대부분의 프로젝트에서는 의존성 변경이 파이프라인을 이미 트리거하는 코드 변경을 수반하므로, 이 작업은 일반적인 워크플로의 일부로 처리됩니다.

지속적 취약점 스캐닝이 지원되는 패키지 유형의 컴포넌트를 포함한 모든 프로젝트에 대해 스캔을 트리거하면 새로운 취약점이 나타날 수 있습니다.

컨테이너 스캐닝을 위한 지속적 취약점 스캐닝이 생성한 취약점은 스캐너 이름으로 GitLab SBoM Vulnerability Scanner를, 취약점 유형으로 Container Scanning을 사용합니다.

CI/CD 기반 보안 스캔과 달리 지속적 취약점 스캐닝은 CI/CD 파이프라인이 아니라 백그라운드 job(Sidekiq)을 통해 실행되며, 보안 보고서 아티팩트는 생성되지 않습니다.

사전 요구 사항#

지원되는 패키지 유형#

지속적 취약점 스캐닝은 다음 PURL 유형의 컴포넌트를 지원합니다.

  • apk
  • deb
  • rpm

알려진 제한 사항은 다음과 같습니다.

  • 선행 0 이 포함된 APK 버전은 지원되지 않습니다. 이 버전을 지원하기 위한 작업은 이슈 471509에서 추적합니다.
  • ^가 포함된 RPM 버전은 지원되지 않습니다. 이 버전을 지원하기 위한 작업은 이슈 459969에서 추적합니다.
  • Red Hat 배포판의 RPM 패키지는 지원되지 않습니다. 이 사용 사례를 지원하기 위한 작업은 에픽 12980에서 추적합니다.

CycloneDX SBOM 보고서 생성 방법#

CycloneDX SBOM 보고서를 사용하여 프로젝트 컴포넌트를 GitLab에 등록합니다.

CycloneDX 보고서는 다음을 준수해야 합니다.

GitLab은 GitLab과 호환되는 보고서를 생성할 수 있는 보안 분석기를 제공합니다.

지속적 취약점 스캐닝 켜기 또는 끄기#

히스토리
  • GitLab 19.0에서 cvs_per_scanner_type_settings라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
  • GitLab 19.2에서 일반 공개되었습니다. 기능 플래그 cvs_per_scanner_type_settings는 제거되었습니다.

지속적 취약점 스캐닝은 수집된 모든 CycloneDX SBOM 파일에 대해 기본적으로 실행됩니다. 프로젝트별로 이를 끌 수 있습니다. 꺼져 있는 동안에는 새 보안 어드바이저리가 수집되어도 이미지 의존성에 대한 취약점 레코드가 생성되지 않습니다.

사전 요구 사항:

  • 프로젝트에 대한 Maintainer, Owner 또는 Security Manager 권한이 있어야 합니다.

지속적 취약점 스캐닝을 켜거나 끄려면 다음 단계를 수행합니다.

  1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Secure > Security configuration을 선택합니다.
  3. Continuous Vulnerability Scanning for Container Scanning에서 토글을 켜거나 끕니다.

새로운 취약점 확인#

지속적 취약점 스캐닝이 탐지한 새 취약점은 취약점 보고서에서 확인할 수 있습니다. 다만 영향을 받는 SBOM 컴포넌트가 탐지된 파이프라인에는 나열되지 않습니다.

취약점은 보안 어드바이저리가 추가되거나 업데이트된 후에 생성됩니다. 코드베이스가 변경되지 않은 상태라면 해당 취약점이 프로젝트에 추가되기까지 몇 시간이 걸릴 수 있습니다. 지속적 취약점 스캐닝에는 최근 14일 이내에 게시된 어드바이저리만 고려됩니다.

취약점이 더 이상 탐지되지 않는 경우#

지속적 취약점 스캐닝은 새 어드바이저리가 게시되면 자동으로 취약점을 생성하지만, 프로젝트에 취약점이 더 이상 존재하지 않는 시점은 판단하지 못합니다. 이를 판단하려면 GitLab은 기본 브랜치에 대한 파이프라인에서 실행된 컨테이너 스캐닝 스캔과, 최신 정보로 생성된 보안 보고서 아티팩트를 여전히 필요로 합니다. 이 보고서가 처리될 때 일부 취약점이 더 이상 포함되어 있지 않으면, 지속적 취약점 스캐닝이 생성한 취약점이더라도 해당 상태로 표시됩니다.

Warning

레지스트리용 컨테이너 스캐닝으로 탐지된 취약점은 이 방법으로 해결할 수 없으며, 이미지에서 수정한 뒤에도 계속 표시됩니다. 레지스트리용 컨테이너 스캐닝은 취약점을 해결됨으로 표시하는 데 필요한 보안 보고서가 아니라 SBOM만 생성하기 때문입니다.

보안 어드바이저리#

지속적 취약점 스캐닝은 GitLab 이 관리하는 서비스인 패키지 메타데이터 데이터베이스(Package Metadata Database)를 사용합니다. 이 서비스는 라이선스 및 보안 어드바이저리 데이터를 수집하고, GitLab.com과 GitLab Self-Managed 인스턴스가 사용하는 업데이트를 정기적으로 게시합니다.

GitLab.com에서는 GitLab 이 동기화를 관리하며 모든 프로젝트에서 사용할 수 있습니다.

GitLab Self-Managed에서는 GitLab 인스턴스의 Admin 영역에서 동기화할 패키지 레지스트리 메타데이터를 선택할 수 있습니다.

데이터 소스#

보안 어드바이저리의 현재 데이터 소스는 다음과 같습니다.

취약점 데이터베이스에 기여하기#

취약점을 찾으려면 원시 데이터가 들어 있는 Aqua Security의 vuln-list 리포지터리를 검색할 수 있습니다. Trivy-DB에 기여할 수도 있습니다.

지속적 컨테이너 스캐닝

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

요약

컨테이너 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인을 실행하지 않고도 컴포넌트 이름과 버전을 최신 보안 어드바이저리의 정보와 비교하여 프로젝트 이미지 의존성의 보안 취약점을 탐지합니다. 지속적 취약점 스캐닝이 지원되는 패키지 유형의 컴포넌트를 포함한 모든 프로젝트에 대해 스캔을 트리거하면 새로운 취약점이 나타날 수 있습니다.

히스토리
  • 지속적 컨테이너 스캐닝은 GitLab 16.8에서 container_scanning_continuous_vulnerability_scans라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
  • 지속적 컨테이너 스캐닝은 GitLab 16.10에서 GitLab Self-Managed 및 GitLab Dedicated에서 활성화되었습니다.
  • GitLab 17.0에서 일반 공개되었습니다. 기능 플래그 container_scanning_continuous_vulnerability_scans는 제거되었습니다.

컨테이너 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인을 실행하지 않고도 컴포넌트 이름과 버전을 최신 보안 어드바이저리의 정보와 비교하여 프로젝트 이미지 의존성의 보안 취약점을 탐지합니다. CVS는 프로젝트가 사용하는 컴포넌트를 파악하기 위해 기본 브랜치에 저장된 CycloneDX SBOM 보고서를 사용합니다. 이 SBOM을 생성하려면 기본 브랜치에서 컨테이너 스캐닝 job 이 최소 한 번 실행되어야 합니다. 그 이후부터 CVS는 추가 파이프라인 실행 없이 해당 컴포넌트에 대해 새로 게시된 어드바이저리를 자동으로 탐지합니다. 이미지 콘텐츠가 변경되면 CVS가 갱신된 컴포넌트 집합을 평가할 수 있도록 기본 브랜치에서 새 파이프라인을 실행하여 SBOM을 갱신해야 합니다. 대부분의 프로젝트에서는 의존성 변경이 파이프라인을 이미 트리거하는 코드 변경을 수반하므로, 이 작업은 일반적인 워크플로의 일부로 처리됩니다.

지속적 취약점 스캐닝이 지원되는 패키지 유형의 컴포넌트를 포함한 모든 프로젝트에 대해 스캔을 트리거하면 새로운 취약점이 나타날 수 있습니다.

컨테이너 스캐닝을 위한 지속적 취약점 스캐닝이 생성한 취약점은 스캐너 이름으로 GitLab SBoM Vulnerability Scanner를, 취약점 유형으로 Container Scanning을 사용합니다.

CI/CD 기반 보안 스캔과 달리 지속적 취약점 스캐닝은 CI/CD 파이프라인이 아니라 백그라운드 job(Sidekiq)을 통해 실행되며, 보안 보고서 아티팩트는 생성되지 않습니다.

사전 요구 사항#

지원되는 패키지 유형#

지속적 취약점 스캐닝은 다음 PURL 유형의 컴포넌트를 지원합니다.

  • apk
  • deb
  • rpm

알려진 제한 사항은 다음과 같습니다.

  • 선행 0 이 포함된 APK 버전은 지원되지 않습니다. 이 버전을 지원하기 위한 작업은 이슈 471509에서 추적합니다.
  • ^가 포함된 RPM 버전은 지원되지 않습니다. 이 버전을 지원하기 위한 작업은 이슈 459969에서 추적합니다.
  • Red Hat 배포판의 RPM 패키지는 지원되지 않습니다. 이 사용 사례를 지원하기 위한 작업은 에픽 12980에서 추적합니다.

CycloneDX SBOM 보고서 생성 방법#

CycloneDX SBOM 보고서를 사용하여 프로젝트 컴포넌트를 GitLab에 등록합니다.

CycloneDX 보고서는 다음을 준수해야 합니다.

GitLab은 GitLab과 호환되는 보고서를 생성할 수 있는 보안 분석기를 제공합니다.

지속적 취약점 스캐닝 켜기 또는 끄기#

히스토리
  • GitLab 19.0에서 cvs_per_scanner_type_settings라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.
  • GitLab 19.2에서 일반 공개되었습니다. 기능 플래그 cvs_per_scanner_type_settings는 제거되었습니다.

지속적 취약점 스캐닝은 수집된 모든 CycloneDX SBOM 파일에 대해 기본적으로 실행됩니다. 프로젝트별로 이를 끌 수 있습니다. 꺼져 있는 동안에는 새 보안 어드바이저리가 수집되어도 이미지 의존성에 대한 취약점 레코드가 생성되지 않습니다.

사전 요구 사항:

  • 프로젝트에 대한 Maintainer, Owner 또는 Security Manager 권한이 있어야 합니다.

지속적 취약점 스캐닝을 켜거나 끄려면 다음 단계를 수행합니다.

  1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Secure > Security configuration을 선택합니다.
  3. Continuous Vulnerability Scanning for Container Scanning에서 토글을 켜거나 끕니다.

새로운 취약점 확인#

지속적 취약점 스캐닝이 탐지한 새 취약점은 취약점 보고서에서 확인할 수 있습니다. 다만 영향을 받는 SBOM 컴포넌트가 탐지된 파이프라인에는 나열되지 않습니다.

취약점은 보안 어드바이저리가 추가되거나 업데이트된 후에 생성됩니다. 코드베이스가 변경되지 않은 상태라면 해당 취약점이 프로젝트에 추가되기까지 몇 시간이 걸릴 수 있습니다. 지속적 취약점 스캐닝에는 최근 14일 이내에 게시된 어드바이저리만 고려됩니다.

취약점이 더 이상 탐지되지 않는 경우#

지속적 취약점 스캐닝은 새 어드바이저리가 게시되면 자동으로 취약점을 생성하지만, 프로젝트에 취약점이 더 이상 존재하지 않는 시점은 판단하지 못합니다. 이를 판단하려면 GitLab은 기본 브랜치에 대한 파이프라인에서 실행된 컨테이너 스캐닝 스캔과, 최신 정보로 생성된 보안 보고서 아티팩트를 여전히 필요로 합니다. 이 보고서가 처리될 때 일부 취약점이 더 이상 포함되어 있지 않으면, 지속적 취약점 스캐닝이 생성한 취약점이더라도 해당 상태로 표시됩니다.

Warning

레지스트리용 컨테이너 스캐닝으로 탐지된 취약점은 이 방법으로 해결할 수 없으며, 이미지에서 수정한 뒤에도 계속 표시됩니다. 레지스트리용 컨테이너 스캐닝은 취약점을 해결됨으로 표시하는 데 필요한 보안 보고서가 아니라 SBOM만 생성하기 때문입니다.

보안 어드바이저리#

지속적 취약점 스캐닝은 GitLab 이 관리하는 서비스인 패키지 메타데이터 데이터베이스(Package Metadata Database)를 사용합니다. 이 서비스는 라이선스 및 보안 어드바이저리 데이터를 수집하고, GitLab.com과 GitLab Self-Managed 인스턴스가 사용하는 업데이트를 정기적으로 게시합니다.

GitLab.com에서는 GitLab 이 동기화를 관리하며 모든 프로젝트에서 사용할 수 있습니다.

GitLab Self-Managed에서는 GitLab 인스턴스의 Admin 영역에서 동기화할 패키지 레지스트리 메타데이터를 선택할 수 있습니다.

데이터 소스#

보안 어드바이저리의 현재 데이터 소스는 다음과 같습니다.

취약점 데이터베이스에 기여하기#

취약점을 찾으려면 원시 데이터가 들어 있는 Aqua Security의 vuln-list 리포지터리를 검색할 수 있습니다. Trivy-DB에 기여할 수도 있습니다.