악성 코드 스캔
악성 코드 스캔 (Malware scanning)
DHI 파이프라인이 이미지에서 바이러스와 악성 코드를 어떻게 스캔하고, 그 결과를 서명된 증명으로 확인하는지 알아볼게요.
출처: 문서
본문
Docker Hardened Image(DHI) 파이프라인은 빌드 과정의 일부로 바이러스와 악성 코드를 스캔해요. 스캔 결과는 서명된 증명으로 내장되어, 독립적으로 검색하고 검증할 수 있어요.
동작 방식 (How it works)
Docker는 오픈소스 안티바이러스 엔진인 ClamAV를 사용해 각 이미지의 모든 레이어를 스캔해요. 스캔은 빌드 과정 중 자동으로 실행되며, 아카이브 안의 파일을 포함해 이미지의 모든 파일을 알려진 바이러스·악성 코드 시그니처에 대해 검사해요.
스캔 결과는 이미지에 첨부된 서명된 증명으로 게시돼요. 증명에는 스캔된 파일 수, 바이러스 시그니처 데이터베이스 버전, 감염된 파일 감지 여부를 포함한 전체 ClamAV 스캔 보고서가 들어 있어요.
악성 코드 스캔 증명 보기 (View the malware scan attestation)
Docker Scout CLI로 악성 코드 스캔 증명을 검색할 수 있어요.
-
docker scout attest get명령을 바이러스 스캔 predicate 유형과 함께 사용하세요:$ docker scout attest get \ --predicate-type https://scout.docker.com/virus/v0.1 \ --predicate \ dhi.io/<image>:<tag>[!NOTE] 이미지가 로컬 기기에 있으면 이미지 이름에
registry://를 붙여야 해요. 예:dhi.io/python대신registry://dhi.io/python을 사용.예를 들어:
$ docker scout attest get \ --predicate-type https://scout.docker.com/virus/v0.1 \ --predicate \ dhi.io/python:3.13출력은 사용된 스캐너와 base64 인코딩된 스캔 보고서를 포함한 JSON 객체예요:
{ "scanner": { "report": "<base64-encoded ClamAV report>", "uri": "clamav/clamav:stable" } }보고서를 디코딩하면 전체 ClamAV 출력이 나오고 스캔 요약으로 끝나요:
----------- SCAN SUMMARY ----------- Known viruses: 3627833 Engine version: 1.5.2 Scanned directories: 4 Scanned files: 21 Infected files: 0 Data scanned: 44.90 MiB Data read: 23.88 MiB (ratio 1.88:1) Time: 11.473 sec (0 m 11 s) Start Date: 2026:04:12 02:36:19 End Date: 2026:04:12 02:36:30 -
증명 서명을 검증하세요. 증명이 진짜이고 Docker가 서명했는지 확인하려면:
$ docker scout attest get \ --predicate-type https://scout.docker.com/virus/v0.1 \ --verify \ dhi.io/<image>:<tag> --platform <platform>증명이 유효하면 Docker Scout가 서명을 확인하고 매칭되는
cosign verify명령을 보여줘요.
SBOM이나 테스트 결과 같은 다른 증명을 보려면 이미지 검증을 참고하세요.