쿠버네티스 보안이란?

URL 복사

쿠버네티스(K8s 또는 '큐브(Kube)'라고도 함)는 컨테이너화된 애플리케이션의 배포, 관리, 확장을 자동화하는 오픈소스 컨테이너 오케스트레이션 플랫폼입니다. 쿠버네티스는 Linux 컨테이너를 클러스터로 구성하고 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 컨테이너화된 마이크로서비스를 연결합니다. 쿠버네티스 배포에 포함된 모든 계층 또는 서비스에는 취약성이 있을 수 있으므로 쿠버네티스 클러스터를 보호하는 프로세스는 복잡할 수 있습니다. 

일부 팀에서는 쿠버네티스 보안에 대해 컨테이너 이미지와 컨테이너 런타임 보안에 중점을 둔 컨테이너 중심 접근 방식을 취하는 반면, 쿠버네티스에서 컨텍스트를 추출하고 내장된 쿠버네티스 제어 기능을 사용하여 전체 애플리케이션 개발 라이프사이클에 걸쳐 위험 기반 보안 모범 사례를 구현하는 더 광범위한 접근 방식의 쿠버네티스 네이티브 보안을 선택하는 팀도 있습니다. 또한 쿠버네티스 네이티브 보안은 잘못 구성된 쿠버네티스 RBAC 정책, 안전하지 않은 쿠버네티스 컨트롤 플레인 구성 요소, 잘못 사용된 쿠버네티스 암호와 같은 쿠버네티스 고유의 위험과 취약성을 해결합니다.

비교적 최근에 등장한 기술인 쿠버네티스는 최근 몇 년 동안 엄청난 채택률을 보이고 있지만, 보안 투자는 이를 따라가지 못하는 경우가 많습니다. 보안에 대한 인식 부족과 기술 격차가 지속될 경우 보안 인시던트는 엄청난 결과를 초래할 수 있습니다. 보안 문제는 애플리케이션 개발과 배포를 지연시키거나 속도를 늦추는 요인으로 작용합니다. 쿠버네티스와 컨테이너의 보안 문제로 인해 사고가 발생할 경우 매출 또는 고객 손실, 직원 해고, 그리고 비즈니스 운영에 추가적인 영향을 미치는 결과를 초래합니다.

쿠버네티스와 컨테이너화는 DevOps를 더 빠르고 확장 가능하도록 지원하지만 추가적인 보안 위험도 수반합니다. 더 많은 컨테이너가 배포되면서 공격 표면이 확대되고 취약점 또는 구성 오류가 포함된 컨테이너를 식별하기가 더 어려워지고 있습니다.

공통의 위험과 과제

쿠버네티스 포드 간 네트워킹

쿠버네티스의 주요 장점은 클러스터 내 포드의 통신 방식을 제어하는 광범위한 네트워크 구성 옵션입니다. 그러나 쿠버네티스는 기본적으로 클러스터 내 포드 간 네트워크 통신을 제한하지 않으므로, 관련 네트워크 정책을 할당할 때까지 모든 포드가 서로 통신할 수 있습니다. 이로 인해 악의적인 사용자에 의해 침해된 단일 포드가 해당 클러스터의 다른 모든 포드를 공격하는 벡터로 사용될 수 있습니다. 쿠버네티스 네트워크 정책은 YAML 파일을 사용하여 작성됩니다. 이는 쿠버네티스 네트워크 정책 운용을 어렵게 하는 여러 이유 중 하나에 불과하며, 이로 인해 단순히 속도를 위해 네트워크 세분화를 간과하는 경우가 발생할 수 있습니다. 

구성 관리

사람의 실수와 자동 보안 검사의 부재로 인해 종종 발생하는 구성 오류는 쿠버네티스 환경에 심각한 위험을 일으키고 보안 침해를 초래할 수 있습니다. 컨테이너의 동적 특성으로 인해 구성 오류를 식별하고 일관된 보안 상태를 유지하기가 어려울 수 있습니다. 쿠버네티스는 속도와 운용성을 우선시하여 개발되었으므로 기본 구성은 일반적으로 개방되어 있거나 제한이 없으며, 이로 인해 조직이 공격에 취약해질 수 있습니다.

소프트웨어 공급망 문제

취약한 애플리케이션 구성 요소, 불충분한 액세스 제어, SBOM(Software Bill of Materials) 부족, CI/CD 파이프라인의 약점, 일관성 없는 정책 시행 등 소프트웨어 공급망의 보안 문제도 조직의 주요 관심사입니다. 클라우드 네이티브, 쿠버네티스 환경을 상징하는 광범위한 소프트웨어 공급망에는 고유한 제어 기능 세트가 필요합니다. 소프트웨어 공급망 보안은 개별 개발자 환경(IDE)에서 시작하여 실행(runtime) 환경까지 확장해야 합니다. 모든 콘텐츠(소스 코드, 이미지, 아티팩트), 툴링(개발자와 보안), 공급망 인력을 고려해야 합니다. 소스 코드 분석, 액세스 제어, 증명, SBOM은 소프트웨어 공급망 보안을 위한 많은 보안 고려 사항 중 일부에 불과합니다. 

보안을 초기에 통합

소프트웨어 공급망 보안과 밀접하게 관련된 과제는 보안을 왼쪽으로 이동(Shifting security to the left)하는 것입니다. 보안을 왼쪽으로 이동한다는 것은 쿠버네티스 보안 노력을 컨테이너 라이프사이클의 초기 단계로 이동해야 한다는 개념입니다. 보안을 왼쪽으로 이동하기 위해서는 개발자가 워크플로우에서 보안 결정을 내리기 위한 지식과 툴을 갖춘 보안 사용자로 전환되어야 하므로 쉬운 일이 아닙니다. 하지만 보안을 왼쪽으로 이동할 때 얻는 비즈니스 장점은 엄청납니다. 이를 기본 방식으로 삼아 쿠버네티스와 컨테이너 보안을 구현해야 합니다. 구축 단계에서 더 많은 보안 문제를 해결할수록 런타임 문제가 줄어들어 프로젝트 지연이 줄어듭니다.

런타임 감지와 대응

쿠버네티스 환경에서 실행되는 컨테이너화된 애플리케이션에서 런타임 위협 벡터의 양은 이러한 문제를 감지하고 대응하는 팀에게 과제를 안겨줍니다. 악의적인 사용자가 쿠버네티스 환경에 초기 액세스 권한을 얻고, 악성 코드를 실행하고, 권한을 에스컬레이션하고, 지속성을 실현하고, 감지를 회피하고, 횡적으로 이동하여 데이터 삭제 또는 유출, 서비스 거부 또는 리소스 하이잭킹을 발생시키는 방법은 여러 가지가 있습니다. 이 토픽에 대한 자세한 내용은 쿠버네티스에 대한 MITRE ATT&CK® 프레임워크 블로그에서 확인할 수 있습니다. 

쿠버네티스 인프라 보안

API 서버, kube-scheduler, kube-controller-manager, etcd와 같은 컨트롤 플레인 구성 요소에서부터 컨테이너화된 워크로드를 실행하는 작업자 노드 구성 요소에 이르기까지 쿠버네티스의 여러 계층은 고유한 보안 문제를 제기합니다. 애플리케이션이 실행될 수 있는 강력한 클러스터 환경을 제공하려면 이러한 각 서비스를 안전하게 구성해야 합니다. 또한 자체 관리 서비스로 쿠버네티스를 실행하거나 전체 관리형 클라우드 서비스를 사용하는 경우에 따라 쿠버네티스의 다양한 구성 요소를 보호하는 방법이 달라집니다. 예를 들어, 자체 관리 환경에서는 노드 구성 요소 외에도 컨트롤 플레인 구성 요소 전체가 사용자의 책임인 경우가 많습니다. 관리형 쿠버네티스 서비스를 사용하는 경우에 보안 책임은 서비스 공급자와 고객인 사용자 모두에게 있습니다. 이는 또 다른 과제를 제시합니다.

컨테이너화와 쿠버네티스에는 팀에서 컨테이너 보안 문제 관련 위험을 해결하는 데 도움이 되는 여러 빌트인 보안 장점이 있습니다. 예를 들면 다음과 같습니다. 

  • 런타임에 발견된 보안 문제가 포함된 컨테이너가 실행 중에 업데이트되거나 패치되는 것이 아니라 구축 단계에서 수정되고 다시 배포됩니다. 불변성으로 알려진 이 기능은 컨테이너 동작의 예측 가능성과 이상 동작 감지 기능을 향상합니다. 
  • 네트워크 정책은 포드 또는 포드 그룹을 분할할 수 있는 반면, 권한 컨트롤러는 정책을 적용하여 향상된 거버넌스를 구현할 수 있습니다. 
  • 역할 기반 액세스 제어(RBAC)는 사용자 계정과 서비스 계정에 특정 권한을 할당할 수 있습니다.
  • 쿠버네티스 암호는 암호화 키와 같은 중요한 데이터를 더 철저하게 보호할 수 있습니다.

하지만 쿠버네티스는 보안 플랫폼이 아니므로 팀은 쿠버네티스 환경의 각 계층과 컨테이너 및 애플리케이션 라이프사이클의 모든 단계에서 취약점을 대상으로 삼아 위험 요소 평가를 운용해야 합니다. 쿠버네티스 보안을 효과적으로 처리하려면 가능한 경우 쿠버네티스 네이티브 보안 제어를 활용하고 동시에 구축, 배포, 런타임 단계에서 모범 사례를 구현해야 합니다.

 

오픈소스 컨테이너 기술의 선도 기업인 Red Hat은 쿠버네티스 보안 모범 사례에 대한 지식을 강화하고 컨테이너를 더욱 안전하게 구현할 수 있도록 지원합니다. 팀이 K8s 보안 고려 사항을 더욱 효율적으로 파악하고 해결할 수 있도록 지원하기 위해 Red Hat은 컨테이너 라이프사이클에 보안 기능을 임베딩한 쿠버네티스 네이티브 솔루션을 제공합니다. 이를 통해 DevOps 팀은 프로덕션 레디 애플리케이션을 구축하고 배포할 수 있습니다.

StackRox에서 만들고 2021년 Red Hat이 인수Kubelinter는 쿠버네티스 배포의 구성 오류와 프로그래밍 오류를 식별하는 오픈소스 정적 분석 툴입니다. KubeLinter는 일련의 테스트를 실행하여 쿠버네티스 구성을 분석하고 오류를 식별하며 보안 모범 사례와 일치하지 않는 모든 항목에 대한 경고를 생성합니다. 

Red Hat Service Interconnect는 기본적으로 클러스터와 클라우드 전반에서 확장되는 빌트인 보안 기능을 갖춘 동시에 서비스 간에 신뢰할 수 있는 통신 링크를 제공합니다. 또한 레거시, 컨테이너 또는 쿠버네티스 플랫폼 전반에서 개발할 수 있는 유연성을 제공하므로 개발자에게 차세대 비즈니스 애플리케이션을 빌드, 현대화, 배포할 수 있는 더 많은 옵션이 주어집니다.

조직은 Red Hat® Advanced Cluster Security for Kubernetes(ACS)를 사용하여 클라우드 네이티브 애플리케이션을 안전하게 구축, 배포, 실행할 수 있습니다. 자체 관리형 또는 전체 관리형 SaaS 솔루션으로 제공되는 ACS는 모든 주요 클라우드 환경과 하이브리드 환경에서 컨테이너화된 워크로드를 보호하고 DevOps 팀과 InfoSec 팀이 보안 기능을 운용하고 운영 비용을 절감하며 개발자 생산성을 높일 수 있도록 지원합니다.

추가 자료

문서

스테이트풀과 스테이트리스 비교

스테이트풀과 스테이트리스는 상호 작용 상태가 얼마나 오래 기록되는지, 해당 정보가 어떤 식으로 저장되는지를 기준으로 구별할 수 있습니다.

문서

Quarkus란?

Quarkus는 Java 가상 머신(Java Virtual Machine, JVM)과 네이티브 컴파일을 위해 만들어진 쿠버네티스 네이티브 Java 스택으로, 특히 컨테이너에 Java를 최적화합니다.

문서

서버리스란?

서버리스(serverless)란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델입니다.

클라우드 네이티브 애플리케이션에 대한 자세한 내용

제품

선택한 인프라에서 애플리케이션 출시 테스트를 완료한 통합 서비스 세트를 포함하는 엔터프라이즈 애플리케이션 플랫폼입니다.

여러 서비스를 서로 분리하여 독립적으로 생성, 확장, 배포할 수 있게 하는 분산형 클라우드 네이티브 통합 플랫폼입니다.

리소스

e-book

클라우드 네이티브와 하이브리드 클라우드의 융합: 전략 가이드

E-book

클라우드 네이티브 애플리케이션 구현을 위한 과정

교육

무료 교육 과정

Developing Cloud-Native Applications with Microservices Architectures