보안정보

전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.

클라우드 네이티브 보안

2024.03.06

705

01. 클라우드 네이티브 정의

최근 클라우드 환경으로의 전환이 가속화되면서, 클라우드 보안관리를 위탁하고자 하는 기업 및 기관들이 빠르게 늘어나고 있다. 이러한 조직들은 대부분 클라우드 역시 기존 온프레미스(On-Premise)상의 보안관리 환경과 동일하게 유지하고자 하는 성향이 강하여, 인프라 내 자원은 클라우드이지만 이를 구성하고 있는 보안 시스템들은 서드 파티(3rd party)인 경우가 많다. 기존 환경의 익숙함과 서드 파티 시스템의 전문성에 기인해 클라우드 내에서도 그 효과가 동일하게 유지될 것이라는 막연한 기대 때문이다. 그러나 이러한 기대에는 '보완'이 필요하다. 서드 파티 시스템들의 전문성(knowledge, Update 등)은 온프레미스 환경에서 입증된 결과다. 이에 클라우드 내 가용성 측면에서는 충분한 테스트가 이뤄져야 한다. 일각에서는 ‘클라우드 네이티브’ 시스템으로 인프라 구성을 변경하는 곳 또한 증가하고 있다. 그렇다면 클라우드 네이티브란 무엇일까?

클라우드 네이티브라는 용어는 클라우드 인프라 모델에서 제공하는 분산된 컴퓨팅 자원을 활용하기 위하여 애플리케이션을 구축 및 실행하는 개념을 의미한다.

클라우드 네이티브 앱은 클라우드가 제공하는 확장성, 탄력성, 복원성, 유연성을 활용하도록 초점이 맞추어져 있다.

CNCF(Cloud Native Computing Foundation)가 정의한 바와 같이 클라우드 네이티브 기술은 조직이 퍼블릭, 프라이빗, 하이브리드 클라우드에서 확장 가능한 애플리케이션을 구축하고 실행할 수 있도록 지원한다.

컨테이너, 마이크로 서비스, API(Application Programming Interface)와 같은 기능은 이러한 접근 방식을 가장 잘 보여주고 있는 사례라고 할 수 있다.
이러한 기능들은 탄력적이고 관리가 용이하며 관찰이 가능한 느슨하게 결합된 시스템도 사용할 수 있도록 해주며, 이를 통해 엔지니어가 변경 및 설정 오류 등을 쉽게 확인이 가능하다.

02. 클라우드 네이티브 아키텍쳐

클라우드 네이티브 아키텍처는 기존 온프레미스 환경에서 벗어나 오롯이 클라우드에만 존재하도록 특별히 설계된 애플리케이션 또는 전체 인프라 환경을 의미한다.

성공적인 클라우드 전용 아키텍처는 유지 보수가 용이하고 차세대 클라우드의 지원을 받는 동시에 비용이 효율적이고 자가 복구가 가능한 전제조건이 필요하다. 클라우드 네이티브 아키텍처는 레거시 시스템(legacy system)에 비하여 물리적 서버에 의존하지 않고도 더 높은 수준의 유연성을 제공하고 있다.

마이크로 서비스와 서버리스 함수는 클라우드 네이티브 아키텍처에서 중심 역할을 수행하고 있다. 마이크로 서비스는 클라우드 전용 애플리케이션 아키텍처의 핵심이며, 클라우드로 전환하는 기업의 필수 도구가 되었다. 마이크로 서비스는 애플리케이션을 여러 개의 독립된 서비스로 배열하며 각 서비스는 특정 기능을 제공하고 있다. 많은 소프트웨어 회사들이 마이크로 서비스를 사용하고 있는데 이는 마이크로 서비스가 데브옵스(DevOps)를 지원하고, 유연성, 확장성, 비용 절감 등의 효과를 동반하고 있기 때문이다.

클라우드 네이티브 마이크로 서비스는 API를 통해 서로 통신하며 이벤트 기반 구조를 사용하여 각 애플리케이션의 전반적인 성능을 향상시킨다.

03. CNCF란?

CNCF(Cloud Native Computing Foundation)는 2015년 12월 리눅스 재단 소속의 비영리 단체다. 첫 번째 프로젝트로 쿠버네티스(Kubernetes)를 구글에서 기증하였으며, 클라우드 네이티브 컴퓨팅 환경에서 필요한 다양한 오픈소스 프로젝트를 추진하고 관리하고 있는 단체이다. CNCF 멤버로는 인텔(Intel), ARM(Advanced RISC Machine), 알리바바 클라우드(Alibaba Cloud), 애저(Azure), 구글(Google), 레드햇(Red Hat), SAP(Systems Applications and Products), VMware(브이엠웨어) 등등 500개 이상의 글로벌 기업들이 활동하고 있다. CNCF는 다음과 같이 클라우드 네이티브 기술을 정의하고 있다. 클라우드 네이티브 기술을 사용하는 조직은 현대적인 퍼블릭, 프라이빗, 그리고 하이브리드 클라우드와 같이 동적인 환경에서 확장성 있는 애플리케이션을 만들고 운영할 수 있다.

컨테이너, 서비스 메시, 마이크로서비스, 불변의 인프라스트럭처, 그리고 선언적 API가 전형적인 접근 방식에 해당한다. 이 기술은 회복성이 있고, 관리 편의성을 제공하며, 가시성을 갖는 느슨하게 결합된 시스템을 가능하게 한다. 견고한 자동화와 함께 사용하면, 엔지니어는 영향이 큰 변경을 최소한의 노력으로 예측 가능하게 수행할 수 있다. CNCF는 벤더 중립적인 오픈소스 프로젝트 생태계를 육성하고 유지함으로써 해당 패러다임 채택을 촉진한다.
즉, 클라우드 네이티브 서비스는 컨테이너화되는 오픈소스 소프트웨어를 사용하는 것을 의미하며, 클라우드 네이티브 환경에서 애플리케이션은 컨테이너로 패키징 되고 오케스트레이션을 통해 각 컨테이너가 스케줄링 및 관리가 되어 리소스 사용률을 최적화하고, 마이크로 서비스 구조를 통해 애플리케이션의 민첩성과 유지 관리의 편의성을 높이는 것에 목적을 두고 있다.

클라우드 네이티브 기술로는 컨테이너, 서비스 메시, 마이크로 서비스 등이 있으며, 2025년까지 새로운 앱의 90% 이상이 클라우드 네이티브 환경으로 구현될 것이라고 예상하고 있다.

[그림 1] 클라우드 네이티브의 핵심 요소 (출처: Pivotal)

CNCF는 매년 클라우드 네이티브 생태계와 관련된 통계정보를 제공하고 있다. 그중 쿠버네티스 관련 통계조사 결과를 살펴본 결과 ‘쿠버네티스는 전 세계적으로 주(MAIN) 기술로 자리매김하고 있다’로 조사되었다.

[그림 2] 쿠버네티스 사용 현황 통계 (출처: CNCF(Cloud Native Computing Foundation))

전 세계 조직의 무려 96%가 이미 쿠버네티스를 사용 중이거나 검토 중인 것으로 확인되었으며, 지역적으로 흥미로운 점은 신흥 기술 허브로 불리는 아프리카가 유럽, 북미 등 기존 기술 센터보다 프로덕션 채택 비중이 더욱 높은 것으로 나타나고 있다.

추가적으로, 응답자의 93%는 현재 컨테이너를 사용 중이거나 사용할 계획이라고 답변하였으며, 이러한 증가 추이는 매년 지속되고 있는 것을 확인할 수 있다.

04. 클라우드 네이티브 보안

클라우드 네이티브 보안의 4C는 클라우드(Cloud), 클러스터(Cluster), 컨테이너(Container)와 코드(Code)이다.

1) 클라우드

여러 면에서 클라우드(또는 공동 위치 서버, 또는 기업의 데이터 센터)는 쿠버네티스 클러스터 구성을 위한 신뢰 컴퓨팅 기반(trusted computing base)이다. 클라우드 계층이 취약하거나 취약한 방식으로 구성된 경우, 이 기반 위에서 구축된 구성 요소가 안전하다는 보장은 없다. 각 클라우드 공급자는 해당 환경에서 워크로드를 안전하게 실행하기 위한 보안 권장 사항을 제시한다.

[표 1] 워크로드를 안전하게 실행하기 위한 보안 권장 사항 (출처 : Kubernetes)

2) 클러스터

애플리케이션의 공격 영역에 따라, 보안의 특정 측면에 중점을 둘 수 있다. 예를 들어, 다른 리소스 체인에 중요한 서비스(서비스 A)와 리소스 소진 공격에 취약한 별도의 작업 부하(서비스 B)를 실행하는 경우, 서비스 B의 리소스를 제한하지 않으면 서비스 A가 손상될 위험이 높다. 다음은 쿠버네티스에서 실행되는 워크로드를 보호하기 위한 보안 문제 및 권장 사항이 나와 있는 표이다.

[표 2] 워크로드를 보호하기 위한 보안 문제 및 권장 사항 (출처 : Kubernetes)

3) 컨테이너

[표 3] 워크로드를 보호하기 위한 보안 문제 및 권장 사항 (출처 : Kubernetes)

4) 코드

애플리케이션 코드는 가장 많은 제어를 할 수 있는 주요 공격 영역 중 하나이다. 애플리케이션 코드 보안은 쿠버네티스 보안 주제를 벗어나지만, 애플리케이션 코드를 보호하기 위한 권장 사항은 다음과 같다.

[표 4] 애플리케이션 코드를 보호하기 위한 권장 사항 (출처 : Kubernetes)