CloudNet@ 팀의 가시다님께서 Leading 하시는 PKOS 2기 Study 내용 요약
해당 Kubernetes Study 는 '24단계 실습으로 정복하는 쿠버네티스' 책을 기반으로 진행 중입니다.
이번 포스팅에서는 쿠버네티스 보안 취약점 점검 도구 중 오픈 소스인 kubescape 에 대해 알아보겠습니다.
1. kubescape
미국 NSA/CISA 에서 발행한 쿠버네티스 보안 체크리스트를 기준으로 클러스터의 취약점을 점검하고 대시보드 형태로 리포트 해주는 오픈 소스 도구
- NSA : National Security Agency
- CISA : Cybersecurity and Infrastructure Security Agency
ARMO - kubescape page
- NSA/CISA 의 쿠버네티스 주요 보안 권고 사항
- 컨테이너의 root 사용자 권한 제거
- 컨테이너 내부 파일 시스템 쓰기 권한 제거 (불변 컨테이너 파일 시스템)
- 컨테이너의 불필요한 추가 특권(privilege) 제거
- 리소스 제한(limits) 설정
- 불필요한 외부 접속 제한을 위한 네트워크 정책(Network Policy) 적용
- 호스트 노드 보안 강화(SELinux 등 사용)
- kubescape 의 적용 가능한 취약점 점검 리스트
- NSA 보안 체크리스트
- MITRE ATT&CK
- 자체 제공 추가 보안 프레임워크 등
1.1. kubescape Install
# Binary 설치
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
즉시 명령어 사용 가능
kubescape
- download : 오프라인 상태에서 보안 취약점 확인 가능
- scan : 현재 클러스터 또는 yaml 파일의 보안 취약점 확인 가능
- submit : ARMO의 클라우드 서비스를 이용해 온라인에서 현재 취약점에 대한 개선 방안, 점검 히스토리 등 확인 가능
보안 툴은 항상 최신 버전을 사용하는 것이 권장됩니다.
kubescape version
1.2. kubescape 를 통한 취약점 검사
kube-system 의 취약점을 'NSA 보안 체크리스트'를 확인하여 점검
kubescape scan framework nsa -e kube-system
1.3. 보안 framework 를 다운받아 점검
앞서 kubescape 는 여러가지 취약점 점검 리스트 사용할 수 있다고 했습니다.
이번에는 여러 점검 리스트를 클러스터에 다운로드 받아 사용해보도록 하겠습니다.
# 보안 프레임워크 다운로드
kubescape download artifacts
# 설치된 프레임워크 리스트
kubescape list frameworks --format json | jq '.[]'
# 다운받은 프레임워크로 클러스터 점검
kubescape scan --enable-host-scan --verbose
- 굉장히 많은 체크리스트가 점검되는 것을 알 수 있습니다.
주의사항
kubescape 는 점검 시 Daemonset 형태로 Pod 가 동작했다가 점검 종료 후 삭제됩니다.
때문에, k8s 클러스터의 Pod 개수 제한에 걸린다면 점검이 제대로 동작하지 않을 수 있으니 주의바랍니다.
2. Kubescape Dashboard 활용
2.1. kubescape SaaS 가입
kubescape SaaS 서비스를 사용하기 위해서 helm 설치 시 kubescape 의 AccountID 가 필요합니다.
ARMO의 Kubescape SaaS 페이지
Kubescape Cost 정책
- 로그인 시 출력되는 명령어를 입력하여 Helm 설치를 진행합니다.
# kubescape helm 설치
helm repo add kubescape https://kubescape.github.io/helm-charts/ ;
helm repo update ;
helm upgrade \
--install kubescape kubescape/kubescape-cloud-operator \
-n kubescape \
--create-namespace \
--set clusterName=`kubectl config current-context` \
--set account=<ARMO_ACCOUNT_ID>
로그인 후에 진행한 Scan 에 대해서는 웹사이트에서 확인 가능합니다.
3. Prometheus - Grafana - kubescape 연동
kubescape 는 Prometheus Exporter 를 제공하고 있기에 Prometheus 와 연동이 가능합니다.
이번 포스팅에서는 Prometheus Stack 설치는 생략하겠습니다.
kubescape Intergrations
3.1. kubescape Helm Install
Prometheus와 연동하기 위해 앞서 생성했던 Helm 을 업데이트 하거나 설치합니다.
이 때, kubescape SaaS 서비스를 사용할 지 말지에 따라 설치 옵션이 변경되어야 합니다.
Kubescape SaaS 서비스 사용 시
helm upgrade \
--install kubescape kubescape/kubescape-cloud-operator \
-n kubescape \
--create-namespace \
--set clusterName=`kubectl config current-context` \
--set kubescape.serviceMonitor.enabled=true \
--set account=<ARMO_ACCOUNT_ID> # SaaS 서비스의 AccountID 입력
Kubescape SaaS 서비스 미사용 시
# kubescape helm 업데이트
helm upgrade \
--install kubescape kubescape/kubescape-cloud-operator \
-n kubescape \
--create-namespace \
--set clusterName=`kubectl config current-context` \
--set kubescape.serviceMonitor.enabled=true \
--set kubescape.submit=false # SaaS 서비스 미사용 옵션, kubescape submit 비활성화
3.2. Grafana Dashboard 생성
Grafana UI - Import Dashboard
- kubescape 에서 제공하는 Grafana Dashboard JSON 을 복사 & 붙여넣기
4. 후기
kubescape 는 보안 취약점 점검 도구이기 때문에, 조치 방법을 자세하게 알려주지는 않습니다.
다른 보안 툴과 함께 사용할 필요가 있을 것으로 보입니다.
kubescape 는 Prometheus - Grafana 와 연동이 가능하여 보안 점검 결과를 시각화 할 수 있으며,
cronjob 등을 통해 주기적인 보안 점검 결과를 시각화할 수 있을 것으로 예상됩니다.
또한, CI/CD 도구 들과 연동이 되기 때문에 빌드 및 배포 단계에서 보안 점검을 자동화할 수 있어 활용도가 높을 것으로 예상됩니다.