InfoGrab Docs

컨테이너 스캐닝 문제 해결

요약

컨테이너 스캐닝을 사용할 때 다음과 같은 문제가 발생할 수 있습니다. 컨테이너 스캐닝 job이 수행하는 작업을 자세히 확인해야 할 때 상세 출력을 활성화합니다. 러너가 docker 실행기를 사용하고 NFS가 사용되는 경우 (예: /var/lib/docker가 NFS 마운트에 있는 경우) 컨테이너 스캐닝이 다음과 같은 오류로 실패할 수 있습니다:

컨테이너 스캐닝을 사용할 때 다음과 같은 문제가 발생할 수 있습니다.

상세 로깅 활성화#

컨테이너 스캐닝 job이 수행하는 작업을 자세히 확인해야 할 때 상세 출력을 활성화합니다. 자세한 내용은 디버그 수준 로깅을 참조하세요.

docker: Error response from daemon: failed to copy xattrs#

러너가 docker 실행기를 사용하고 NFS가 사용되는 경우 (예: /var/lib/docker가 NFS 마운트에 있는 경우) 컨테이너 스캐닝이 다음과 같은 오류로 실패할 수 있습니다:

docker: Error response from daemon: failed to copy xattrs: failed to set xattr "security.selinux" on /path/to/file: operation not supported.

이 오류는 현재 수정된 Docker의 버그 결과입니다. 오류를 방지하려면 러너가 사용하는 Docker 버전이 18.09.03 이상인지 확인하세요. 자세한 내용은 이슈 #10241을 참조하세요.

오류: gl-container-scanning-report.json: no matching files#

이에 대한 정보는 일반 애플리케이션 보안 문제 해결 섹션을 참조하세요.

오류: unexpected status code 401 Unauthorized: Not Authorized#

이 오류는 AWS ECR에서 이미지를 스캔할 때 AWS 리전이 구성되지 않은 경우 발생할 수 있습니다. 스캐너가 인증 토큰을 검색할 수 없습니다. SECURE_LOG_LEVELdebug로 설정하면 다음과 같은 로그 메시지가 표시됩니다:

[35mDEBUG[0m failed to get authorization token: MissingRegion: could not find region configuration

이를 해결하려면 CI/CD 변수에 AWS_DEFAULT_REGION을 추가합니다:

variables:
  AWS_DEFAULT_REGION: 

오류: unable to open a file: open /home/gitlab/.cache/trivy/ee/db/metadata.json#

압축된 Trivy 데이터베이스는 컨테이너의 /tmp 폴더에 저장되며 런타임에 /home/gitlab/.cache/trivy/{ee|ce}/db에 추출됩니다. 이 오류는 러너 구성에서 /tmp 디렉토리에 대한 볼륨 마운트가 있는 경우 발생할 수 있습니다.

이 문제를 해결하려면 /tmp 폴더를 바인딩하는 대신 /tmp에 있는 특정 파일이나 폴더(예: /tmp/myfile.txt)를 바인딩합니다.

오류: context deadline exceeded#

이 오류는 타임아웃이 발생했음을 의미합니다. 해결하려면 충분한 긴 지속 시간의 TRIVY_TIMEOUT 환경 변수를 container_scanning job에 추가합니다.

오래된 이미지 기반 이미지에서 취약점이 탐지되지 않음#

Trivy는 더 이상 업데이트를 받지 않는 운영 체제 이미지는 스캔하지 않습니다.

이를 UI에서 표시하도록 하는 것은 이슈 433325에서 제안되었습니다.

예상 취약점이 탐지되지 않음#

Trivy는 기본적으로 언어 특화 결과를 보고하지 않으므로 이미지에 취약한 운영 체제 종속성이 없는 경우 빈 보고서가 생성될 수 있습니다. 언어 특화 결과를 활성화하려면 연결된 문서의 단계를 따르고 스캔을 다시 실행합니다.

경고: vulnerability database was built X days ago (max allowed age is Y days)#

다음과 같은 오류 메시지가 표시될 수 있습니다:

1 error occurred: * the vulnerability database was built 6 days ago (max allowed age is 5 days)

컨테이너 스캐닝 이미지가 5일 이상 된 경우 컨테이너 스캐닝이 실패합니다. GitLab은 매일 이미지를 업데이트하지만 예를 들어 오프라인 환경에서 이미지 복사본을 사용하는 경우 오래될 수 있습니다. 현재 이미지는 이미지에 저장된 Trivy 데이터베이스가 최신 상태인지 확인합니다.

이 문제를 해결하려면 컨테이너 스캐닝 이미지를 업데이트하세요. 자세한 내용은 로컬 컨테이너 이미지 업데이트를 참조하세요.

오류: Unknown scheme in CS_IMAGE. Allowed schemes: docker, archive#

CS_IMAGE 환경 변수가 잘못되거나 누락된 URI 스키마로 설정된 경우 이 오류가 발생할 수 있습니다.

이 문제는 이미지 참조가 지원되는 스키마 중 하나를 사용하지 않을 때 발생합니다. 스키마는 레지스트리의 컨테이너 이미지에는 docker:// 스키마이거나, 로컬 tar 아카이브 파일에는 archive:// 스키마여야 합니다.

표준 컨테이너 이미지를 스캔하는 경우 스키마를 생략하고 이미지 이름만 사용할 수 있습니다(예: myapp:latest 또는 registry.example.com/myapp:latest). 분석기가 기본적으로 Docker 스키마를 사용하기 때문입니다.

CS_IMAGE 변수가 올바르게 설정되었는지 확인하고 오타나 지원되지 않는 접두사가 포함되지 않았는지 확인합니다.

컨테이너 스캐닝 문제 해결

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

컨테이너 스캐닝을 사용할 때 다음과 같은 문제가 발생할 수 있습니다. 컨테이너 스캐닝 job이 수행하는 작업을 자세히 확인해야 할 때 상세 출력을 활성화합니다. 러너가 docker 실행기를 사용하고 NFS가 사용되는 경우 (예: /var/lib/docker가 NFS 마운트에 있는 경우) 컨테이너 스캐닝이 다음과 같은 오류로 실패할 수 있습니다:

컨테이너 스캐닝을 사용할 때 다음과 같은 문제가 발생할 수 있습니다.

상세 로깅 활성화#

컨테이너 스캐닝 job이 수행하는 작업을 자세히 확인해야 할 때 상세 출력을 활성화합니다. 자세한 내용은 디버그 수준 로깅을 참조하세요.

docker: Error response from daemon: failed to copy xattrs#

러너가 docker 실행기를 사용하고 NFS가 사용되는 경우 (예: /var/lib/docker가 NFS 마운트에 있는 경우) 컨테이너 스캐닝이 다음과 같은 오류로 실패할 수 있습니다:

docker: Error response from daemon: failed to copy xattrs: failed to set xattr "security.selinux" on /path/to/file: operation not supported.

이 오류는 현재 수정된 Docker의 버그 결과입니다. 오류를 방지하려면 러너가 사용하는 Docker 버전이 18.09.03 이상인지 확인하세요. 자세한 내용은 이슈 #10241을 참조하세요.

오류: gl-container-scanning-report.json: no matching files#

이에 대한 정보는 일반 애플리케이션 보안 문제 해결 섹션을 참조하세요.

오류: unexpected status code 401 Unauthorized: Not Authorized#

이 오류는 AWS ECR에서 이미지를 스캔할 때 AWS 리전이 구성되지 않은 경우 발생할 수 있습니다. 스캐너가 인증 토큰을 검색할 수 없습니다. SECURE_LOG_LEVELdebug로 설정하면 다음과 같은 로그 메시지가 표시됩니다:

[35mDEBUG[0m failed to get authorization token: MissingRegion: could not find region configuration

이를 해결하려면 CI/CD 변수에 AWS_DEFAULT_REGION을 추가합니다:

variables:
  AWS_DEFAULT_REGION: 

오류: unable to open a file: open /home/gitlab/.cache/trivy/ee/db/metadata.json#

압축된 Trivy 데이터베이스는 컨테이너의 /tmp 폴더에 저장되며 런타임에 /home/gitlab/.cache/trivy/{ee|ce}/db에 추출됩니다. 이 오류는 러너 구성에서 /tmp 디렉토리에 대한 볼륨 마운트가 있는 경우 발생할 수 있습니다.

이 문제를 해결하려면 /tmp 폴더를 바인딩하는 대신 /tmp에 있는 특정 파일이나 폴더(예: /tmp/myfile.txt)를 바인딩합니다.

오류: context deadline exceeded#

이 오류는 타임아웃이 발생했음을 의미합니다. 해결하려면 충분한 긴 지속 시간의 TRIVY_TIMEOUT 환경 변수를 container_scanning job에 추가합니다.

오래된 이미지 기반 이미지에서 취약점이 탐지되지 않음#

Trivy는 더 이상 업데이트를 받지 않는 운영 체제 이미지는 스캔하지 않습니다.

이를 UI에서 표시하도록 하는 것은 이슈 433325에서 제안되었습니다.

예상 취약점이 탐지되지 않음#

Trivy는 기본적으로 언어 특화 결과를 보고하지 않으므로 이미지에 취약한 운영 체제 종속성이 없는 경우 빈 보고서가 생성될 수 있습니다. 언어 특화 결과를 활성화하려면 연결된 문서의 단계를 따르고 스캔을 다시 실행합니다.

경고: vulnerability database was built X days ago (max allowed age is Y days)#

다음과 같은 오류 메시지가 표시될 수 있습니다:

1 error occurred: * the vulnerability database was built 6 days ago (max allowed age is 5 days)

컨테이너 스캐닝 이미지가 5일 이상 된 경우 컨테이너 스캐닝이 실패합니다. GitLab은 매일 이미지를 업데이트하지만 예를 들어 오프라인 환경에서 이미지 복사본을 사용하는 경우 오래될 수 있습니다. 현재 이미지는 이미지에 저장된 Trivy 데이터베이스가 최신 상태인지 확인합니다.

이 문제를 해결하려면 컨테이너 스캐닝 이미지를 업데이트하세요. 자세한 내용은 로컬 컨테이너 이미지 업데이트를 참조하세요.

오류: Unknown scheme in CS_IMAGE. Allowed schemes: docker, archive#

CS_IMAGE 환경 변수가 잘못되거나 누락된 URI 스키마로 설정된 경우 이 오류가 발생할 수 있습니다.

이 문제는 이미지 참조가 지원되는 스키마 중 하나를 사용하지 않을 때 발생합니다. 스키마는 레지스트리의 컨테이너 이미지에는 docker:// 스키마이거나, 로컬 tar 아카이브 파일에는 archive:// 스키마여야 합니다.

표준 컨테이너 이미지를 스캔하는 경우 스키마를 생략하고 이미지 이름만 사용할 수 있습니다(예: myapp:latest 또는 registry.example.com/myapp:latest). 분석기가 기본적으로 Docker 스키마를 사용하기 때문입니다.

CS_IMAGE 변수가 올바르게 설정되었는지 확인하고 오타나 지원되지 않는 접두사가 포함되지 않았는지 확인합니다.