Clair는 컨테이너 이미지의 구성요소를 분석하여 취약점을 보고해주는 애플리케이션입니다. 이러한 활동을 컨테이너 보안 스캐닝이라고 하며, 더 자세한 설명은 여기서 확인하실 수 있습니다.
Clair의 동작 방식
Clair는 Indexer
, Matcher
, Notifier
컴포넌트로 구성되며, 취약점 분석은 Indexing
과 Matching
순서로 진행됩니다.
-
Indexing
- 먼저 Clair의
Indexer
가 스캔 대상인 컨테이너 이미지를 분석하여 이미지에 포함된 패키지, 이미지의 Base 이미지, 이미지에서 사용되는 레파지토리 등의 정보를 얻어냅니다. - 이렇게 얻어낸 컨테이너 이미지 관련 정보(Clair 공식 문서에선
Manifest
라고 합니다.)는 DB에 저장되며, 해당 인덱싱에 대한 정보도IndexReport
라는 데이터 구조로 DB에 저장됩니다. IndexReport
는Matching
단계에서 취약점 분석에 쓰입니다.
- 먼저 Clair의
-
Matching
- Clair의
Matcher
가 DB에 저장된 IndexReport를 가져와 취약점 분석을 진행합니다. - 취약점 분석은 DB에 미리 저장되어있는 최신 취약점 데이터를 기반으로 진행됩니다.
Matcher
는 취약점 분석 후VulnerabilityReport
라는 취약점 보고서 객체를 생성합니다.- 취약점 보고서는 HTML 양식으로도 생성되어 웹 브라우저에서 조회 가능합니다.
- 또한
Matcher
는 주기적으로 최신 취약점 데이터를 DB에 업데이트하는 역할도 수행합니다.
- Clair의
-
Notifications
- Clair는 취약점 분석에 대한 알림 기능도 지원합니다.
- Clair의
Notifier
는Matcher
가 수행하는 DB의 최신 취약점 데이터 업데이트를 추적하고, 기존에Indexer
가 DB에 저장했던 컨테이너 이미지의Manifest
중 취약점 데이터 업데이트에 영향을 받는 것이 있으면 알려주는 역할을 수행합니다. Notifier
의 알림은 Webhook 등으로 받아볼 수 있습니다.
Clair의 활용 방안
- CI/CD에 Clair를 활용하면 서비스를 배포하기 전에 컨테이너 이미지를 스캔하여 보안 취약점을 사전에 최소화할 수 있습니다.
- Clair의
Mathcer
와Notifier
를 활용하여 최신 취약점 업데이트 및 알림을 팀내 전파하는 시스템을 구축하면, 개발자가 사전에 적절한 조치를 취할 수 있고 보안 이슈를 미리 예방할 수 있습니다.