CloudNet@ 팀의 가시다님께서 Leading 하시는 PKOS 2기 Study 내용 요약
해당 Kubernetes Study 는 '24단계 실습으로 정복하는 쿠버네티스' 책을 기반으로 진행 중입니다.
이번 포스팅에서는 쿠버네티스 보안 취약점 점검 도구 중 오픈 소스인 Polaris 에 대해 알아보겠습니다.
1. Polaris
보안 체크리스트 뿐만 아니라 모범 사례 대비 현재 Yaml 파일의 부족한 점을 파악하여 제공하는 오픈소스 보안 점검 도구
Polaris 는 Kubescape 에 비해 좀 더 직관적인 해결 방안을 제공하며,
운영 중인 워크로드의 Yaml 파일을 분석하고 부족한 부분을 점검해줍니다.
또한 kubescape 는 온라인 대시보드를 제공해주지만, Polaris 는 자체 대시보드를 제공해주는 차이가 있습니다.
Polaris Page
1.1. Polaris Install
# Polaris Namespace 생성
kubectl create ns polaris
# Polaris Dashboard 타입을 LB 로 변경
cat <<EOT > polaris-values.yaml
dashboard:
replicas: 1
service:
type: LoadBalancer
EOT
# Helm 설치
helm repo add fairwinds-stable https://charts.fairwinds.com/stable
helm install polaris fairwinds-stable/polaris --namespace polaris --version 5.7.2 -f polaris-values.yaml
# Polaris 대시보드 접근
kubectl get svc -n polaris
- Score : 모범 사례 대비 전체 클러스터 구성 내역 점수, 높을수록 Good
- Passing/Warning/Dangerous Checks : 보안 위험도 등급
Namespace 를 구분하여 리소스를 확인할 수 있다.
배포된 리소스의 보안 점검 결과 확인 가능
점검 결과 옆의 '?' 버튼을 클릭하면 점검 항목에 대한 상세 페이지를 확인할 수 있습니다.
1.2. 모범 사례
Polaris Pod 는 모범 사례를 적용해서 생성됩니다.
# Polaris Pod Yaml 추출
kubectl get deployments.apps -n polaris polaris-dashboard -o yaml > polaris-pod.yaml
- imagePullPolicy : 이미지를 항상 리포지토리에서 가져오도록 설정
- resources. limits, requests : 리소스 자원 사용 보장 및 제한
- securityContext : 컨테이너, 파드의 권한 및 접근 제어
- allowPrivilegeEscalation : 컨테이너의 하위 프로세스가 상위 프로세스보다 많은 권한을 얻을 수 없게 설정
- capabilities : 호스트 커널 레벨 수정이 필요 시 root 권한으로 전체 커널을 수정하지 않고 특정 커널 권한만 부여 후 사용
- privileged : true인 경우 호스트의 모든 장치에 접근 권한 가짐
- readOnlyRootFilesystem : 컨테이너의 root 파일시스템에 읽기 전용
- runAsNonRoot : root 권한으로 컨테이너를 실행하지 않음
해당 yaml 파일의 설정을 참고하여 다른 애플리케이션 취약점을 손쉽게 변경할 수 있습니다.
2. 후기
Polaris 는 컨테이너 보안 모범 사례를 확인할 수 있고 자체 대시보드를 사용할 수 있는 점이 좋았다.
Polaris 를 kubescape 등과 같이 다른 보안 도구와 함께 사용한다면 더 좋은 시너지 효과가 날 수 있을 것 같다.