취약점 관리
Apollo는 제품 릴리스(Product Release)에 포함된 아티팩트를 검사하고, 조치가 필요한 취약점이 있는 릴리스를 자동으로 회수할 수 있습니다. 취약점 검사는 Trivy를, 바이러스 검사는 ClamAV를 지원합니다. 개발팀은 영향을 받는 패키지와 배포 개체를 확인하여 수정 릴리스를 만들고, 보안 검토자는 수정 기한과 예외 허용 여부를 관리합니다.
취약점 관리는 기본으로 활성화되지 않는 고급 기능입니다. 사용할 허브(Hub)에서 기능을 활성화하려면 Palantir 담당자에게 요청해야 합니다.
검사 대상과 주기
새 릴리스를 생성하면 Apollo는 제품 매니페스트에 선언된 각 컨테이너를 검사합니다. apollo-cli product-release create를 사용하면 차트의 기본 구성에 선언된 컨테이너 이미지가 매니페스트에 추가됩니다. 이미지 위치에는 레지스트리 전체 주소와 버전 태그가 필요합니다. 예를 들어 Docker Hub의 PostgreSQL 이미지는 docker.io/library/postgres:16처럼 지정합니다.
검사는 다음 시점에 실행됩니다.
- 새 릴리스를 생성했을 때
- 최신 릴리스와 배포 개체(Entity)에 설치된 릴리스를 정기적으로 재검사할 때. 기본 주기는 하루이며 변경할 수 있습니다.
이미지를 게시한 뒤 새로운 CVE가 공개될 수 있으므로, 빌드 때 통과한 릴리스도 이후 검사에서 취약한 것으로 판정될 수 있습니다. 릴리스 아티팩트는 변경 불가능한 대상으로 취급합니다. 수정한 이미지는 새 릴리스로 게시합니다.
위험 판단에 사용하는 정보
| 지표 | 의미 |
|---|---|
| CVSS | 취약점의 심각도입니다. Apollo는 CVSS v3.x를 사용하며 None, Low, Medium, High, Critical로 구분합니다. |
| EPSS | 향후 30일 안에 취약점이 악용될 확률을 추정합니다. |
| Known Exploit | 실제 악용 사례가 확인된 취약점을 기록한 미국 정부의 카탈로그 정보입니다. |
이 정보로 개별 CVE의 위험을 판단할 수 있습니다. CVE 회수 릴리스 업그레이드에 사용하는 릴리스 위험 점수는 활성 CVE의 심각도와 누적 영향을 함께 반영하는 별도 값입니다.
활성화 준비
- Palantir 담당자에게 컨테이너 레지스트리 도메인, 컨테이너를 가져올 수 있는 읽기 전용 인증 정보, 바이러스 검사 사용 여부를 전달합니다. 인증 정보는 조직에서 승인한 안전한 전달 경로를 사용합니다.
- Apollo 사이드바에서 Settings & Configuration을 열고 Vulnerability suppressions와 Vulnerability SLA settings의 권한을 설정합니다. 리소스별 역할 설정은 권한 관리를 참고합니다.
- 레지스트리가 방화벽 뒤에 있으면 Apollo의 외부 통신 IP를 허용 목록에 추가해야 합니다.
운영 흐름
취약점 검사에서 발견 사항과 영향을 받는 배포 개체를 확인하고, 수정 릴리스를 게시합니다. 즉시 제거할 수 없거나 오탐으로 확인한 발견 사항에는 취약점 억제를 요청할 수 있습니다. 패키지의 현재 및 향후 발견 사항을 조건에 따라 함께 다루려면 패키지 기반 억제를 사용합니다.
승격 조건에 보안 정보 추가를 사용하면 검사를 마친 릴리스나 활성 취약점이 없는 릴리스만 지정 채널에 진입하게 할 수 있습니다. 공통 운영체제 계층의 발견 사항은 기본 이미지 취약점 관리에서 검토합니다. 의존성 축소와 배포된 소프트웨어의 수정까지 포함한 운영 원칙은 취약점 수정에 설명되어 있습니다.