Kubernetes 보안이란 무엇입니까?
쿠버네티스(쿠버네티스) 보안은 쿠버네티스(쿠버네티스) 클러스터, 워크로드 및 기본 인프라를 보호하는 데 사용되는 프로세스, 도구 및 구성을 말합니다. 여기에는 클라우드 네이티브 환경에서 애플리케이션이 안전하게 실행되도록 컨테이너, API, 노드, 네트워크 및 컨트롤 플레인을 보호하는 것이 포함됩니다.
쿠버네티스(Kubernetes) 는 컨테이너화된 애플리케이션을 오케스트레이션하는 기본 플랫폼으로, 클라우드 네이티브 애플리케이션을 위한 최신 소프트웨어 개발의 핵심 구성 요소입니다. 하지만 이 플랫폼이 널리 사용되면서 사이버 공격의 표적이 되고 있습니다.
Kubernetes 보안의 중요성
퍼블릭 및 프라이빗 클라우드 환경 모두에서 컨테이너화된 애플리케이션을 오케스트레이션하는 주요 플랫폼인 쿠버네티스(Kubernetes)는 사이버 범죄자들의 주요 표적이 되고 있습니다. 쿠버네티스(Kubernetes)는 최신 DevOps 워크플로우의 핵심으로, 팀이 기본 인프라나 리소스 관리의 복잡성에 대한 걱정 없이 애플리케이션 배포를 자동화하고 확장할 수 있도록 지원합니다.
그러나 쿠버네티스의 복잡성은 비즈니스에 중요한 애플리케이션을 노출시킬 수 있는 취약성이나 잘못된 구성을 도입하고 간과하기 쉽다는 의미이기도 합니다. 쿠버네티스가 제대로 보호되지 않으면 공격자는 중요한 워크로드를 손상시키고 민감한 데이터를 유출하거나 필수 서비스를 중단시킬 수도 있습니다.
따라서 조직은 플랫폼과 그 기본 구성 요소를 보호하는 쿠버네티스(Kubernetes) 보안 관행이 필요합니다:
- 클러스터: 모든 쿠버네티스(쿠버네티스) 구성 요소를 포함하는 가장 중요한 환경입니다. 클러스터를 관리하는 컨트롤 플레인과 애플리케이션이 실제로 실행되는 작업자 노드 집합으로 구성됩니다.
- Nodes: 컨테이너화된 워크로드를 실행하는 가상 또는 물리적 머신. 각 노드에는 컨트롤 플레인과 통신하는 kubelet, 네트워킹 규칙을 처리하는 kube-proxy, 컨테이너 런타임이 포함되어 있습니다.
- 포드: 노드는 스토리지, 네트워크 네임스페이스 및 구성을 공유하는 하나 이상의 컨테이너를 캡슐화하는 쿠버네티스(Kubernetes)에서 배포 가능한 최소 단위인 파드로 패키징된 워크로드를 실행합니다.
- 컨트롤 플레인 컴포넌트: 클러스터의 상태 및 운영을 관리합니다. 주요 구성 요소로는 API 서버와 노드에 파드를 할당하는 스케줄러가 있습니다.
k8s 보안이라고도 하는 쿠버네티스(쿠버네티스) 보안은 이러한 구성 요소를 보호하기 위해 설계된 광범위한 보안 조치를 포괄합니다. 이를 위해 조직은 쿠버네티스(Kubernetes) 위협을 지속적으로 모니터링하고 공격을 완화하며 규제 표준을 준수할 수 있도록 사전 예방적인 다계층 보안 전략을 채택해야 합니다. 쿠버네티스(Kubernetes)가 대부분의 클라우드 인프라의 기반이 되면서 비즈니스 연속성과 성공을 위해서는 보안을 보장하는 것이 필수입니다.
주요 쿠버네티스(쿠버네티스) 위협
쿠버네티스를 보호하려면 플랫폼의 무결성과 가용성을 손상시킬 수 있는 위협을 이해해야 합니다. 쿠버네티스(쿠버네티스)를 대상으로 하는 가장 일반적이고 위험한 보안 위협은 다음과 같습니다:
컨테이너 취약성
컨테이너 취약성은 컨테이너 이미지의 결함, 오래된 소프트웨어 라이브러리 또는 안전하지 않은 컨테이너 런타임으로 인해 발생할 수 있습니다. 보안 결함이 있는 컨테이너 이미지는 공격자에게 직접적인 진입 지점을 만들어 애플리케이션을 무단 액세스 및 멀웨어에 노출시킬 수 있습니다. 이러한 공격은 데이터 유출 및 중단을 유발하여 금전적 손실, 평판 손상, 배포 지연으로 이어질 수 있습니다.
무단 액세스 및 권한 에스컬레이션
쿠버네티스(쿠버네티스)에서는 역할 기반 접근 제어(RBAC)를 통해 사용자와 서비스에 접근 권한을 부여하지만, 접근 제어가 잘못 구성되거나 지나치게 허용적인 역할을 부여하면 취약성이 발생하고 공격 표면이 증가할 수 있습니다. 공격자는 도난당한 자격 증명, 취약한 인증 메커니즘 또는 잘못 구성된 시스템을 통해 클러스터에 무단으로 액세스할 수 있습니다. 일단 내부에 들어가면 권한을 상승시켜 더 높은 수준의 액세스 권한이나 관리 제어 권한을 얻으려고 시도할 수 있습니다. 이는 민감한 데이터 도용부터 클러스터에서 코드 실행에 이르기까지 다양한 결과를 초래할 수 있습니다.
안전하지 않은 API
쿠버네티스(쿠버네티스)는 구성 요소 간의 통신을 위해 API에 크게 의존합니다. 안전하지 않은 API는 공격자가 쿠버네티스(Kubernetes) 제어 영역과 상호 작용하고, 워크로드를 조작하고, 악성 명령을 삽입하고, 민감한 데이터에 무단으로 액세스하거나, 서비스 거부 공격을 시작할 수 있는 진입점을 제공할 수 있습니다.
클러스터 구성 오류
네트워크 정책을 잘못 구성하거나 최적의 보안 설정으로 클러스터를 배포하지 않으면 쿠버네티스(Kubernetes) 플랫폼이 불필요한 위협에 노출될 수 있습니다. 공격자는 잘못된 구성을 표적으로 삼고 이를 악용하여 무단 액세스를 얻고 운영을 방해할 수 있습니다. 잘못된 구성이 발생하는 일반적인 방식은 액세스를 제한하고 쿠버네티스(쿠버네티스) 보안 위험을 줄이는 네트워크 정책을 정의하지 않고 기본 설정으로 클러스터를 배포하는 것입니다. 새 클러스터를 올바르게 구성하고, 보안 네트워크 정책을 구현하고, 정기적인 감사를 수행하여 누락된 잘못된 구성을 신속하게 수정하는 것이 중요합니다.
서비스 거부(DoS) 공격
서비스 거부(DoS) 공격은 클러스터의 리소스나 서비스를 압도하여 정상적인 사용자가 사용할 수 없도록 함으로써 클러스터의 가용성을 목표로 합니다. 쿠버네티스(쿠버네티스)에서는 API 서버 또는 파드에 과도한 트래픽이 몰려 응답하지 않거나 충돌이 발생할 수 있습니다.
애플리케이션 라이프사이클의 각 단계를 위한 쿠버네티스(Kubernetes) 보안
강력한 k8 보안을 보장하려면 애플리케이션 라이프사이클의 각 단계에서 보안 문제를 해결하는 것이 중요합니다. 보안은 배포 후 고려사항이 아니라 개발 프로세스의 각 단계에 통합되어야 합니다.
아래에서는 각 단계별 필수 보안 조치를 자세히 설명합니다:
#1. 개발 단계
개발 및 설계 단계는 쿠버네티스(쿠버네티스) 보안의 첫 번째 방어선입니다. 이 단계에서 개발자는 잠재적인 공격을 견딜 수 있는 안전한 애플리케이션과 아키텍처를 만드는 데 집중해야 합니다. 여기에는 개발 환경의 무결성을 보호하고, 처음부터 보안을 염두에 두고 애플리케이션을 설계하며, 안전한 코딩 관행을 구현하는 것이 포함됩니다.
고려해야 할 주요 보안 조치는 다음과 같습니다:
- 제로 트러스트 아키텍처를 채택하여 모든 액세스 요청의 유효성을 검사합니다.
- 코드 검토 프로세스를 개발하여 애플리케이션 코드에 취약성이 없는지 확인하세요.
- 보안 비밀 관리 프로세스를 시행하여 민감한 데이터(비밀번호, API 키, OAuth 토큰 등)를 적절하게 처리하세요.
#2. 단계 배포
배포 단계에서는 애플리케이션의 공급망을 검토하여 이미지 및 기타 구성 요소가 안전하고 최신 상태이며 알려진 취약점이 없는지 확인해야 합니다.
To achieve this, you should:
- 모든 컨테이너 이미지의 취약성을 검사합니다.
- 컨테이너 이미지에 대한 액세스를 제한하여 무단 액세스 및 조작을 방지하세요.
- 모든 종속성을 업데이트하고 패치 관리 프로세스를 개발하여 최대한 빠르게 새 업데이트를 받을 수 있습니다.
#3. 배포 단계
배포 단계는 애플리케이션이 쿠버네티스(Kubernetes) 클러스터에 도입되는 단계입니다. 이 단계에서 보안을 보장하려면 쿠버네티스(Kubernetes) 환경을 안전하게 구성하고 취약성 노출 위험을 최소화하기 위해 배포 프로세스를 관리해야 합니다.
고려해야 할 안전한 배포 관행에는 다음이 포함됩니다:
- 애플리케이션 배포를 특정 사용자 및 환경으로 제한합니다.
- 컨테이너 이미지를 스캔하여 암호화 신원을 확인하여 서명이 신뢰할 수 있는 게시자의 유효한 서명인지, 아티팩트가 변경되지 않았는지 확인합니다.
- 애플리케이션과 클러스터를 별도의 네임스페이스에 배포합니다.
#4. 런타임 단계
Kubernetes 런타임 보안 는 애플리케이션이 클러스터 내부에서 실행되는 운영 단계에 중점을 둡니다. 런타임 단계에서는 보안 인시던트의 영향을 제한하기 위한 지속적인 모니터링 및 인시던트 대응 기능과 환경을 안전하게 유지하기 위한 지속적인 업데이트가 필요합니다.
크게 세 가지 영역으로 나눌 수 있습니다:
- 액세스: 강력한 액세스 제어, 인증 프로세스, 모든 API 트래픽 암호화로 쿠버네티스(Kubernetes) API 보호.
- 계산: 높은 수준의 보안을 제공하고 동일한 호스트에서 실행하면서 애플리케이션을 격리하는 것 사이의 균형을 찾는 컨테이너 런타임을 선택하세요.
- 저장소: 미사용 클러스터와 API 개체를 암호화하고, 클러스터와 스토리지 간의 연결을 인증하고, 백업을 활용하여 필요한 경우 복원할 수 있습니다.
쿠버네티스(쿠버네티스) 보안의 4C
쿠버네티스(쿠버네티스)를 위협으로부터 효과적으로 보호하려면 4Cs 모델의 관점에서 보안에 접근하세요. 4Cs 모델은 코드, 컨테이너, 클러스터, 클라우드 보안으로, 쿠버네티스(Kubernetes) 아키텍처 내에서 보안 문제를 해결하기 위한 로드맵입니다.
코드 보안
코드는 컨테이너에서 실행되는 애플리케이션을 의미합니다. 쿠버네티스(쿠버네티스) 환경에서는 부주의한 버그 도입으로 인한 취약성뿐만 아니라 잠재적으로 취약한 타사 라이브러리로 인해 코드가 중요한 공격 표면이 될 수 있습니다.
쿠버네티스(Kubernetes) 플랫폼에서 실행되는 코드를 보호하려면, 기본 네트워크 보안 및 액세스 제어를 첫 번째 방어선으로 삼아 코드에 대한 무단 액세스를 방지하는 것부터 시작하세요. 안전한 코딩 관행을 구현하고, 전용 도구로 정기적인 스캔과 테스트를 실행하며, OWASP 코딩 가이드라인을 준수하세요.
Serverless Security
컨테이너에는 기본 이미지, 운영 체제, 컨테이너 구성, 종속성, 애플리케이션 코드를 실행하는 데 필요한 런타임으로 구성된 이미지가 포함되어 있습니다.
파드에서 실행되는 컨테이너는 신뢰할 수 있는 기본 이미지와 런타임 환경을 사용해야 하며, 각각은 악의적인 공격자의 표적이 될 수 있습니다. 원본 이미지 리포지토리가 안전한지 확인하고, 코드 베이스를 최소화하여 사용 중인 타사 라이브러리 수를 제한하고, 컨테이너 이미지의 취약성을 검사하고, 액세스 제어 및 네트워크 정책으로 파드를 보호하여 포드 간의 통신을 제한하세요.
클러스터 보안
쿠버네티스(Kubernetes) 아키텍처는 클러스터로 구성됩니다. 쿠버네티스(쿠버네티스) 클러스터는 파드로 구성되며, 각 파드는 동일한 로컬 네트워크에서 작동하는 하나 이상의 컨테이너를 포함합니다. 클러스터 보안의 설계는 액세스 정책과 보안 구성을 신중하게 설계하는 데 달려 있습니다.
클러스터 보안에는 클러스터 내에서 실행되는 컨테이너와 애플리케이션, 컨트롤 플레인(API, 스케줄러, 데이터스토어, 컨트롤러), 클러스터가 실행되는 더 넓은 네트워크의 보안이 포함됩니다.
클라우드 보안
클라우드 계층은 쿠버네티스를 실행하는 물리적 데이터센터 또는 클라우드 인프라로, 일반적으로 IaC( 인프라로서의 코드 ) 플랫폼 또는 관리형 쿠버네티스(Kubernetes) 서비스를 실행합니다.
클라우드 제공업체는 적절한 액세스 제어를 구현하기 위한 가이드라인과 보안 모범 사례를 제공합니다. 리소스에 대한 최소 권한 절차를 구현하고, 클라우드 취약성 또는 잘못된 구성을 검사하고, 쿠버네티스(Kubernetes)와 상호 작용할 수 있는 사용자를 제한하는 액세스 제어를 구현하여 클라우드 인프라의 위험을 줄이세요.
일반적으로 관리자는 초기 코딩 및 테스트, 프로덕션 배포, 클러스터 내 지속적인 운영 등 애플리케이션 수명 주기의 모든 단계에서 보안 조치를 구현할 수 있습니다.
쿠버네티스(쿠버네티스) 보안 모범 사례
컨테이너 취약성, 무단 액세스, 안전하지 않은 API, 잘못된 구성, DoS 공격 및 기타 위협으로 인한 위험을 줄이려면 쿠버네티스(Kubernetes) 보안 모범 사례를 구현하는 것이 필수적입니다.
다음은 이러한 위험을 완화하고 안전한 쿠버네티스(Kubernetes) 환경의 토대를 구축하는 데 도움이 되는 주요 모범 사례입니다.
- 강력한 인증 및 RBAC 정책을 시행하세요: 무단 액세스와 권한 상승은 가장 심각한 쿠버네티스(쿠버네티스) 위협 중 하나입니다. 최소 권한 권한을 적용하고 다중 인증을 사용하여 사용자 확인을 강화하는 엄격한 RBAC 규칙을 구현하세요. 이러한 조치는 손상된 계정으로 인한 잠재적 피해를 제한하고 공격자가 클러스터에 액세스하는 경우 권한을 에스컬레이션하는 것을 방지합니다.
- 컨테이너 이미지 및 런타임 보안: 컨테이너 취약성을 완화하려면 배포하기 전에 신뢰할 수 있는 이미지를 사용하고, 불필요한 패키지를 제거하고, 모든 이미지에서 알려진 CVE를 검사하세요. 또한 이미지 서명 및 검증을 구현하여 아티팩트가 변조되지 않았는지 확인합니다.
- 쿠버네티스(쿠버네티스) 강화하기 API: 안전하지 않은 API는 공격의 일반적인 진입 지점입니다. 모든 API 트래픽에 TLS 암호화를 사용하고, 네트워크 제어를 통해 API 서버 액세스를 제한하고, 로그를 추적하여 의심스러운 행동을 식별하세요.
- 네트워크 세분화 및 제로 트러스트 제어를 적용하세요: 네트워크 구성이 잘못되면 클러스터가 무단 액세스에 노출될 수 있습니다. 네트워크 정책을 사용하여 어떤 파드가 서로 통신할 수 있는지 정의하여 워크로드를 효과적으로 격리할 수 있습니다. 또한 제로 트러스트 모델을 채택하면 모든 연결이 인증되고 권한이 부여되며 지속적으로 확인됩니다.
- 리소스 할당량 및 자동 확장 보호 기능을 구현합니다: DoS 공격은 클러스터 리소스에 과부하를 일으킬 수 있습니다. 워크로드가 과도한 CPU 또는 메모리를 사용하지 않도록 파드 및 네임스페이스에 리소스 할당량과 제한을 설정하세요. 악의적인 트래픽이 기본 인프라를 고갈시키지 않도록 자동 확장을 신중하게 구성하세요.
- 클러스터를 지속적으로 모니터링하고 감사하세요: 모니터링은 런타임에 이상 징후를 감지하는 데 필수적입니다. 클라우드 네이티브 보안 솔루션을 사용하여 컨테이너 동작을 모니터링하고, 악의적인 활동을 탐지하고, 컴플라이언스를 시행하세요. 정기적인 감사를 통해 잘못된 구성을 조기에 식별하고 보안 정책에 부합하는 상태를 유지할 수 있습니다.
쿠버네티스(쿠버네티스) 보안을 위한 핵심 원칙
다음 원칙과 보안 대책은 쿠버네티스(Kubernetes)에서 실행되는 컨테이너화된 애플리케이션의 복원력을 보장하는 데 도움이 될 수 있습니다:
Role-Based Access Control (RBAC)
쿠버네티스(쿠버네티스)에서 RBAC은 클러스터 내의 리소스에 대한 액세스를 제어하고 사용자 또는 그룹이 수행할 수 있는 작업 또는 수행할 수 없는 작업을 정의합니다. RBAC는 팀 액세스를 격리하고, 작업을 제한하고, 관리자 액세스를 제어하고, 서비스 계정 권한을 관리하는 데 사용됩니다.
역할은 단일 네임스페이스 내의 리소스에 대한 액세스 권한을 부여하는 데 사용되는 반면, 클러스터 역할은 범위가 더 넓고 네임스페이스 전반의 액세스를 정의합니다. 모든 사용자가 모든 리소스에 제한 없이 완전하게 액세스할 수 있는 것은 아닙니다. 쿠버네티스(쿠버네티스) 역할 및 권한을 평가할 때, 일반적인 지침으로 최소 권한 원칙(PoLP)을 참조하세요.
RBAC를 사용할 때 관리자는 클러스터 전체 권한 대신 네임스페이스별 권한을 선호하여 모든 쿠버네티스(쿠버네티스) 오브젝트와 네임스페이스에 대한 액세스 제어를 지정하는 경향이 있습니다. 특정 작업에 필요한 경우에만 액세스를 허용하고 그 이상은 허용하지 마세요.
네트워크 정책 적용
컨테이너는 네트워크를 통해 외부 서비스 및 서로 통신합니다. 컨테이너화된 애플리케이션은 종종 클러스터 네트워크를 광범위하게 사용합니다. 애플리케이션이 다른 시스템과 상호 작용하는 방식을 더 잘 이해하고 비정상적인 통신을 식별하려면 활성 네트워크 트래픽에 대한 모니터링을 구현하고 쿠버네티스(Kubernetes) 네트워크 정책에서 허용하는 트래픽과 비교하세요.
네트워크 연결을 보호하려면 조직은 워크로드가 올바르게 작동하는 데 필요한 최소한의 통신만 허용하는 네트워크 정책을 적용하여 필요한 서비스로만 통신을 제한해야 합니다. 이 권장 사항은 클러스터에 대한 인바운드 및 아웃바운드 트래픽과 클러스터 내의 트래픽 모두에 적용됩니다.
VPN(가상 사설망) 및 TLS를 사용하여 네트워크 트래픽을 암호화합니다. 컨테이너 보안을 강화하려면 환경 내에 방화벽을 배포하여 또 다른 보호 계층을 추가하고 네트워크 세분화 및 리소스 격리를 구현하여 공격 표면을 줄이고 침해를 억제하세요.
파드 보안 어드미션(PSA) 적용하기
파드 보안 정책(PSP)의 후속인 PSA는 쿠버네티스(쿠버네티스) 내에서 파드 보안 표준(PSS)으로 알려진 보안 정책을 시행한다. PSA는 기본 제공 기능으로 타사 도구가 필요하지 않으므로 일련의 표준을 정의하고 준수하여 보안을 간소화합니다. 안전하지 않은 구성에 제한을 두어 공격 표면을 줄입니다.
파드 보안 어드미션에 의해 시행되는 PSS는 워크로드에 대한 세 가지 보안 프로파일을 정의한다. 권한 있는 프로필은 제한이 없으므로 꼭 필요한 경우가 아니면 사용해서는 안 됩니다. 기본 프로필은 애플리케이션에 최소한의 보안을 제공하는 반면, 제한은 보안 모범 사례를 적용합니다.
PSA는 이러한 프로파일에 따라 파드가 구성되었는지 확인하여 컴플라이언스를 시행합니다. 일반적으로 관리자는 클러스터의 보안을 보장하기 위해 파드에 대해 기준 또는 제한 정책을 설정해야 합니다.
컨트롤 플레인 보안
쿠버네티스(쿠버네티스) 컨트롤 플레인은 클러스터 제어를 담당합니다. 클러스터 상태, 상태 및 구성 데이터를 관리하여 컨테이너가 필요한 모든 리소스와 함께 실행되도록 합니다. 컨트롤 플레인은 그 중요성과 복잡성 때문에 구성하기가 다소 어렵다고 여겨져 공격자들의 주요 표적이 되고 있습니다.
컨트롤 플레인은 다음과 같은 구성 요소로 이루어져 있습니다:
- etcd: etcd 키-값 데이터베이스는 구성 정보 및 클러스터 상태 데이터를 저장합니다. etcd에 암호화가 활성화되어 있는지, 꼭 필요한 경우가 아니면 통신이 API 서버로 제한되는지, 클라이언트가 인증서 기반 인증을 사용하는지 확인하세요.
- kube-controller-manager: 컨트롤러 관리자 데몬은 클러스터를 실행하고 그 기능을 제어한다. 컨트롤러 관리자를 보호하려면 네트워크 액세스 제한, 모든 API 트래픽에 대한 TLS 구현, 클러스터의 리소스 사용 제한, 컨테이너가 사용하는 권한 최소화 등이 포함됩니다.
- 큐브 스케줄러: 스케줄러는 새 컨테이너를 관리하고 프로비저닝한다. 보안 단계에는 프로파일링 기능을 비활성화하여 공격 표면을 줄이고 스케줄러의 IP 주소가 안전하지 않은 IP에 연결되어 있지 않은지 확인하는 것이 포함됩니다.
- kube-apiserver: API 서버는 내부 및 외부 요청을 처리하는 프런트엔드 역할을 합니다. 간단히 말해 외부 IP의 액세스를 제한하고, 강력한 인증 메커니즘을 적용하고, TLS 암호화를 적용하여 API 서버를 보호합니다. 자세한 내용은 아래의 "쿠버네티스(쿠버네티스) 보안 설정하기( API)" 섹션을 참조하세요.
쿠버네티스(쿠버네티스) API 서버 보안 유지
외부 사용자는 API 를 통해 쿠버네티스(쿠버네티스) 컨트롤 플레인에 액세스하므로 보안을 보장하고 권한이 없는 사용자의 액세스를 제한하는 것이 매우 중요합니다.
쿠버네티스(쿠버네티스) API 를 보호하려면 먼저 서버를 대상으로 하는 요청을 규제하여 권한이 없는 API 요청이 클러스터에 성공적으로 액세스하지 못하도록 합니다. 다중 인증 (MFA)을 사용할 수 있는 타사 인증 공급업체를 사용하는 것이 좋습니다. OAuth 2.0 커넥터 또는 OIDC(OpenID Connect) 공급자를 사용하여 클러스터 액세스를 보호하세요.
공용 네트워크에 대한 액세스를 제한하고, API 서버를 통해 전송 중인 데이터에 대해 TLS(전송 계층 보안) 암호화를 구현하세요. 또한 API 서버와 직접 통신하는 쿠버네티스(쿠버네티스) 데이터스토어 등이 적절하게 보안이 설정되어 있는지 확인하세요.
이미지 보안 스캔
이미지는 생성된 클러스터와 파드의 기초를 형성합니다. 이러한 이미지는 정기적으로 보안 취약성을 검사하여 이미지에서 생성된 컨테이너가 이미지의 보안 결함을 상속받지 않도록 해야 합니다.
이미지 스캔 도구는 컨테이너가 빌드되는 기본 이미지와 컨테이너 이미지에 포함된 라이브러리 애플리케이션의 취약점을 식별하는 데 사용할 수 있습니다. 이는 기본 이미지와 모든 패키지를 취약성 데이터베이스와 비교하여 스캔하는 방식으로 수행됩니다.
이미지 레지스트리에 대한 액세스를 제한하여 변조를 방지하고 CI/CD( 지속적 통합/지속적 배포 ) 파이프라인 단계에서 모든 이미지를 스캔하세요. CI/CD 파이프라인에 스캔을 추가하면 컨테이너가 올바르게 구성, 업데이트되고 멀웨어가 없는지 확인하는 데 도움이 됩니다.
비밀 및 통신 암호화
비밀은 민감한 정보의 한 형태입니다. 쿠버네티스(쿠버네티스)에서 가장 일반적인 비밀은 일반적으로 비밀번호, OAuth 토큰, SSH 키 또는 기타 자격 증명입니다. YAML 구성 파일, 컨테이너 이미지 또는 컨테이너의 문서 내에서 일반 텍스트에 저장된 비밀은 심각한 위험을 초래하며 전체 클러스터의 보안을 위협합니다.
쿠버네티스(쿠버네티스)는 이 데이터를 안전하게 저장하기 위해 쿠버네티스(쿠버네티스) 시크릿이라는 기본 제공 개체를 제공합니다. 관리자는 비밀 개체를 사용하여 애플리케이션 코드에서 기밀 정보를 분리할 수 있습니다.
쿠버네티스(쿠버네티스) 시크릿은 권한이 있는 정보를 다루기 때문에 해커의 표적이 되는 경우가 많습니다. 비밀은 미사용 시 암호화되어야 하며, 필요한 구성 요소와 사용자만 비밀에 액세스할 수 있도록 제한해야 합니다. 비밀 검색 관행 또는 시스템을 구현하여 우발적인 비밀 노출을 식별하고 수정합니다.
노드 노출 제한
쿠버네티스(쿠버네티스) 노드는 마스터 노드와 워커 노드의 두 가지 주요 유형으로 나뉩니다. 마스터 노드는 API 서버, 스케줄러, 컨트롤러, etcd 데이터스토어를 포함한 기본 클러스터 서비스를 실행합니다. 워커 노드는 클러스터 내에서 애플리케이션을 실행합니다.
쿠버네티스(쿠버네티스) 클러스터는 리눅스 또는 윈도우 운영체제(운영체제)를 실행하는 노드로 구성됩니다. 이러한 운영체제를 강화하는 데 일반적으로 적용되는 많은 강화 기술이 쿠버네티스(Kubernetes) 노드의 컨텍스트에서 유효합니다:
- 클러스터가 올바르게 작동하는 데 필요한 애플리케이션과 라이브러리만 설치하고 그 이상은 설치하지 마세요.
- 관리/루트 계정에 대한 액세스를 제한하여 필요한 경우에만 사용하세요.
- 실시간 모니터링 도구를 배포하여 진행 중인 보안 침해를 탐지하세요.
- Linux 노드는 SELinux 또는 AppArmor와 같은 도구를 사용하여 강화할 수 있습니다.
또한 인터넷 보안 센터(CIS)는 마스터 노드와 워커 노드 모두에 대한 보안 벤치마크 세트를 제공합니다. 관리자는 Kube-bench와 같은 도구를 사용하여 클러스터를 스캔하고 CIS 벤치마크와 비교하여 클러스터를 평가할 수 있습니다. 이러한 스캔은 일반적으로 CIS 모범 사례에서 벗어난 구성을 수정하기 위한 권장 사항을 제공합니다.
감사 로그 사용
감사 로그는 운영과 보안을 모두 유지하는 데 중요합니다. 이러한 로그는 클러스터 활동에 대한 실행 가능한 인사이트를 제공하고 비정상적인 활동을 신속하게 감지할 수 있게 해줍니다. 쿠버네티스(쿠버네티스)에는 감사 로깅 기능이 기본 제공 기능으로 포함되어 있지만 기본적으로 활성화되어 있지는 않습니다. 활성화되면 모든 작업이 클러스터 내에 기록됩니다.
클러스터 관리자는 로깅할 이벤트를 정의하는 감사 정책과 이러한 로그를 저장, 관리 및 분석하기 위한 외부 도구를 구성해야 합니다. 이를 통해 보안 문제를 신속하게 감지하는 동시에 사고 대응(IR) 팀이 침해 사고를 조사하는 데 필요한 정보를 제공할 수 있습니다.
최소한의 권한으로 워크로드 실행
쿠버네티스(Kubernetes) 워크로드는 복잡하고 적절한 보안을 유지하기 어려울 수 있습니다. 워크로드는 동적이며 온프레미스와 클라우드 환경 사이를 오가며 각각 고유한 네트워크 보안 제어 기능을 갖추고 있습니다. 또한 자동화된 CI/CD 프로세스는 클러스터 노드에 새 서비스나 새 버전을 자주 배포하여 복잡성을 가중시킵니다.
일반적으로 관리자는 워크로드를 절대 신뢰해서는 안 됩니다. 세분화된 보안 정책을 적용하여 워크로드와 타사 애플리케이션 간의 통신을 제한하세요. 이렇게 하면 위협이 측면으로 이동할 가능성이 줄어들고 컴플라이언스를 유지하는 데 도움이 됩니다.
네트워크 보안 정의는 워크로드에 구축되어 쿠버네티스(Kubernetes) 배포 및 데이터 센터 전반에서 이식성을 보장해야 합니다. 이렇게 하면 워크로드가 실행되는 모든 곳에서 보안 정의가 적용됩니다.
마지막으로, 경계 보안 도구를 구성하여 워크로드에서 사용하는 IP 주소와 포트를 지속적으로 모니터링하여 의심스러운 동작을 실시간으로 식별할 수 있도록 합니다.
체크 포인트로 쿠버네티스(쿠버네티스) 보안 강화하기
By following best practices, leveraging the right tools, and fostering a culture of security, organizations can minimize Kubernetes security risks and protect their cloud-native applications. Check Point offers the right tools through its comprehensive cloud security platform, Check Point.
Onboarding Kubernetes clusters into Check Point provides a range of workload protections, including:
- 클라우드 네이티브 앱 전반에서 제로 트러스트 액세스.
- 보안 정책을 정의하고 자동으로 배포하여 잘못된 구성의 위험을 줄일 수 있습니다.
- 컨테이너 이미지 스캔을 통해 취약성을 식별합니다.
- 쿠버네티스(쿠버네티스) 공격의 영향을 완화하기 위한 실시간 인시던트 탐지.
Check Point security capabilities are now also available with the Wiz CNAPP platform for unified cloud security. This combined solution leverages Wiz to identify and mitigate risks, and Check Point to secure network and application-layer traffic.
Upgrade your Kubernetes security and learn more about Check Point as well as our collaboration with Wiz by 오늘 데모 예약하기.
