Kubernetes 보안이란?

Kubernetes 보안은 클라우드 네이티브 보안의 4C, 즉 Cloud(클라우드), Cluster(클러스터), Container(컨테이너) 및 Code(코드)를 기반으로 합니다.

  • 클라우드(또는 기업 데이터 센터/코로케이션 시설): 기존 물리적 인프라는 Kubernetes 보안의 근간입니다. 클러스터가 자체 데이터 센터에 구축되든 클라우드 공급업체에 구축되든지와 관계없이 기본 클라우드 공급업체(또는 물리적 보안) 모범 사례를 준수해야 합니다.
  • 클러스터: Kubernetes 클러스터를 보호하려면 Kubernetes API와 같은 구성 가능한 구성 요소와 클러스터에 포함된 모든 애플리케이션의 보안이 모두 필요합니다. 대부분의 클라우드 네이티브 애플리케이션은 마이크로 서비스와 API를 중심으로 설계되기 때문에 애플리케이션은 전체 애플리케이션을 구성하는 서비스 체인에서 가장 취약한 링크의 보안만을 유지해도 됩니다.
  • 컨테이너: 컨테이너 설계 모범 사례는 최대한 가장 작은 코드 베이스로 시작하고(불필요한 라이브러리 또는 기능 제외), 컨테이너 내 사용자에게 불필요한 권한을 부여하지 않으며, 구축 시 컨테이너의 취약점을 검사하도록 해야 합니다.
  • 코드: 코드는 모든 Kubernetes 환경에 대한 주요 공격 표면을 나타냅니다. TLS 핸드셰이크를 사용한 TCP 암호화, 미사용 포트 노출 방지, 정기적인 검사 및 테스트와 같은 간단한 정책을 통해 운영 환경에서 보안 문제가 발생하는 것을 방지할 수 있습니다.

Kubernetes 5분 소개

2021년 Kubernetes 현황

컨테이너 수명주기 전반에 걸쳐 Kubernetes 보안이 중요한 이유

Kubernetes 클러스터의 분산된 동적 특성으로 인해 Kubernetes 보안은 컨테이너 수명주기 전반에서 중요합니다. 애플리케이션 수명주기의 세 단계인 구축, 배포, 런타임에서 각각 서로 다른 보안 접근 방식이 필요합니다. Kubernetes는 본질적인 보안 이점을 제공합니다. 예를 들어 애플리케이션 컨테이너는 일반적으로 패치가 적용되거나 업데이트되지 않습니다. 대신 컨테이너 이미지가 완전히 새로운 버전으로 교체됩니다. 이를 통해 엄격한 버전 제어가 가능하며 새로운 코드에서 취약점이 발견될 경우 신속한 롤백이 가능합니다.

그러나 개별 포드는 일시적이고 순간적인 데다가 애플리케이션과 더불어 다른 애플리케이션 및 서비스에 연결된 API 링크가 끊임없이 유동적이기 때문에 끊임없이 변화하는 런타임 환경이 IT 보안 전문가에게 문제가 될 수 있습니다.

애플리케이션 수명주기 전반에 걸친 주요 Kubernetes 보안 취약점은 무엇이며 어떻게 해결합니까?

Kubernetes 보안 툴은 다음을 충족해야 합니다.

  • 시간을 단축하여 코드가 손상되지 않도록 합니다.
  • 코드에 대한 신뢰 수준에 적합한 디지털 서명을 제공합니다.
  • 코드뿐만 아니라 구성 문제에 대한 가시성과 투명성을 제공합니다.
  • 안전하지 않은 서비스에서의 정보 수신(인바운드 연결) 또는 이러한 서비스로부터의 정보 송신(아웃바운드 연결)을 방지합니다.

구축 중 주요 Kubernetes 보안 취약점은 무엇입니까?

  • 신뢰할 수 없는 레지스트리의 코드. 신뢰할 수 없는 코드에는 의도치 않게 악성 행위자에게 액세스 권한을 부여할 수 있는 멀웨어나 백도어가 포함될 수 있습니다.
  • 과도한 기본 이미지. 컨테이너화된 애플리케이션은 적을수록 좋으므로 개발자는 손상될 수 있는 불필요한 패키지, 라이브러리 및 셸을 제거해야 합니다.

배포 중에 발생하는 주요 Kubernetes 보안 취약점은 무엇입니까?

  • 불필요한 권한 부여. 가능한 경우 권한을 최소한으로 유지하고 작업에 필요한 기밀 정보만 제공하여 공격 표면을 줄입니다.
  • 클러스터에서 애플리케이션 격리 실패. 네임스페이스를 사용하여 리소스와 팀을 서로 분리해야 합니다.
  • 클러스터 내부의 측면 이동. 네트워크를 세분화하는 정책을 사용하여 클러스터 내에서 공격의 수평 이동을 방지하십시오.
  • 무단 액세스. 역할 기반 액세스 제어(RBAC)가 액세스를 제한하도록 올바르게 구성되어 있는지 확인하십시오.

런타임 중 발생하는 주요 Kubernetes 보안 취약점은 무엇입니까?

  • 인프라 공격. 런타임 중에 API 서버, etcd, 컨트롤러를 포함한 Kubernetes 인프라의 모든 요소는 각자의 공격 표면을 드러냅니다.
  • 복잡성. Kubernetes 클러스터의 지속적인 상태에는 변화하는 부분이 많습니다. 공격의 원인을 찾아 문제를 해결하는 동안 손상된 컨테이너를 신속하게 격리 및 중지하고 정상적인 컨테이너로 교체해야 합니다.

개략적인 Kubernetes 보안 체크리스트는 무엇입니까?

모범 사례 권장 사항은 배포가 없는 최소한의 이미지로 시작하여 꼭 필요한 항목만 추가하는 것입니다. 작을수록 안전합니다.

  • 최소 호스트 OS를 사용하고, 읽기 전용 마운트를 종료하고, SELinux 옵션 사용으로 제어를 강화합니다.
  • OS 이미지 및 모든 유형의 외부 이미지를 포함하여 이미지에서 하향식으로 취약점을 검사합니다. 신뢰할 수 있는 외부 출처는 없습니다.
  • 네임스페이스 및 RBAC를 사용하여 논리적 방식으로 클러스터와 사용자를 세분화합니다. 필요하지 않은 경우 표시되어서는 안 됩니다.
  • Kubernetes 네트워킹의 기본값은 any-to-any 통신을 허용하므로 운영하기 전에 네트워크 세분화를 구현해야 합니다. 수신 및 송신 정책을 신중하게 정의하여 연결이 올바르게 라우팅되도록 합니다.
  • 권한을 최소한으로 유지하고 애플리케이션 프로세스를 루트로 실행하지 않습니다. 읽기 전용 루트 파일 시스템을 사용하면 소프트웨어 설치 또는 파일 시스템 수정을 이용하는 모든 공격을 방지할 수 있습니다.
  • 이미지 스캐닝과 같은 보안을 CI/CD 파이프라인에 통합합니다. 더 좋은 방법은 CIS 벤치마크 보안 테스트를 실행하는 것입니다.
  • 클러스터 자체를 보호합니다. API 서버에 대한 액세스를 제한하도록 RBAC를 구성하고 모든 etcd 통신을 TLS 암호화로 보호합니다. 마찬가지로 kubelet에 대한 RBAC를 구성하여 kubelet 사용 권한을 잠급니다.
  • 보안 컨텍스트를 구성하여 포드 액세스를 제한하는 등 Kubernetes에 내장된 제어 기능을 활용합니다.
  • 사전 예방적 보안에는 프로세스 활동 모니터링, 서비스 간 통신 및 클러스터 외부 통신이 포함되어야 합니다.

관련 솔루션 및 제품

엔터프라이즈급 Kubernetes 런타임

멀티 클라우드 인프라 전반에서 운영을 간소화하십시오.

Kubernetes와 Docker 비교

컨테이너를 성공적으로 활용하려면 어떤 툴을 선택해야 합니까?

Kubernetes의 Docker 컨테이너

컨테이너Kubernetes가 무엇인지 이해했다면 다음 단계는 이 두 가지가 함께 작동하는 방식을 알아보는 것입니다.