쿠버네티스 보안

Kubernetes 보안은 컨테이너식 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈 소스 시스템입니다.컨테이너를 논리적 단위로 그룹화하면 관리, 보안 및 검색이 더 쉬워지며 Kubernetes는 오늘날 시장을 선도하는 컨테이너 관리 시스템입니다.Kubernetes로 시스템을 보호하려면 Kubernetes를 사용하여 애플리케이션을 생성, 배포 또는 실행할 때 시스템이 작동하는 방식과 다양한 유형의 취약성이 언제, 어떻게 시스템에 침입할 수 있는지 이해해야 합니다.

대체로 Kubernetes 보안은 클라우드, 애플리케이션 클러스터, 컨테이너 및 코드의 기본 보안을 다룹니다.여기에는 중요한 물리적 보안 모범 사례를 따르고 클러스터 및 보안을 보장하는 등 많은 연동 및 중첩되는 시스템 및 프로세스가 포함됩니다. 애플리케이션 보안, 마이크로서비스 보안 관리, 지능형 컨테이너 설계 표준 준수, 액세스 제어 관리여기에는 빌드 타임 취약성 검사, 코드 암호화, 필요한 경우 TLS 핸드셰이크 검사, 사용하지 않는 포트 보안, 전체 시스템의 정기적인 검사도 포함됩니다. 취약성이 있습니다 이는 프로덕션 환경에서 발생할 수 있습니다.

위험 및 당면 과제

애플리케이션은 빌드, 배포 및 런타임 사이클을 통해 실행되며, Kubernetes는 애플리케이션 라이프사이클의 각 단계에서 본질적인 보안 이점을 제공합니다.하지만 여전히 많은 문제가 발생할 수 있습니다.

그레이터 어택 서피스

시스템은 무수히 많은 컨테이너를 사용하거나 생성할 가능성이 높으며 컨테이너는 어디에나 있습니다.컨테이너를 사용하면 마이크로서비스 아키텍처를 활용하고 더 빠른 속도와 더 높은 이식성으로 운영할 수 있지만, 컨테이너를 사용하면 시스템을 취약점에 노출시키는 보안 사각 지대가 생길 수도 있습니다.

점점 더 많은 컨테이너를 배포함에 따라 시스템 운영 및 보안에 대한 가시성을 유지하는 것이 점점 더 어려워지고 있습니다.또한 개별 문제를 조사하거나, 이에 대응하거나, 잘못 구성된 컨테이너를 재구성하는 작업도 있습니다.

잘못 사용된 레지스트리 및 이미지

구축하는 이미지와 이미지를 저장하는 레지스트리는 얼마나 안전한가요?정기적으로 스캔하나요?그렇지 않으면 쿠버네티스 환경뿐만 아니라 네트워크 전반의 애플리케이션 및 시스템 보안에 해로울 수 있습니다.

네트워크 효과

컨테이너가 다른 컨테이너 및 다른 네트워크 엔드포인트와 통신하기 때문에 침해가 발생합니다.컨테이너 보안침해된 컨테이너가 나머지 네트워크에 대해 갖는 시스템 액세스 수준에 따라 전체 네트워크에 확산될 수 있습니다.

이러한 문제와 직면할 수 있는 기타 문제를 성공적으로 해결하려면 보안을 빌드, 배포 및 실행 주기에 통합해야 합니다.매우 높은 수준에서는 이미지에 위험한 취약점이 없어야 하고, 배포는 보안 모범 사례를 따라야 하며, 컨테이너 워크로드는 런타임 위협으로부터 보호되어야 합니다.

컨테이너 모범 사례

아래 섹션에서는 컨테이너 라이프사이클의 세 단계 모두에서 따라야 하는 몇 가지 Kubernetes 모범 사례를 자세히 설명합니다.

빌드 단계

무엇보다 먼저 컨테이너 이미지를 보호해야 합니다.여기에는 먼저 보안 이미지를 구축한 다음 취약점을 스캔하는 작업이 포함됩니다.

모범 사례는 최소한의 기본 이미지를 사용하고 셸이나 OS 패키지 관리자와 함께 이미지를 사용하지 않는 것입니다. 이렇게 하면 시스템에 알려지지 않은 취약점이 발생할 수 있습니다.또한 불필요한 구성 요소를 추가하지 말고 최신 이미지만 사용하십시오.모든 도구, 응용 프로그램 및 모든 이미지가 최신 상태인지 확인해야 합니다.

정기적인 검사는 Kubernetes 보안의 중요한 부분이므로 이미지 취약성과 OS 패키지 및 타사 런타임 취약성을 식별할 수 있는 스캐너를 사용해야 합니다.이러한 검사 및 보안 검사는 지속적 통합/지속적 배포 (CI/CD) 파이프라인의 일부로 내장되고 자동화되어야 합니다.예를 들어, 쿠버네티스의 검증 어드미션 컨트롤러를 사용하면 배포 전에 이미지를 스캔하지 않았거나 이미지가 90일이 넘은 경우 배포 생성을 거부할 수 있습니다.

최상의 보안 정책은 심층 방어라는 점을 명심하십시오.따라서 컨테이너, 클러스터, 클라우드 또는 코드와 같은 한 영역의 취약성이 프로덕션에 영향을 미치거나 네트워크의 다른 부분에 도달하기 전에 해결할 수 있습니다.

배포 단계

워크로드를 배포하기 전에 Kubernetes 인프라를 안전하게 구성해야 합니다.무엇을 어떻게 배포하고 있는지 알아야 하며, 이를 통해 잠재적 보안 위협이나 위반을 식별하고 이에 대응할 수 있어야 합니다.

배포 대상을 정확히 파악하려면 다음 사항을 이해해야 합니다.

  • 컴포넌트
  • 알려진 취약점
  • 배포될 포드
  • 관련된 모든 클러스터, 네임스페이스 및 노드
  • 권한 있는 상태로 실행할지 여부
  • 어떤 배포와 통신할 것인가

또한 무엇을 액세스할 수 있는지, 배포가 보안 또는 정책 요구 사항을 이미 준수하고 있는지 또는 위반하고 있는지도 알아야 합니다.

여기에서 배포 단계 권장 사항을 구현할 수 있습니다.여기에는 네임스페이스를 사용하여 민감한 워크로드를 격리하여 잠재적 공격을 억제하고, 인증된 사용자가 취한 오류나 악의적 조치의 영향을 제한하고, 다음을 통해 포드와 클러스터 간의 트래픽을 제어하는 것이 포함됩니다. 네트워크 세분화 컨테이너 간 무단 측면 이동을 방지합니다.

일반적으로 컨테이너의 액세스 권한을 포함하여 시스템 내 모든 사람의 액세스 권한을 항상 평가해야 합니다.컨테이너에 필요한 기능을 수행하는 데 필요한 권한과 기능만 제공하십시오.

또한 알 수 없는 소스의 코드를 배포하지 마십시오. 쿠버네티스에서 이는 알려진 레지스트리 또는 권한이 있는 레지스트리의 이미지만 사용하는 것을 의미합니다.개발자 및 프로그래머와 같은 관련 비즈니스 리소스는 배포에 올바른 이름이나 별칭으로 레이블을 지정하는 방법을 알아야 관련 팀이 보안 문제가 발생할 경우 해당 팀이 책임져야 하는 보안 문제를 해결할 수 있습니다.

런타임 단계

런타임 환경에 대한 가시성을 확보하고 런타임 위협이 발생할 때 이를 탐지하고 이에 대응함으로써 Kubernetes의 보안 문제를 관리할 수 있습니다.

여기에는 프로세스 활동, 여러 컨테이너와 컨테이너화된 서비스 간의 네트워크 통신, 컨테이너, 컨테이너화된 서비스, 타사, 클라이언트 또는 외부 서버 간의 통신 모니터링이 포함됩니다.

관찰된 활동과 예상 활동을 비교하여 의심스러운 활동을 식별하고 중지할 수 있습니다.취약성 스캐닝을 실행 중인 배포로 확장하면 이전에는 나타나지 않았던 런타임 취약성을 찾아내는 데 도움이 됩니다.읽기 전용 루트 파일 시스템과 같은 많은 Kubernetes 내장 컨트롤은 소프트웨어 설치가 필요한 공격을 방지할 수 있으므로 네트워크 트래픽을 모니터링하여 불필요하거나 보안되지 않은 통신을 제한해야 합니다.

내장 기능

빌드, 배포 및 런타임 단계의 Kubernetes 보안이 중요하지만 보안 문제는 전체적으로 해결해야 합니다.즉, 먼저 인프라 보안으로 시작한 다음 시스템을 더 폭넓은 관점에서 본 다음 좀 더 세분화된 클러스터/컨테이너/코드 뷰를 통해 네트워크를 확장하거나 축소해야 합니다.

가능하면 항상 쿠버네티스를 최신 버전으로 업데이트하고 쿠버네티스가 데이터 액세스를 위해 사용하는 키-값 저장소인 etcd를 보호하세요.모든 클라이언트 연결이 TLS를 통해서만 제공되도록 하고, 컨테이너 라이프사이클에 최대한 일찍 보안을 적극적으로 포함시키십시오.또한 Kubernetes의 기본 컨트롤을 숙지하세요.

다음은 컨테이너 오케스트레이션을 강화할 수 있는 내장 Kubernetes 기능의 예입니다.

  • 오픈 정책 에이전트 (OPA): OPA는 정책을 코드로 지정할 수 있는 고급 선언적 언어를 통해 정책 적용을 통합합니다.이렇게 하면 소프트웨어에서 정책 의사 결정의 부담을 덜 수 있습니다.OPA를 사용하면 쿠버네티스 API 서버를 재컴파일하거나 재구성할 필요 없이 쿠버네티스 오브젝트에 원하는 사용자 지정 정책을 적용할 수 있습니다.
  • 포드 보안 정책 (PSP):PSP를 사용하여 특정 포드가 시스템에 승인되기 위해 실행해야 하는 조건을 정의합니다.보안 컨텍스트를 사용하여 적용되는 PSP 보안 설정을 통해 특정 포드에 대한 권한 및 액세스 제어를 정의할 수도 있습니다.
  • 역할 기반 액세스 제어 (RBAC): RBAC는 승인 결정을 관리합니다.이를 통해 관리자는 특정 사용자 또는 사용자 집합에 대한 역할 바인딩 및 권한을 통해 액세스 정책을 동적으로 구성할 수 있습니다.
  • 네트워크 정책: 포드 그룹이 서로 통신하고 다른 네트워크 엔드포인트와 통신하는 방법을 제어하는 통신 정책.

쿠버네티스를 올바른 방법으로 활용하기 위해 이러한 도구 및 기타 내장 도구를 언제, 어디서, 어떻게 사용하는지 배우려면 시간이 걸릴 수 있습니다.심층 방어를 제대로 하고, 보안 취약성이 나타날 경우 이를 식별 및 해결하고, 클러스터를 보호하고, 포드 보안을 보장하고, 비용을 줄이는 경우에도 마찬가지입니다. 공격 표면및 네트워크 트래픽 관리.그러나 Kubernetes가 설계된 컨테이너의 확장성, 복제성, 단순화된 관리, 빠른 배포 등의 이점을 누리려면 Kubernetes 보안을 보장하는 것이 중요합니다.

결론

Kubernetes에 처음 진출하는 경우 타사 Kubernetes 전문가가 조직에서 구축하는 애플리케이션의 종류와 필요한 배포 유형을 기반으로 클러스터 오케스트레이션을 신속하게 시작하고 실행할 수 있도록 도와줄 수 있습니다.

자세히 알아보기

방법 알아보기 제로 트러스트 세그멘테이션 쿠버네티스 및 레드햇 OpenShift 플랫폼을 포함한 컨테이너 배포를 보호합니다.

Assume Breach.
Minimize Impact.
Increase Resilience.

Ready to learn more about Zero Trust Segmentation?