Kubernetes 없이 현대적인 클라우드 네이티브 애플리케이션을 상상하기는 어렵습니다. 그러나 이는 몇 가지 복잡한 보안 문제를 야기합니다. 런타임 위협으로부터 Kubernetes 환경을 보호하고 중요한 워크로드를 위험으로부터 안전하게 지키는 방법을 알아보세요.
Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화할 수 있는 오픈 소스 플랫폼입니다. 쿠버네티스가 소프트웨어 구축 및 배포 방식을 혁신했다고 말해도 과언이 아닙니다. 여러 호스트에 걸쳐 복잡한 애플리케이션을 오케스트레이션할 수 있는 능력 덕분에 쿠버네티스는 클라우드 기반 애플리케이션의 표준이 되었습니다. 
 
애플리케이션의 복잡성이 증가하고 구성 요소가 분산되고 상호 연결됨에 따라 공격 표면도 커집니다. SDLC의 모든 단계와 그 이후를 보호하는 것이 중요해집니다. 바로 여기서 코드에서 클라우드 보안가 필요합니다. 컨테이너 이미지와 쿠버네티스 제어 평면을 악의적인 공격으로부터 보호하는 것 역시 중요합니다. 본 글에서는 런타임 시 쿠버네티스를 어떻게 보호할 수 있는지 집중적으로 살펴보겠습니다.
Kubernetes 런타임 보안이란 무엇인가?
Kubernetes 런타임 보안은 Kubernetes 클러스터 내에서 실행 중인 컨테이너화된 애플리케이션을 보호하는 관행을 의미합니다. 런타임 보안은 배포 후 단계에서 발생할 수 있는 위협으로부터 애플리케이션을 보호합니다.
Kubernetes 런타임 보안이 중요한 이유는 무엇인가요?
애플리케이션이 개발 단계에서 강력한 보안 검사를 거치고 컨테이너 이미지의 안전성을 보장하기 위한 조치가 취해지더라도, 취약점이 프로덕션 단계로 스며들 수 있습니다. 쿠버네티스 런타임 보안은 이러한 취약점이 즉시 탐지되고 처리되도록 보장합니다.
엄격하게 스캔된 컨테이너 이미지조차도 런타임 중에 악용될 수 있는 취약점을 포함할 수 있습니다. 감염된 컨테이너는 호스트 시스템 내에서 권한 상승을 시도하거나, 악의적인 행위자가 컨테이너와 노드 간 측면 이동을 통해 피해를 확대하려 할 수 있습니다. 이러한 문제를 해결하기 위해서는 쿠버네티스 런타임 보안이 필수적입니다.&
Kubernetes 런타임 보안의 주요 초점 영역
- 동적 환경 보호: Kubernetes에서는 워크로드 구성이 지속적으로 변경됩니다. 런타임 보안은 실시간 보호를 제공하기 위해 이러한 역동성에 적응해야 합니다.
 - 세분화된 네트워크 제어: 침입자의 측면 이동을 방지하려면 컨테이너 통신에 대한 정밀한 제어가 필요합니다.
 - 공급망 공격 방지: 배포 전 악성 코드 탐지 및 런타임 중 이미지에 대한 정기적인 보안 평가는 쿠버네티스 런타임 보안 관행의 목표 중 하나입니다.
 - 신속한 사고 대응: Kubernetes 런타임 보안은 침해 발생 시 보안 팀이나 비즈니스 사용자가 신속하게 사고 대응을 시작할 수 있도록 해야 합니다.
 
Kubernetes 런타임 보안 위협
Kubernetes 클러스터 내에서 실행 중인 애플리케이션을 보호하기 위해 Kubernetes 런타임 보안이 필수적인 이유는 이미 논의한 바 있습니다. 이 섹션에서는 쿠버네티스에 런타임 보안이 필요한 다양한 위협 요소를 살펴보겠습니다. 애플리케이션이 런타임 중에 직면하는 주요 보안 위협은 크게 다섯 가지 범주로 나눌 수 있습니다.
컨테이너 수준 위협
이는 개별 컨테이너에서 비롯된 취약점을 의미합니다. 이러한 취약점은 애플리케이션은 물론 호스트 시스템까지 위협할 수 있습니다. 컨테이너 수준 보안 문제에는 다양한 유형이 존재합니다.
- 이미지 취약점: 컨테이너나 호스트 시스템의 보안을 위협할 수 있는 소프트웨어 이미지 또는 설계도 내의 결함은 이미지 취약점입니다. 이는 오래된 소프트웨어 패키지, 안전하지 않은 구성 또는 악성 코드에서 비롯될 수 있습니다. 배포 전 취약점 스캔으로 대부분의 이미지 취약점은 제거되지만 예외가 발생할 수 있습니다.
 - 권한 상승: 악의적인 행위자가 컨테이너에 접근할 경우, 취약점을 악용하거나 컨테이너가 보유한 불필요한 권한을 이용해 접근 권한을 상승시키려 시도할 수 있습니다.
 - 탈출 시도: 컨테이너는 호스트 시스템으로부터 내용을 격리하도록 설계되었습니다. 이것이 컨테이너 사용의 절반의 목적입니다. 그러나 해커들은 컨테이너 수준 런타임 취약점을 악용하여 격리 상태에서 탈출을 시도할 수 있습니다.
 - 악성 코드 주입: 공격자는 실행 중인 컨테이너에 악성 코드를 주입하여 클러스터의 다른 부분으로 확산시킬 수 있습니다.
 
호스트 수준 위협
- 호스트 침해: 컨테이너를 호스팅하는 물리적 또는 가상 머신이 침해당하면 공격자가 컨테이너를 표적으로 삼기 위한 발판을 제공할 수 있습니다.
 - 자원 남용: 컨테이너가 의도적이든 아니든 과도한 리소스를 소비하면 서비스 거부(DoS)로 이어질 수 있습니다. 컨테이너가 너무 많은 CPU 사이클을 사용하거나 너무 많은 네트워크 트래픽을 송수신할 수 있습니다. 이러한 문제는 시스템 불안정성과 서비스 거부로 이어질 수 있습니다. 이는 DDoS 공격, 데이터 유출 또는 암호화폐 채굴의 공격 경로가 될 수 있습니다.
 
클러스터 수준 위협
클러스터 수준 위협은 개별 컨테이너가 아닌 전체 쿠버네티스 클러스터(모든 노드와 그 안에 포함된 애플리케이션)를 대상으로 합니다. 이러한 공격은 클러스터를 잠재적으로 비활성화시켜 클러스터 내에서 실행 중인 모든 애플리케이션을 사용할 수 없게 할 수 있습니다.
- 무단 액세스: Kubernetes API에 대한 무단 액세스 권한을 가진 악의적인 행위자는 리소스를 악용할 수 있습니다.&
 - API 악용: 정상적인 사용자도 Kubernetes API를 오용하여 손상이나 장애를 유발할 수 있습니다.
 - 비밀 정보 도용: Kubernetes 시크릿은 API 키, 비밀번호, SSH 키, OAuth 토큰 등 민감한 정보를 저장합니다. 이러한 시크릿이 노출되면 중대한 위협이 될 수 있습니다.
 - 측면 이동: 공격자는 클러스터 내 컨테이너 간을 이동하여 감염을 확산시킬 수 있습니다.
 
네트워크 수준 위협
노드와 외부 시스템 간 통신 채널의 취약점은 다양한 네트워크 수준 위협을 초래할 수 있습니다.
- 출구 트래픽: 통제되지 않은 출구 트래픽 또는 아웃바운드 트래픽은 데이터 유출 및 노출을 초래하여 무단 접근이나 데이터 도난으로 이어질 수 있습니다.
 - 중간자 공격(Man-in-the-middle, MitM): 암호화되지 않은 네트워크 통신은 중간자 공격에 취약합니다.
 - DoS 공격: 해커는 가짜 트래픽으로 네트워크를 마비시켜 클러스터 운영을 방해할 수 있습니다.
 
기타 위협
- 공급망 공격: 소프트웨어 공급망에 대한 공격은 여러 컨테이너에 영향을 미칠 수 있습니다. 예를 들어, 악성코드 주입을 통해 이루어질 수 있습니다.
 - 내부자 위협: 악의적인 의도를 가진 직원은 클러스터에 대한 특권 액세스 권한을 악용하여 피해를 입힐 수 있습니다.
 
Kubernetes 런타임 보안은 이러한 과제를 어떻게 해결할 수 있을까?
지금까지 다양한 위협 요소가 컨테이너, 클러스터, 심지어 쿠버네티스 클러스터를 실행하는 호스팅 컴퓨터까지 위협하는 다양한 위협 요인에 대해 논의했습니다. 이 섹션에서는 쿠버네티스의 런타임 보안을 보장하기 위해 적용할 수 있는 방어 메커니즘에 초점을 맞출 것입니다.
네트워크 보안
- 네트워크 정책: 포드와 서비스 간에 명확하고 세분화된 통신 규칙을 정의함으로써 무단 접근, 도청, 중간자 공격의 가능성을 줄입니다.
 - &네트워크 세분화: 공격 표면을 제한하고 공격 표면을 포함하고 워크로드를 더 작은 네트워크 세그먼트로 격리하여 침해 시 잠재적 영향을 제한할 수 있습니다.
 - 입출구 제어: 클러스터로의 유입 및 유출 트래픽을 관리하면 외부 위협과 데이터 유출로부터 보호하는 데 도움이 됩니다.
 
위협 탐지 및 방지
- 침입 탐지 및 방지 시스템(IDPS): IDPS는 네트워크 트래픽을 모니터링하여 의심스러운 활동과 이상 징후를 감지하고 실시간으로 위협을 차단합니다.
 - 보안 정보 및 이벤트 관리(SIEM): 클러스터 전반의 보안 이벤트를 상호 연관 분석하여 잠재적 위협을 식별합니다.
 
액세스 제어
- 역할 기반 액세스 제어(RBAC): 시간 매개변수를 통해 즉시 필요한 리소스에만 접근 권한을 부여함으로써 특권 액세스를 제한합니다.
 - 비밀 관리: 보안과 가용성을 유지하기 위해서는 중앙 집중식 접근 제어가 적용된 암호화된 비밀 저장소가 필요합니다.
 
리소스 보호
- 리소스 할당량 및 제한: 리소스 고갈 및 DoS 공격을 방지하기 위해 CPU, 메모리 및 기타 리소스 사용량에 제한을 설정하는 것이 중요합니다.&
 - 모니터링: 리소스 사용량을 지속적으로 추적하고 경고 메커니즘을 갖추면 리소스 남용을 방지하는 데 도움이 됩니다.
 
이미지 및 종속성 보안
- 이미지 스캐닝: 컨테이너 이미지를 지속적으로 분석하여 취약점을 찾아내면 손상된 소프트웨어의 배포를 방지하고 런타임 위협으로부터도 보호할 수 있습니다.
 
- 의존성 관리: 오래되거나 손상된 의존성은 악용 가능한 보안 취약점을 초래할 수 있습니다. 의존성을 최신 상태로 유지하면 이러한 문제를 방지할 수 있습니다.
 
사고 대응
- 사고 대응 계획: 보안 사고를 차단하고 위협을 신속하게 제거하기 위한 사전 정의된 계획을 마련하면 다운타임을 줄이고 보안 사고를 효과적으로 처리하는 데 도움이 될 수 있습니다.
 - 보안 자동화:사고 대응의 일상적인 단계를 자동화하면 대응 시간을 단축하고, 인적 오류를 제거하며, 복구 프로세스를 강화할 수 있습니다.
 
Kubernetes 런타임 보안 구현을 위한 5가지 모범 사례
유연성과 확장성과 함께 Kubernetes는 몇 가지 독특한 보안 문제를 야기합니다. 이미 쿠버네티스 보안의 핵심 구성 요소에 대해서는 이미 논의한 바 있습니다. 다음 모범 사례는 쿠버네티스 환경에 강력한 런타임 보안을 구현하는 데 도움이 될 것입니다.
1. 최소 권한 원칙 적용
사용자와 서비스 계정에 최소한의 접근 권한과 권한만 제공하는 것이 최소 권한 원칙의 핵심입니다. 이를 구현하는 최선의 방법은 '절대 신뢰하지 말고 항상 검증하라'는 간단한 모토를 따르는 제로 트러스트 아키텍처를 채택하는 것입니다. 이는 회사 네트워크 내부 또는 외부 여부와 관계없이 전반적인 검증을 도입합니다.
2. 이미지 보안에 집중하라
컨테이너 이미지와 종속성의 상태는 항상 모니터링해야 합니다. 강력한 수정 주기를 동반한 정기적인 취약점 스캔이 필요합니다. 실행 시 변경을 방지하기 위해 불변 컨테이너 이미지를 사용하는 것이 좋습니다.
3. 런타임 애플리케이션 자체 보호(RASP) 사용
RASP는 애플리케이션 동작에 대한 실시간 심층 가시성을 제공합니다. 이상 징후를 탐지하고 악성 입력을 차단하거나 세션을 종료하는 등 위협 요소에 대응하기 위한 조치를 취할 수 있습니다.
RASP는 정상 활동과 악성 활동을 구분할 수 있어 오탐을 줄입니다. RASP를 도입하면 큰 이점을 얻을 수 있습니다.
4. 강력한 네트워크 보안 조치
네트워크 세분화, 인그레스 및 이그레스 제어 구현, 네트워크 트래픽 암호화와 같은 조치는 네트워크 통신을 보호하는 데 매우 중요할 수 있습니다.
5. 보안 문화 구축
신뢰할 수 있는 CI/CD 통합을 통해 SDLC에 보안을 내재화하십시오. 이를 통해 취약점 평가의 지속적인 사이클을 구축할 수 있습니다. 보안 준비 상태를 측정하기 위한 정기적인 내부 및 외부 감사 수행과 마찬가지로 직원 대상 역할 기반 교육 제공도 필수적입니다. 이러한 관행은 향상된 런타임 보안으로 이어집니다.
Kubernetes 런타임 보안 도구
Kubernetes 환경에 런타임 보안을 구현하는 데 도움이 되는 상용 및 오픈소스 도구가 다양하게 존재합니다. 본 섹션에서는 그중 몇 가지를 살펴보겠습니다.
1. SentinelOne
SentinelOne은 Singularity라는 포괄적인 클라우드 보안 플랫폼을 보유하고 있습니다. Kubernetes Sentinel은 해당 플랫폼의 구성 요소로, 컨테이너에 대한 사전 프로덕션 스캔을 런타임 감시로 대체합니다. 이는 쿠버네티스 런타임 보안을 자동화하는 최상의 옵션 중 하나입니다.
2. Falco
Falco는 컨테이너 및 호스트의 이상 징후를 탐지할 수 있는 오픈소스 도구입니다. 런타임 Kubernetes를 모니터링하며 비정상적인 행동을 감지하면 경보를 발생시킵니다.
3. Kube-hunter
또 다른 오픈소스 도구인 Kube-hunter는 클러스터 구성의 취약점을 식별하도록 특별히 설계되었습니다.
4. Kube-bench
이 도구는 CIS Kubernetes Benchmark를 기반으로 표준화된 보안 모범 사례에 따라 Kubernetes 클러스터를 점검합니다.&
이 외에도 Armo, Palo Alto Networks 등과 같은 인기 있는 상용 도구들이 Kubernetes 관련 보안 문제를 해결할 수 있습니다.
SentinelOne을 통한 Kubernetes 런타임 보안
SentinelOne은 고객에게 진정한 포괄적인 클라우드 네이티브 보안 플랫폼을 제공하는 데 주력하고 있습니다. Kubernetes 런타임 보안 및 일반적인 컨테이너 보안은 이러한 목표에서 매우 중요한 부분을 차지합니다.
SentinelOne 는 클라우드 워크로드를 위한 전용 에이전트를 보유하고 있으며, 이 에이전트는 런타임 쿠버네티스 클러스터에 대한 실시간 모니터링을 수행합니다. 지속적인 취약점 분석을 통해 SentinelOne은 프로덕션 환경에서 애플리케이션의 보안 상태가 양호한지 확인합니다. 쿠버네티스 클러스터 보안을 확보하는 것은 애플리케이션 보안에서 중요한 역할을 하며, SentinelOne은 이를 제대로 수행합니다. SentinelOne의 Singularity Cloud Workload Security는 제로데이 공격, 랜섬웨어 등 런타임 위협으로부터 컨테이너화된 워크로드를 보호합니다.
SentinelOne Singularity Data Lake는 보안 분석가에게 사건 조사, 대응 시간 단축, 위협 헌팅에 필요한 가시성을 제공합니다.
컨테이너용 클라우드 워크로드 에이전트의 주요 기능
- Amazon Linux 2023을 포함한 14가지 주요 Linux 배포판 지원
 - Snyk 통합(별도 구매 필요)
 - Docker, 컨테이너, cri-o 런타임 지원
 - 커널 모델 불필요, 자동 확장 보호, 실시간 CWPP
 - 자체 관리 및 관리형 K8s 서비스
 - 안정성과 성능을 위한 eBPF 아키텍처
 - Workload Flight Data Recorder™로 조사 및 IR(사고 대응) 가속화 및 위협 헌팅 지원
 
Kubernetes 보안을 위한 SentinelOne 도입의 전반적인 비즈니스 이점
- 간소화된 보안 운영으로 비즈니스 가동 중단 시간 감소
 - 자원 활용도 최적화
 - 산업 규정 및 준수 요건 충족 지원
 
간단한 요약
이 글에서는 쿠버네티스 런타임 보안의 중요성에 대해 살펴보았습니다.&
- 이미지 취약점부터 네트워크 수준 공격까지 컨테이너화된 환경을 위협할 수 있는 요소들을 논의했습니다.
 - 쿠버네티스 런타임 보안이 이러한 위협 요소를 어떻게 해결할 수 있는지 살펴보았습니다.
 - 강력한 접근 제어 구현, 견고한 네트워크 정책 수립, 보안 문화 조성 등 필수적인 모범 사례를 논의했습니다.
 - SentinelOne을 활용한 지속적인 모니터링 및 런타임 경보 관리에 대해 이야기했습니다.
 
결론
컨테이너화를 사용하는 대부분의 현대 애플리케이션의 핵심은 쿠버네티스 클러스터입니다. 악의적인 행위자들은 종종 컨테이너를 표적으로 삼아 무단 접근을 얻고 클러스터 전반에 걸쳐 측면 이동을 시도합니다. 쿠버네티스 런타임 보안은 컨테이너 이미지에 보안 취약점이 없도록 하고, 컨테이너가 불변성을 유지하며, 애플리케이션에 런타임 보안 위협이나 런타임 보안 위험이 도사리지 않도록 보장합니다.
Kubernetes 런타임 보안을 위한 다각적 접근 방식에는 네트워크 보안, 접근 모니터링 및 보안 제어, 이미지 보안 등이 포함됩니다. 고품질 RASP 메커니즘의 사용은 보안 전문가들의 업무를 용이하게 합니다. 마지막으로, SentinelOne과 같은 도구는 컨테이너 보안 및 클라우드 보안 전반에 대한 부담을 덜어줍니다.
Kubernetes 런타임 보안 FAQ
Kubernetes 런타임 보안은 빌드나 배포 시뿐만 아니라 실행 중인 컨테이너화된 애플리케이션과 클러스터를 보호합니다. 예상치 못한 프로세스, 파일 변경 또는 네트워크 연결과 같은 비정상적인 동작을 감시하고 위협을 실시간으로 차단하거나 경고합니다.
이 계층은 이미지 스캔이나 잘못된 구성을 통해 침투한 공격을 차단하여 동적 환경에서 확장 및 변경되는 라이브 워크로드의 안전을 보장합니다.
이미지 스캔과 엄격한 구성에도 불구하고, 컨테이너가 시작된 후에만 위협이 나타날 수 있습니다. 공격자는 이미지에 악성 코드를 숨기거나 잘못 구성된 포드를 통해 접근한 후 측면 이동하거나 권한을 상승시킬 수 있습니다. 런타임 보안은 이러한 활성 위협이 발생할 때 이를 탐지하고 차단하여 데이터 도난, 서비스 중단 및 클러스터 전반의 손상을 방지하는 최종 방어선입니다.
Kubernetes의 런타임 보안은 워크로드 보호(포드 및 컨테이너의 비정상적 동작 모니터링), 트래픽을 제어하는 정책을 통한 네트워크 보안, 자격 증명을 보호하는 시크릿 관리를 포함합니다. 또한 포렌식 분석을 위한 감사 로깅, 실시간 위협 탐지 엔진, 의심스러운 활동이 확산되기 전에 자동으로 차단하거나 격리하는 정책 시행 도구도 포함됩니다.
전형적인 런타임 위협으로는 컨테이너가 호스트 리소스에 접근하기 위해 탈출하는 권한 상승 공격, 이미지 내부에서 활성화되는 숨겨진 악성코드, API 악용을 통한 무단 컨테이너 생성, 잘못 구성된 포드에서 비밀 정보 도용 등이 있습니다. 공격자는 또한 커널 또는 런타임 버그를 악용하여 컨테이너 간 이동하거나 리소스를 과도하게 소비하는 프로세스로 노드를 마비시킵니다.
컨테이너를 루트 권한 없이 실행하고 –privileged 플래그를 사용하지 마십시오. 네트워크 정책을 적용하여 포드 간 통신을 제한하십시오. 감사 로그를 활성화하고 이상 징후를 모니터링하십시오. 경량 실시간 이상 탐지를 위해 eBPF 기반 또는 에이전트 없는 도구를 사용하십시오.
런타임 정책을 정기적으로 검토하고 사고 대응 플레이북을 테스트하십시오. 마지막으로, 중요 워크로드를 격리하고 시크릿이 승인된 파드에서만 접근되도록 하십시오.

