Clair는 컨테이너 이미지의 구성요소를 분석하여 취약점을 보고해주는 애플리케이션입니다. 이러한 활동을 컨테이너 보안 스캐닝이라고 하며, 더 자세한 설명은 여기서 확인하실 수 있습니다.

Clair의 동작 방식

ClairIndexer, Matcher, Notifier 컴포넌트로 구성되며, 취약점 분석은 IndexingMatching 순서로 진행됩니다.

  • Indexing

    • 먼저 Clair의 Indexer가 스캔 대상인 컨테이너 이미지를 분석하여 이미지에 포함된 패키지, 이미지의 Base 이미지, 이미지에서 사용되는 레파지토리 등의 정보를 얻어냅니다.
    • 이렇게 얻어낸 컨테이너 이미지 관련 정보(Clair 공식 문서에선 Manifest라고 합니다.)는 DB에 저장되며, 해당 인덱싱에 대한 정보도 IndexReport라는 데이터 구조로 DB에 저장됩니다.
    • IndexReportMatching 단계에서 취약점 분석에 쓰입니다.
  • Matching

    • Clair의 MatcherDB에 저장된 IndexReport를 가져와 취약점 분석을 진행합니다.
    • 취약점 분석은 DB에 미리 저장되어있는 최신 취약점 데이터를 기반으로 진행됩니다.
    • Matcher취약점 분석 후 VulnerabilityReport라는 취약점 보고서 객체를 생성합니다.
    • 취약점 보고서는 HTML 양식으로도 생성되어 웹 브라우저에서 조회 가능합니다.
    • 또한 Matcher주기적으로 최신 취약점 데이터를 DB에 업데이트하는 역할도 수행합니다.
  • Notifications

    • Clair는 취약점 분석에 대한 알림 기능도 지원합니다.
    • Clair의 NotifierMatcher가 수행하는 DB의 최신 취약점 데이터 업데이트를 추적하고, 기존에 Indexer가 DB에 저장했던 컨테이너 이미지의 Manifest취약점 데이터 업데이트에 영향을 받는 것이 있으면 알려주는 역할을 수행합니다.
    • Notifier의 알림은 Webhook 등으로 받아볼 수 있습니다.

Clair의 활용 방안

  • CI/CD에 Clair를 활용하면 서비스를 배포하기 전에 컨테이너 이미지를 스캔하여 보안 취약점을 사전에 최소화할 수 있습니다.
  • Clair의 MathcerNotifier를 활용하여 최신 취약점 업데이트 및 알림을 팀내 전파하는 시스템을 구축하면, 개발자가 사전에 적절한 조치를 취할 수 있고 보안 이슈를 미리 예방할 수 있습니다.

References