Kubernetes 보안이란 무엇입니까?
Kubernetes 보안은 오케스트레이션하는 Kubernetes 플랫폼과 컨테이너를 보호하기 위해 설계된 일련의 전략, 기술 및 기술입니다. 즉, K8s 보안은 컨테이너 워크로드를 안전하게 유지하는 것입니다.
높은 수준에서 이는 다음을 의미합니다.
- 클라우드 네이티브 보안의 4C(클라우드, 클러스터, 컨테이너, 코드)를 이해하고 보호합니다. Kubernetes 4C 모델은 클라우드 네이티브 보안을 4개의 개별 계층으로 나눕니다. "K8s 보안"은 주로 클러스터 계층에 초점을 맞추지만 진정한 엔드 투 엔드 보안을 위해서는 이러한 각 계층을 위협으로부터 적절하게 보호해야 합니다.
- Pod 컨테이너 보안에 대한 모범 사례를 따릅니다. Pod 보안 정책 및 보안 컨텍스트를 가져오는 것은 K8s 보안의 중요한 측면입니다.
- K8s API 보안. K8s API(애플리케이션 프로그래밍 인터페이스)는 Kubernetes 확장성과 확장성을 높이는 데 큰 역할을 합니다. 또한 제대로 보호되지 않을 경우 공격자가 악용할 수 있는 대규모 공격 표면이기도 합니다.
Kubernetes 보안의 중요성
Kubernetes는 인적 오류의 여지를 줄이고 보안 구성을 프로그래밍 방식으로 확장할 수 있도록 하여 컨테이너 보안 문제를 줄이는 데 도움이 될 수 있습니다. 그러나 Kubernetes 는 복잡하고 널리 사용되며 광범위한 사용 사례에서 중요한 인프라의 일부이기도 합니다. 또한 CVE-2020-8554 및 CVE-2021-25735와 같은 취약성에서 알 수 있듯이 Kubernetes 네이티브 보안 문제가 발생할 수 있습니다.
결과적으로 K8s 플랫폼은 해커가 손상시키려는 고부가가치 공격 표면입니다. 즉, 프로덕션에서 컨테이너와 Kubernetes 를 사용하는 기업은 K8s 보안을 진지하게 받아들여야 합니다.
Kubernetes 보안 문제
특정 CVE 외에도 Kubernetes 보안과 관련하여 고려해야 할 다양한 보안 문제와 장단점이 있습니다.
고려해야 할 주요 K8 보안 문제는 다음과 같습니다.
- K8s 보안의 인간적 요소. 기술 솔루션은 Kubernetes 보안의 중요한 부분이지만 기업은 인적 요소를 고려해야 합니다. 권한이 있는 사용자와 워크스테이션만 K8s 관리 작업을 수행하도록 하는 것 외에도 관리자에게 보안 모범 사례를 교육하고 보안을 우선 순위로 삼는 것이 큰 도움이 됩니다.
- K8s 및 컨테이너 구성 관리. 많은 K8s 기본 설정은 가장 안전한 옵션이 아닙니다. 관리자는 Kubernetes 구성이 보안과 유용성 간에 적절한 균형을 이루도록 해야 합니다. 또한 인증 토큰, SSH 키 및 기타 권한 있는 정보에 일반 텍스트 구성 파일 대신 K8s 비밀을 사용하는 것이 중요합니다.
- K8s 네트워크 보안. 전송 중인 데이터를 암호화하는 것은 대부분의 프로덕션 워크로드에 대한 테이블 스테이크여야 합니다. 또한 불필요한 East-West 트래픽을 제한하고 클러스터 간에 마이크로 세분화를 사용하도록 네트워크 정책을 미세 조정해야 합니다.
- K8s 스토리지. 전송 중인 데이터의 암호화가 필수인 것처럼 미사용 데이터의 암호화는 K8s 보안의 중요한 측면입니다. 기업은 컴플라이언스와 데이터 보안을 고려하여 스토리지 설치 방법과 유형을 결정해야 합니다.
- 패치 관리. 항상 새로운 보안 문제와 취약점이 발생합니다. 기본 인프라, K8s 플랫폼 직접, 컨테이너 이미지 또는 코드의 종속성과 관련이 있는지 여부에 관계없이 이를 완화하기 위한 패치 관리 계획이 필요합니다.
- 컴플라이언스. PCI-DSS, HIPAA 및 SOX와 같은 규정에는 모두 K8 보안에 대한 결정에 직접적인 영향을 미칠 수 있는 특정 요구 사항이 있습니다.
Kubernetes Security Best Practices
만능 Kubernetes 기본 보안 솔루션은 없지만 전반적인 보안 태세를 강화하는 데 도움이 될 수 있는 몇 가지 K8 보안 모범 사례가 있습니다.
- 최소 권한의 원칙을 따릅니다. 일반적으로 사용자와 컨테이너가 비즈니스 기능을 완료하는 데 필요한 최소한의 작업만 수행할 수 있도록 허용합니다. K8s 보안의 경우 Pod 매니페스트에서 allowPrivilegeEscalation: false를 설정하고 AppArmor 커널 보안 모듈과 같은 기능을 활용하는 등의 작업을 수행하는 것을 의미합니다.
- 보안을 "모두의 책임"으로 삼으십시오. "보안은 모두의 책임"이라는 슬로건이 널리 사용되는 이유는 인적 오류가 심각한 보안 위험을 초래하기 때문입니다. 앱 빌드, 테스트 및 배포에 관련된 모든 사람이 보안을 중요하게 생각하도록 하면 보안 침해 위험을 줄일 수 있습니다.
- 파이프라인에 보안을 통합합니다. K8s 인프라 보안 프로세스를 자동화하면 인적 오류나 구성 오류의 여지를 제거하는 데 도움이 됩니다. K8 및 컨테이너 보안의 경우 보안을 왼쪽으로 이동하는 것이 큰 도움이 될 수 있습니다.
- API 액세스를 제한합니다. 모든 API 트래픽을 암호화하는 것 외에도 K8s API에 액세스할 수 있는 사용자와 특정 사용자가 인증된 후 수행할 수 있는 작업을 제한하는 액세스 제어를 구현해야 합니다. 예를 들어, Kubernetes' 문서는 K8s API 강화를 위한 좋은 출발점을 제공합니다.
- k8s 노드에 대한 SSH 액세스를 제한합니다. K8s 노드에 대한 SSH 액세스를 제한하면 전체 공격 표면을 크게 줄일 수 있습니다. 사용자가 컨테이너에 액세스해야 하는 경우 K8s 노드에 대한 직접 SSH 액세스 대신 kubectl exec 명령과 같은 것을 고려합니다.
- 사용 사례와 일치하는 보안 컨텍스트를 선택합니다. 다양한 사용 시나리오에는 서로 다른 K8s 보안 컨텍스트가 필요합니다. 구성에서 가능한 가장 안전한 컨텍스트를 사용하는지 확인합니다.
- K8s 네트워크를 분할하십시오. 애플리케이션 간의 네트워크 세분화는 손상된 단일 애플리케이션이 전체 인프라를 다운시킬 가능성을 줄입니다. K8s 네트워크 정책과 제3자 보안 솔루션은 클러스터에서 네트워크 세그멘테이션을 구현하는 데 도움이 될 수 있습니다.
- 리소스 할당량을 사용합니다. 리소스 할당량을 정의하지 않고 컨테이너를 실행하면 다양한 불필요한 위험(예: DoS 공격에 대한 노출 증가). Pod, CPU 및 메모리에 리소스 할당량을 구현하면 위험을 제한하는 데 도움이 될 수 있습니다.
- 사전 검사 및 모니터링을 수행합니다. 공격, 패치되지 않은 소프트웨어, 비정상적인 동작 및 위반을 가능한 한 빨리 탐지하면 체류 시간을 제한하고 전반적인 보안 태세를 개선하는 데 큰 도움이 됩니다. Kubrentes 보안을 위해 특별히 제작된 도구는 문제 발생 시 전반적인 가시성과 응답 시간을 개선하는 데 도움이 될 수 있습니다.
CloudGuard로 Kubernetes 보안 강화
이러한 K8s 보안 모범 사례는 Kubernetes 인프라를 보호하기 위한 훌륭한 출발점을 제공합니다. 클라우드에서 진정한 엔드 투 엔드 보안을 달성하려면 멀티 클라우드 환경에서도 모든 워크로드를 안전하게 유지하는 데 도움이 되는 특수 목적의 솔루션이 필요합니다. CloudGuard를 사용하면 그렇게 할 수 있습니다. CloudGuard는 Kubernetes를 포함한 다양한 플랫폼에서 다음을 제공합니다.
- 클라우드 네트워크 보안 및 위협 차단
- 애플리케이션 보안(API 보호 포함)
- 컨테이너 및 서버리스 플랫폼 보호
- Cloud Security Posture Management
CloudGuard가 작동하는 모습을 보려면 지금 데모에 등록하십시오. 또한 K8s 리소스 라이브러리를 확인하여 CloudGuard가 Kubernetes 인프라를 보호하는 데 어떻게 도움이 되는지 자세히 알아볼 수 있습니다.