새소식

AWS/EKS

[PKOS Study 5주차] k8s Security - kubescape

  • -

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
 

What is Kubescape? | ARMO

Kubescape is an open-source Kubernetes security platform for your IDE, CI/CD pipelines, and clusters built for DevOps. Click here to learn more!

www.armosec.io

 

  • NSA/CISA 의 쿠버네티스 주요 보안 권고 사항
  1. 컨테이너의 root 사용자 권한 제거
  2. 컨테이너 내부 파일 시스템 쓰기 권한 제거 (불변 컨테이너 파일 시스템)
  3. 컨테이너의 불필요한 추가 특권(privilege) 제거
  4. 리소스 제한(limits) 설정
  5. 불필요한 외부 접속 제한을 위한 네트워크 정책(Network Policy) 적용
  6. 호스트 노드 보안 강화(SELinux 등 사용)

 

  • kubescape 의 적용 가능한 취약점 점검 리스트
  1. NSA 보안 체크리스트
  2. MITRE ATT&CK
  3. 자체 제공 추가 보안 프레임워크 등

 

1.1. kubescape Install

# Binary 설치
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash

 

 

즉시 명령어 사용 가능

kubescape

 

 

  • 주요 명령어
  1. download : 오프라인 상태에서 보안 취약점 확인 가능
  2. scan : 현재 클러스터 또는 yaml 파일의 보안 취약점 확인 가능
  3. 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

 

cloud.armosec.io

 

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
 

Prometheus Exporter

Kubescape is running as a microservice. As a result, you can set up a pod monitor for scanning and scraping the scanning results. Install kube-prometheus-stackBashhelm repo add prometheus-community https://prometheus-community.github.io/helm-chartshelm rep

hub.armosec.io

 

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 을 복사 & 붙여넣기
 

GitHub - dwertent/kubescape: kubescape is the first tool for testing if Kubernetes is deployed securely as defined in Kubernetes

kubescape is the first tool for testing if Kubernetes is deployed securely as defined in Kubernetes Hardening Guidance by to NSA and CISA (https://www.nsa.gov/News-Features/Feature-Stories/Article-...

github.com

 

  • kubescape 대시보드 구성

 

 

 


 

4. 후기

kubescape 는 보안 취약점 점검 도구이기 때문에, 조치 방법을 자세하게 알려주지는 않습니다.
다른 보안 툴과 함께 사용할 필요가 있을 것으로 보입니다.

 

kubescapePrometheus - Grafana 와 연동이 가능하여 보안 점검 결과를 시각화 할 수 있으며,
cronjob 등을 통해 주기적인 보안 점검 결과를 시각화할 수 있을 것으로 예상됩니다.

 

또한, CI/CD 도구 들과 연동이 되기 때문에 빌드 및 배포 단계에서 보안 점검을 자동화할 수 있어 활용도가 높을 것으로 예상됩니다.

 

 

Contents

포스팅 주소를 복사했습니다