개요
Kubernetes의 CNI 플러그인으로 유명한 Calico.
Calico를 사용하면 어떤 점이 좋을지, Calico 솔루션의 종류에는 어떤 것이 있는지, 어떻게 시작하면 될 지 간단 정리해보았습니다.
들어가기 전, 알아두면 좋을
클라우드 네이티브 아키텍처
전통적인 아키텍처와의 차이점
전통적인 아키텍처
- 호스트 또는 가상머신 단위로 구성
- 워크로드는 대부분 정적이며, 라이프사이클이 긴 편
- perimeter 기반의 보안에 의존
- 전통적인 모니터링 방식 사용
클라우드 네이티브 아키텍처
- 컨테이너 단위로 구성
- 워크로드는 대부분 동적이고 라이프사이클이 짧은 마이크로서비스로 구성
- perimeter 기반의 보안으로는 충분하지 않음
- 분산형 애플리케이션의 모니터링 방안 필요
(쿠버네티스 기반) 클라우드 네이티브 아키텍처의 문제점
보안 문제점
- Pod/Service 수준의 ingress/egress 접근제어 어려움
- CSP 사 마다 서로 다른 보안 정책 관리 방식을 채택하고 있으므로, 보안 정책 통합 관리가 어려움
- 동적인 특성(자주 변경되는 IP 등)으로 인한 정책 적용의 어려움
- East-West 제어의 부재로 인해 파드 간 통신 제어 어려움
- 기존에 사용하던 방화벽 또는 SIEM과의 연동 어려움
모니터링 문제점
- 가시성 미확보로 인한 상황 파악의 어려움
- 세분화된 마이크로서비스에 대한 추적 어려움
- 컨테이너 추상화 및 다양한 컴포넌트로 인해 기존 툴로 분석하기 어려움
Calico
Calico Project
- Tigera사가 개발/운영하고 있는 오픈소스 프로젝트로 쿠버네티스에서 가장 많이 사용되는 CNI 플러그인
- 대부분의 CSP 및 쿠버네티스 배포판에서 지원되며, 쿠버네티스 외에 VM이나 베어메탈 수준까지 지원
- 기본적인 Kubernetes NetworkPolicy를 확장하여 보안을 강화
- Rancher RKE, IBM Cloud, Mirantis MKE 등에서 디폴트 CNI 플러그인으로 채택
Calico Cloud/Enterprise
- Calico Cloud/Enterprise는 Calico OSS 기반으로 구축된 솔루션으로, 네트워크 정책 및 Observability, 보안 컴플라이언스 등을 제공
- Calico Cloud는 SaaS로 제공되며, Calico Enterprise는 온프레미스 또는 클라우드에 직접 설치하여 사용하는 Self-managed 서비스
Calico Cloud 구조
Calico Enterprise 구조
Calico Cloud/Enterprise의 특장점
🧭 North-South Control
Egress 접근 제어
쿠버네티스는 외부의 다양한 리소스에 안전하게 접근하기 위해 Egress 트래픽을 제어할 필요가 있으나, 쿠버네티스에서는 IP 등이 고정되어 있지 않으므로, FQDN 또는 IP 주소 기반의 전통적인 접근제어 방식을 사용하기는 어려운 점이 있다.
Calico에서는 3가지 방식으로 Egress 접근 제어를 하고 있다.
1) DNS Policy
- 클러스터 외부 접근 제어를 위해 Calico 보안 정책에서 도메인 이름 사용을 활성화
- Pod 별 표준 Label을 기반으로 외부 접근 제어
2) Egress Gateway
- 각 네임스페이스에 Routable IP를 할당
- 네임스페이스에 속한 Pod의 모든 Egress 트래픽에 대해 할당된 IP 주소로 NAT
- 접근제어 정책을 클러스터 외부에서 정의 가능
3) AWS SG 통합
- Annotation을 추가하여 AWS SG와 통합
- ingress/egress 모두 제어 가능
기존 방화벽 및 SIEM 연동
방화벽이나 SIEM 등 기존에 사용하던 시스템과 절차를 활용하여 쿠버네티스 워크로드를 보호할 수 있다.
기존의 방화벽 규칙은 정적인 source 및 destination IP 주소가 필요하지만, 쿠버네티스에서는 IP가 계속해서 바뀌기 때문에 규칙 적용이 어렵다는 문제점이 있다.
Calico에서는 다음과 같은 방법으로 문제를 해결하고 기존 시스템과 통합을 가능하게 한다.
1) Calico Egress Gateway를 통하여 방화벽과 통합
- 네임스페이스에 Routable IP를 할당하고 네임스페이스 내 모든 Pod에 해당 IP를 할당하여 방화벽 규칙에서 IP 사용 가능
- 쿠버네티스 리소스가 방화벽 뒷단의 엔드포인트에 접근하도록 함
2) 방화벽 관리시스템을 쿠버네티스로 확장
- 방화벽 규칙을 쿠버네티스 Network Policy로 변환하여, 보안팀이 쿠버네티스 또는 YAML 등에 대해 학습할 필요 없이 전통적인 워크로드와 같이 Segmentation할 수 있음
🚅 East-West Control
클라우드 환경에서는 클라우드 서비스 간 공통 세그멘테이션 모델이 없다는 한계점이 있다. 또한, 클라우드 워크로드는 기존의 워크로드에 비해 빠르게 확장되고 동적으로 변화하지만 기존의 세그멘테이션 도구들은 정적인 워크로드에 특화되어 설계 되어있다. 그 뿐 아니라 기존의 세그멘테이션 도구들은 애플리케이션의 확장성을 지원하지 못해 배포시에 지연이 발생하거나 서비스 중단으로 이어지는 경우도 있을 수 있다.
Calico에서는 Microsegmentation을 통해서 위와 같은 문제를 해결하였다.
Microsegmentation
- 모든 클라우드, Host, VM, 컨테이너 등에 공통으로 적용할 수 있는 세그멘테이션 모델을 통해 단일 관리포인트를 마련
- 세그멘테이션을 위해 Label을 사용하여, 새로운 워크로드를 위해 정책을 변경할 필요가 없음
- 빠른 오토스케일링을 지원하여 워크로드 변화에 따른 서비스 장애 가능성을 제거
🚨 Security Compliance
기존의 워크로드와 마찬가지로 쿠버네티스 상의 워크로드도 기존 조직의 보안 규제사항을 준수해야 하지만, 기존의 규제 도구는 쿠버네티스 상의 워크로드에 적합하지 않다. 또한, 규제 준수를 입증하기 위한 리포트 등을 제공하는 것이 번거롭다는 점도 문제가 될 수 있다. 침해 관점에서는, 쿠버네티스는 개방적인 속성으로 인해 침해의 타겟이 되고 있지만, 전통적인 침입탐지 시스템은 쿠버네티스 워크로드에 적용하기에는 한계점이 있다.
Calico에서는 위와 같은 문제를 해결하기 위해 Compliance 리포트 기능을 제공하고, IDS for Kubernetes를 제공한다.
Security Compliance Report
- 감사에 필요한 증빙 보고서를 쉽게 생성 및 확인 가능하도록 대시보드와 리포트를 제공
- 내/외부 규제 요구사항(PCI, GDPR 등) 준수 여부를 확인할 수 있는 컴플라이언스 보고서 및 보고서에 대한 Audit 로그를 제공
IDS for Kubernetes
- Calico 침입탐지 시스템은 악의적인 활동의 소스를 찾아내고 머신러닝을 통해 비정상동작을 탐지
- 클러스터 외부의 악의적인 트래픽 소스를 확인할 수 있는 화면을 제공
- 클러스터 내에 미끼 역할을 하는 Honeypods를 설치
- 주요 SIEM과의 통합을 통해 정확도가 높은 경고를 발생시킴
📊 Observability
쿠버네티스 내에서 발생한 문제 해결을 위해 클러스터 전반에 걸친 가시성 확보가 필요하다. 서비스가 서로 어떻게 통신하고 있으며, 어느 서비스가 문제를 발생시키고 있는지 등 클러스터 내 통신에 대한 가시성 확보를 위해 Calico는 다양한 도구를 제공한다.
1) Dynamic Service Graph
- 세부 서비스 통신 현황을 동적으로 시각화하여 클러스터 내에서 서비스가 어떻게 통신하고 운영되는지 파악할 수 있음
- 문제 발생 시에는 경고를 발생시키고 Service Graph 상에 표시
- 필터링을 통해 원하는 리소스만 확인할 수 있음
2) Application Level Observability
기존의 데브옵스 팀은 1) 모니터링이 필요한 부분 정의 2) 문제의 영향도 이해 및 해결 방안 파악 3) 애플리케이션 계층 데이터 보호를 위한 방법 고민하는 과정으로 문제를 해결
- 대부분 서비스 간의 트래픽을 효과적으로 파악할 수 있음
- Kibana와 연동하여 L7 네트워크 가시성 제공 및 HTTP 등 어플리케이션 수준 트래픽에 대한 플로우 로그 제공
- 모든 데이터는 WireGuard를 통해 암호화됨
3) Flow Visualizer
- 기존에도 서비스 메시를 사용하여 서비스 흐름을 가시화할 수 있었으나, 서비스 메시를 사용하는 경우 사이드카 컨테이너가 추가되기 때문에 관리대상 컨테이너가 증가하고, 시스템 리소스 사용률도 증가
- 별도 사이드카 추가하지 않아도 파드나 네임스페이스에 대한 네트워크 흐름 표현 가능
- 빠르게 문제 원인을 파악할 수 있도록 쿠버네티스의 플로우 로그를 제공
- 대화형 방식의 UI를 통해 네트워크 플로우 파악 가능
- 필터링을 통해 필요한 플로우만 확인할 수 있고, 해당하는 팀에 특정 플로우만 보여줄 수 있도록 RBAC 지원
4) Dynamic Packet Capture
- 쿠버네티스 클러스터에서 네트워크 트래픽을 캡쳐하기 위한 단일 또는 다중 워크로드 엔드포인트 식별
- 수동 프로세스를 제거하였기 때문에, 패킷 캡쳐 및 분석을 수행하고 문제를 해결하는데 필요한 노력과 시간 감소
- 생성된 PCAP 파일은 클라우드 내에 저장ㅍ
5) DNS Dashboard
- 전체 DNS 쿼리 및 응답수 확인, 레코드 타입으로 쿼리 및 응답 분류 가능
- 마이크로 서비스 및 애플리케이션의 연동 이슈에 대해 DNS가 그 원인인지 파악
- 침해된 도메인 파악에 도움
참고자료
Tigera: https://www.tigera.io/
Calico Enterprise 소개 및 데모: https://youtu.be/I_d12dAVI_s
AWS MODERNIZATION WITH CALICO: https://tigera.awsworkshop.io/