목록k8s (55)
근묵자흑
Kubernetes는 선언적(Declarative) 리소스 관리를 기반으로 동작합니다. 사용자가 원하는 상태를 정의하면 시스템이 해당 상태를 유지합니다. 이 동작을 담당하는 것이 바로 Controller입니다.이 글에서는 Controller 패턴의 개념과 구현 방법을 실제 테스트 결과와 함께 정리하고, 최신 동향도 확인해 보겠습니다. Controller 개요문제Kubernetes는 범용 오케스트레이션 플랫폼이므로 모든 애플리케이션 요구사항을 기본 기능으로 충족하지 못합니다. 플랫폼을 수정하지 않고 기능을 확장할 방법이 필요합니다.해결책Kubernetes의 이벤트 기반 아키텍처를 활용하여 커스텀 Controller를 작성합니다. Controller는 리소스 상태 변경을 감시하고, 현재 상태를 원하는 상태에..
2022년 보안 연구에서 약 100만 개의 Kubernetes 인스턴스가 잘못된 설정으로 인해 인터넷에 노출되어 있었다는 조사 결과가 있습니다. 클라우드 인프라와 컨테이너화에 대한 의존도가 높아지면서 Access Control 설정의 중요성이 커지고 있습니다.이 글에서는 Kubernetes의 Access Control 패턴을 다룹니다. 기본적인 인증/인가 개념부터 API Server의 내부 로직, etcd 저장 방식 등을 다룹니다.문제 정의보안의 핵심에는 두 가지 개념이 있습니다.인증(Authentication) 은 요청의 주체가 누구인지 식별하고, 승인되지 않은 행위자의 접근을 방지합니다.인가(Authorization) 는 리소스에 대해 어떤 작업이 허용되는지 권한을 결정합니다.잘못 구성된 접근 제어는..
쿠버네티스에서 실행되는 애플리케이션은 데이터베이스 연결 정보, API 키, 인증 토큰 등 민감한 설정 데이터를 필요로 합니다. 이러한 기밀 정보를 안전하게 저장하고 사용하는 것은 보안의 핵심 과제입니다. 이 글에서는 "Kubernetes Patterns" 책의 Chapter 25 "Secure Configuration" 패턴을 기반으로, 쿠버네티스 환경에서 민감한 설정 데이터를 안전하게 관리하는 5가지 솔루션을 테스트 결과와 함께 살펴봅겠니다.1. 문제 정의: Kubernetes Secret은 정말 안전한가?1.1 Kubernetes Secret의 구조적 한계Kubernetes Secret은 민감한 정보를 저장하기 위한 기본 리소스입니다. 하지만 이름과 달리 Secret은 기본적으로 암호화되지 않고 Ba..
애플리케이션 레벨 방화벽 구현1. 개요Kubernetes 클러스터는 기본적으로 플랫 네트워크(Flat Network) 구조를 사용합니다. 이 구조에서는 클러스터 내 모든 Pod가 네임스페이스와 관계없이 서로 통신할 수 있습니다. 개발 환경에서는 편리하지만, 프로덕션 환경에서는 보안 문제를 야기할 수 있습니다. Network Segmentation 패턴은 NetworkPolicy와 같은 Kubernetes 리소스를 활용하여 Pod 간 통신을 제어하는 방법을 제시합니다. 이를 통해 보안 침해 시 피해 범위(blast radius)를 제한하고, 워크로드 간 격리를 구현할 수 있습니다. 이 글에서는 Calico와 Cilium 두 가지 CNI 환경에서 직접 테스트한 결과를 바탕으로 Network Segmentat..
컨테이너 프로세스 격리와 최소 권한 원칙Kubernetes 환경에서는 정적 코드 분석, 취약점 스캐닝, 이미지 검사를 수행하더라도 런타임에 새로운 취약점이 발견되거나 제로데이 공격이 발생할 수 있습니다. Process Containment 패턴은 런타임 프로세스 수준의 보안 제어를 통해 "컨테이너 내부에서 발생한 침해가 컨테이너 외부로 확산되지 않도록" 하는 방어 메커니즘입니다. 이 패턴의 핵심 원칙은 최소 권한(Principle of Least Privilege)입니다. 프로세스가 작업 수행에 필요한 최소한의 권한만 보유하도록 제한하여, 보안 침해 발생 시 공격자가 수행할 수 있는 작업을 제한합니다. 컨테이너는 단순한 패키징 포맷이나 리소스 격리 메커니즘이 아니라, 적절히 설정되면 보안 울타리(secu..
Configuration Template 패턴은 애플리케이션 시작 시점에 설정 템플릿을 처리하여 완전한 설정 파일을 생성하는 방식입니다. 템플릿에는 환경에 따라 달라지는 값들을 파라미터로 정의하고, 런타임에 실제 값을 주입하여 최종 설정 파일을 만들어냅니다. 이 패턴은 Configuration Resource 패턴(ConfigMap, Secret)의 상위 개념으로, 복잡하고 큰 설정 파일을 다룰 때 특히 유용합니다. Kubernetes Patterns 책에서 강조하듯이, 이 패턴의 핵심 목적은 DRY(Don't Repeat Yourself) 원칙을 설정 관리에 적용하는 것입니다. 환경별로 90% 이상 동일한 대규모 설정 파일을 각각 별도의 ConfigMap으로 관리하면 유지보수 부담이 커지고 설정 드리프..