Snyk 컨테이너별 CI/CD 전략
파이프라인에서 Snyk Container을 구현하는 가장 적절한 시기는 컨테이너 이미지가 빌드된 후인데, 즉, docker build
와 동등한 작업을 수행한 후, 이미지를 레지스트리에 푸시(docker push
)하거나 실행 중인 인프라에 배포하기(helm install
, kubectl apply
등) 전에 해당합니다.
일반적으로 컨테이너 빌드-테스트-배포 파이프라인을 실행하는 방법은 빌드 에이전트에서 Docker 데몬을 사용할 수 있는지 여부에 따라 다릅니다.
Docker 데몬을 사용할 수 있는 경우 파이프라인 실행
다음 상황이 존재하는 경우 Snyk이 도움을 줄 수 있습니다:
Jenkins와 같은 빌드 도구를 직접 설치된 Docker를 사용할 수 있는 호스트에서 실행 중인 경우.
Docker 소켓
[/var/run/docker.sock]
이 호스트에 바인드 마운트된 컨테이너 내에서 파이프라인 작업이 실행 중인 경우.Docker 내에서 Docker를 실행 중인 경우.
Snyk은 다음과 같은 도움을 제공할 수 있습니다:
snyk container test $IMAGE_NAME
를 실행할 때, 이미지를 로컬 데몬 저장소에서 찾고, 이미지가 없는 경우docker pull
의 동등 작업을 사용하여 이미지를 업스트림 레지스트리에서 다운로드합니다.레지스트리 인증에 대해 Snyk은 이미
docker login
과 같이 구성된 자격 증명을 사용합니다.명령줄에서
--file=Dockerfile
을 지정하여 이미지 취약점 결과와 이미지를 빌드한 Dockerfile을 연결하여 인라인 수정 안내 및 대체 베이스 이미지 제안을 받을 수 있습니다.
Docker 데몬을 사용할 수 없는 경우 파이프라인 실행
다음 상황이 존재하는 경우 Snyk이 도움을 줄 수 있습니다:
각 빌드 작업을 컨테이너화하지만 보안 및 성능 이유로 Docker 소켓을 마운트하지 않는 경우.
파이프라인 작업이 여러 호스트 또는 클러스터에 분산되어 있고 아티팩트가 중앙 볼륨이나 중간 레지스트리/객체 스토어를 통해 전달될 때.
OCI 호환 컨테이너 이미지만 사용하는 생태계에서 전용으로 작업하는 경우.
Snyk은 다음과 같은 도움을 제공할 수 있습니다:
snyk container test docker-archive:archive.tar
또는snyk container test oci-archive:archive.tar
중 하나를 실행하여 Docker 또는 OCI 형식의 tar 포맷의 컨테이너 이미지에 대한 Snyk 취약점 결과를 받을 수 있습니다. Docker 데몬에 의존하지 않고 작동합니다.tar 아카이브는 빌드 프로세스에서
docker save
와 동등한 작업을 사용하여 생성되고 공유 볼륨이나 객체 저장소에 저장됩니다. 빌드 에이전트 컨테이너에서 Snyk 이진 파일을 실행하면 다른 종속성이 필요하지 않습니다.
컨테이너 이미지 통합을 위한 권장 사항
CI 중 컨테이너 이미지와 통합하는 방법에 상관없이, 취약점 일부 렌더링을 위해
Snyk Open Source
(애플리케이션 SCA) 테스트와 분리된 빌드 단계로Snyk container
스캔을 실행하세요. 이를 통해 빌드 실패를 컨테이너/OS 레이어 또는 애플리케이션 레이어의 취약점으로 분리할 수 있습니다. 또한 더 쉽게 컨테이너화된 빌드 작업을 가능하게 합니다.빌드 작업에 대한 실패 상태를 사용자 정의하기 위해
--fail-on
,--severity-threshold
와 같은 CLI 플래그를 사용하세요. 더 고급 사용에 대해--json
을 사용하여 전체 취약점 보고서가 포함된 JSON 파일을 생성하고 JSON 데이터를 기반으로 자체 빌드 실패 상태를 설정할 수 있습니다.--exclude-base-image-vulns
를 전달하여 사용자 레이어에서 도입된 취약점만 보고하고, Dockerfile의FROM
라인에 지정된 베이스 이미지에서 나오는 취약점을 보고하지 않도록 합니다.snyk container test
후에snyk container monitor
를 실행하거나 플러그인 설정에서 Monitor 상자를 확인하여 Snyk UI 내에서 컨테이너의 재료 요약을 유지하고 매일 새 취약점을 지속적으로 모니터링하세요. 이는 새 릴리스를 프로덕션 환경에 푸시할 때 유용합니다.--project-name
을 사용하여 릴리스를 식별하는 고유 식별자를 지정하여 프로덕션 컨테이너가 빌드 프로세스에서 다른 컨테이너와 별도로 추적되도록 합니다.
Last updated