도커 컨테이너 보안 취약점 스캔 도구 Anchore
조대협 (http://bcho.tistory.com)
근래에 쿠버네티스를 로컬환경에서 이것저것 테스트하다보니, 클라우드에 있는 기능 보다 오픈 소스 기능을 많이 보게 되는데, 빌드 파이프라인을 보다가 재미있는 오픈소스를 하나 찾아서 정리해놓는다.
컨테이너 이미지에 대한 보안 문제
쿠버네티스와 같은 컨테이너 오케스트레이션 솔루션에서 가장 보안 취약이 있는 곳 중의 하나는 컨테이너 이미지 인데, 도커허브와 같이 널리 알려진 컨테이너 리파지토리에 저장되서 배포되는 이미지도 보안적으로 문제가 있는 이미지가 많다. 그래서, 가급적이면 벤더들에서 보안적으로 문제가 없도록 관리하는 베이스 이미지를 사용하는 것이 좋다. (구글에서 제공하는 도커 컨테이너 베이스 이미지 https://cloud.google.com/container-registry/docs/managed-base-images)
컨테이너 이미지 스캐닝 툴 (Anchore)
다음 방법으로는 컨테이너 이미지를 구울때마다 보안적인 문제가 없는지, 알려진 보안 취약점을 스캔해서 분석하는 방법인데, 이러한 도구를 vulnerability scaning 툴이라고 한다.
이런 툴중에 Anchore 라는 툴이 있는데, 상업 버전도 있지만 오픈 소스 버전이 있어서 손쉽게 사용이 가능하다. Anchore는 보안 CVE (Common Vulnerabilities and Exposures) 목록을 기반으로 해서 스캔하는데, CVE는 미정부에서 후원하는 National Cybersecurity FFRDC 에 의해서 관리된다.
이외에도 몇개의 보안 취약점 정보를 몇군데서 가지고 오는데 (https://anchore.freshdesk.com/support/solutions/articles/36000020579-feeds)
재미있는 것은 NPM과 루비젬에 대한 보안 취약점 피드도 가지고 온다는 점이다.
Linux Distributions
Alpine Linux
CentOS
Debian
Oracle Linux
Red Hat Enterprise Linux
Ubuntu
Software Package Repositories
RubyGems.org
NPMJS.org
NIST National Vulnerability Database (NVD)
간단하게 들여다 보기
설치 및 사용 방법은 공식 홈페이지를 참고하면 되고, https://anchore.freshdesk.com/support/solutions/articles/36000020729-install-with-docker-compose 에는 docker-compose를 이용해서 간단하게 설치 및 사용하는 방법이 나와 있다. 아래는 공식 홈페이지의 내용을 참고해서 설명한 내용이다.
컨테이너 이미지를 anchore에 추가한다.
다음 예제 명령은 dokcer
% docker-compose exec anchore-engine anchore-cli --u admin --p foobar image add docker.io/library/debian:7anchore는 등록된 이미지를 자동으로 스캔한다.
다음 명령어를 이용하면 스캔 상태를 모니터링 할 수 있다.
% docker-compose exec anchore-engine anchore-cli --u admin --p foobar image get docker.io/library/debian:7 | grep 'Analysis Status'스캔이 끝나면, 발견된 보안 취약점과 상세 내용을 확인할 수 있다.
% docker-compose exec anchore-engine anchore-cli --u admin --p foobar image vuln docker.io/library/debian:7 all
Vulnerability ID Package Severity Fix Vulnerability URL
CVE-2005-2541 tar-1.26+dfsg-0.1+deb7u1 Negligible None https://security-tracker.debian.org/tracker/CVE-2005-2541
CVE-2007-5686 login-1:4.1.5.1-1+deb7u1 Negligible None https://security-tracker.debian.org/tracker/CVE-2007-5686
CVE-2007-5686 passwd-1:4.1.5.1-1+deb7u1 Negligible None https://security-tracker.debian.org/tracker/CVE-2007-5686
CVE-2007-6755 libssl1.0.0-1.0.1t-1+deb7u4 Negligible None https://security-tracker.debian.org/tracker/CVE-2007-6755
...
...
...
여기서 CVE-XXX 식으로 나오는 것이 보안 취약점이며, 자세한 내용은 뒤에 나오는 링크에서 확인이 가능하다.
CI/CD 파이프라인 통합
실제 개발/운영 환경에서 사용하려면, 커맨드 라인 뿐만 아니라 CI/CD 빌드 파이프라인에 통합을 해야 하는데, Anchore는 젠킨스 플러그인으로 제공되서 빌드 파이프라인에 쉽게 통합이 된다.
아래와 같은 개념으로 젠킨스에서 이미지를 빌드한 후에, 쿠버네티스나 기타 컨테이너 솔루션에 배포전에 보안 취약점을 스캔할 수 있다.
<그림. Anchore를 젠킨스 빌드 파이프라인에 추가 한 그림 >
출처 : https://anchore.com/opensource/
아래는 Anchore를 젠킨스 플러그인으로 설치한후에, 컨테이너 보안 취약점을 스캔한 결과를 출력해준 화면이다.
국내에는 아직 많이 알려지지 않은것 같은데, 젠킨스와 통합해서 사용한다면 꽤나 좋은 효과를 볼 수 있지 않을까 한다.
'클라우드 컴퓨팅 & NoSQL > 도커 & 쿠버네티스' 카테고리의 다른 글
서버리스 오픈소스 - knative #1 소개 & Serving (0) | 2019.04.23 |
---|---|
[팁] 쿠버네티스 StatefulSet에서 Headless 서비스를 이용한 Pod discovery (1) | 2019.02.19 |
[팁] minikube에서 Loadbalancer type 서비스 테스트 하기 (0) | 2019.02.17 |
[팁] 우분투에서 minikube를 VM 없이 실행하기 (0) | 2019.02.17 |
쿠버네티스 #22 - StatefulSet을 이용한 상태유지 Pod (데이타베이스) 관리하기 1/2 (3) | 2019.02.14 |