보안 스캔
최종 수정: 2026. 3. 30.
보안 스캔
Skuber+ Client는 Trivy와 Kubescape 듀얼 스캐너를 내장하여 클러스터의 보안 취약점과 컴플라이언스를 분석합니다. 별도의 설치 없이 앱 내에서 바로 스캔할 수 있습니다.
접근 방법
사이드바에서 Security 선택
스캐너 개요
Skuber+ Client는 두 가지 보안 스캐너를 제공합니다:
| 스캐너 | 분석 대상 | 주요 결과 |
|---|---|---|
| Trivy | 컨테이너 이미지 | CVE 취약점 (Critical/High/Medium/Low) |
| Kubescape | Kubernetes 설정 | 보안 컴플라이언스, RBAC 리스크, 네트워크 정책 |
두 스캐너는 서로 보완적입니다:
- Trivy: 컨테이너 이미지에 포함된 패키지의 알려진 취약점(CVE)을 검출
- Kubescape: Kubernetes 리소스의 보안 설정 미비(Misconfiguration)와 RBAC 과다 권한을 분석
스캔 시작
- Security 화면에서 Scan 버튼 클릭
- 스캔 모드 선택 (All / Trivy only / Kubescape only)
- 진행률이 0~100%로 표시됩니다
- 각 스캐너 완료 시점에 결과가 순차적으로 표시됩니다
스캔 취소
스캔 진행 중 Cancel 버튼을 클릭하면 즉시 중단됩니다. 부분적으로 완료된 스캐너의 결과는 유지됩니다.
타임아웃 & 재시도
- 기본 타임아웃: 5분 (300초)
- 일부 네임스페이스가 타임아웃되면 UI에 타임아웃된 네임스페이스가 표시됩니다
- Retry 버튼으로 타임아웃된 네임스페이스만 재스캔 가능
- 재시도 시 타임아웃이 자동으로 2배로 연장됩니다
- 재시도 결과는 기존 결과와 병합됩니다
스캔 결과
Findings 타입
스캔 결과는 4가지 타입의 Findings로 분류됩니다:
1. CVE (이미지 취약점)
Trivy가 검출하는 컨테이너 이미지의 알려진 취약점입니다.
| 필드 | 설명 |
|---|---|
| CVE ID | 취약점 식별자 (예: CVE-2024-1234) |
| 심각도 | Critical / High / Medium / Low / Unknown |
| 패키지명 | 영향받는 패키지 |
| 설치 버전 | 현재 설치된 버전 |
| 수정 버전 | 취약점이 해결된 버전 (있는 경우) |
| CVSS 점수 | 0~10 (높을수록 위험) |
| 리소스 | 해당 이미지를 사용하는 K8s 리소스 (kind, name, namespace) |
2. Misconfiguration (설정 미비)
Kubescape가 검출하는 보안 모범 사례 위반입니다.
| 필드 | 설명 |
|---|---|
| 체크 ID | 컨트롤 식별자 (예: C-0013) |
| 카테고리 | Pod Security, Network 등 |
| 영향 필드 | 문제가 있는 spec 경로 |
| 수정 제안 | 권장 수정 경로 및 값 |
| 리소스 | 해당 K8s 리소스 |
주요 체크 항목 예시:
- Non-root 컨테이너 실행 여부 (C-0013)
- 읽기 전용 파일시스템 설정 (C-0017)
- 리소스 제한(limits/requests) 설정 (C-0009)
- Readiness/Liveness 프로브 설정 (C-0018, C-0056)
- Privileged 모드 사용 여부 (C-0057)
- 네트워크 정책 존재 여부 (C-0260)
3. RBAC (권한 리스크)
Kubescape가 검출하는 과다 RBAC 권한입니다.
| 필드 | 설명 |
|---|---|
| 주체 | 위험 권한을 가진 user/group/serviceaccount |
| 위험 권한 | 부여된 위험한 permissions |
| 리소스 | 관련 Role/ClusterRole |
주요 체크 항목:
- cluster-admin 역할 남용 (C-0185)
- Secrets 접근 권한 (C-0186)
- 와일드카드(*) 권한 사용 (C-0187)
- 불필요한 Pod 생성 권한 (C-0188)
- system:masters 그룹 사용 (C-0246)
4. Network Policy (네트워크 정책)
네트워크 정책 미비로 인한 리스크입니다.
- 네트워크 정책이 없는 네임스페이스 (C-0206)
- Ingress/Egress 미차단 Pod (C-0030)
- 외부 노출 워크로드 (C-0256)
심각도 분류
| 심각도 | 의미 | 권장 조치 |
|---|---|---|
| 🔴 Critical | 즉시 악용 가능한 치명적 취약점 | 즉시 패치 |
| 🟠 High | 높은 위험의 취약점 | 가능한 빨리 패치 |
| 🟡 Medium | 중간 위험 | 계획된 유지보수 시 패치 |
| 🔵 Low | 낮은 위험 | 참고용 |
| ⚪ Unknown | 심각도 미분류 | 개별 확인 필요 |
Findings 테이블
스캔 결과는 테이블 형태로 표시됩니다:
- 필터링: 심각도, 타입(CVE/Misconfiguration/RBAC), 스캐너, 네임스페이스별 필터
- 정렬: 심각도, 리소스 이름, CVE ID 등으로 정렬
- 상세 보기: 항목 클릭 시 상세 정보 + 조치 가이드 표시
- 외부 참조: CVE 링크, Kubescape 컨트롤 문서 링크 제공
클러스터별 스캔 상태
각 클러스터는 독립된 스캔 상태를 유지합니다.
스캔 상태
| 상태 | 설명 |
|---|---|
| Idle | 스캔 대기 중 (스캔 전 또는 완료 후) |
| Scanning | 스캔 진행 중 |
| Complete | 스캔 완료 |
| Error | 스캔 중 오류 발생 |
클러스터 전환
- 클러스터를 전환하면 해당 클러스터의 스캔 결과가 자동으로 표시됩니다
- 다른 클러스터에서 실행 중인 스캔에는 영향을 주지 않습니다
- 각 클러스터의 마지막 스캔 시간과 상태가 개별적으로 관리됩니다
스캔 캐시
스캔 결과는 로컬에 자동 캐시됩니다:
- 자동 저장: 스캔 완료 시 결과가 디스크에 저장
- 앱 재시작 시 복원: 앱을 다시 시작해도 캐시된 결과 유지
- 멀티 클러스터 캐시: 여러 클러스터의 캐시를 동시에 복원
- TTL: 기본 7일 (7일 이상 된 캐시는 자동 만료)
- 캐시 삭제: 특정 클러스터의 캐시를 수동 삭제 가능
## 문제 해결
| 증상 | 원인 | 해결 |
|------|------|------|
| 스캔 시작 안 됨 | 클러스터 미연결 | 클러스터 연결 상태 확인 |
| Trivy 결과 없음 | 이미지 pull 권한 부족 | 레지스트리 접근 권한 확인 |
| 특정 네임스페이스 타임아웃 | 리소스가 많은 네임스페이스 | Retry로 해당 네임스페이스만 재스캔 |
| 결과 불완전 (일부 스캐너만) | 스캐너 타임아웃 | 타임아웃된 스캐너 표시 확인, 개별 재실행 |
| 이전 결과가 안 보임 | 캐시 만료 (7일) | 다시 스캔 실행 |
| 스캔이 느림 | 대규모 클러스터 + Parallel 미사용 | Parallel 모드 또는 네임스페이스 지정 스캔 |