033. Kubernetes RBAC 미비 공격 시나리오 — 파드 침투에서 클러스터 장악까지
RBAC이 제대로 설정되지 않은 클러스터에서 파드 하나를 침투한 공격자가 전체 클러스터를 장악하는 과정을 단계별로 설명한다. 각 단계에서 공격이 성립하는 조건과 이를 차단하는 방어 포인트를 함께 정리한다.
RBAC이 제대로 설정되지 않은 클러스터에서 파드 하나를 침투한 공격자가 전체 클러스터를 장악하는 과정을 단계별로 설명한다. 각 단계에서 공격이 성립하는 조건과 이를 차단하는 방어 포인트를 함께 정리한다.
IP 주소는 인터넷에서 장치를 식별하는 주소다. CIDR은 IP 주소 범위를 표현하는 표기법으로, VPC 서브넷 설계나 NetworkPolicy, 방화벽 규칙을 작성할 때 매일 마주친다. /24, /16이 실제로 어떤 의미인지, 사설 IP 대역이 왜 따로 있는지를 설명한다.
DNS는 도메인 이름을 IP 주소로 변환하는 분산 데이터베이스다. api.example.com에 요청을 보낼 때 실제로 어떤 일이 일어나는지, A/CNAME/MX 레코드가 각각 무엇인지, TTL이 배포와 장애 복구에 어떤 영향을 주는지 설명한다.
NAT(Network Address Translation)는 패킷의 출발지 또는 목적지 IP를 변환하는 기술이다. 사설 IP를 가진 서버가 인터넷과 통신할 수 있는 것, VPC의 private 서브넷이 외부로 나갈 수 있는 것이 모두 NAT 덕분이다. SNAT와 DNAT의 차이, Connection tracking, 그리고 k8s Service가 내부적으로 NAT를 어떻게 활용하는지 설명한다.
REST가 자원을 중심으로 API를 설계한다면, 어떤 API는 동작을 주고받는 편이 더 자연스럽다. JSON-RPC가 무엇인지, RPC라는 모델이 REST와 어떻게 다른지, 메시지 구조와 오류 규약은 어떻게 생겼는지, 전송 수단에 묶이지 않는다는 성격 덕분에 MCP·LSP·블록체인 노드에서 왜 쓰이는지를 설명한다.
HTTP나 JSON-RPC 같은 프로토콜은 무슨 메시지를 주고받을지 정하지만, 그 메시지를 실제로 실어 나르는 일은 전송 계층이 맡는다. TCP가 어떻게 신뢰성을 보장하는지, UDP는 왜 그것을 포기하고 빨라졌는지, QUIC은 어떻게 UDP 위에서 TCP의 신뢰성을 되찾으면서 머리 막힘과 느린 연결 수립까지 해결했는지를 설명한다.
TCP는 데이터를 정확히 전달하지만 보호하지는 않는다. TLS가 어떻게 TCP와 HTTP 사이에 끼어 통신을 암호화하는지, 기밀성·무결성·인증이라는 세 가지 보장이 무엇인지, 대칭키와 비대칭키를 왜 함께 쓰는지, 인증서와 신뢰 사슬은 어떻게 사칭을 막는지, 그리고 HTTPS와 wss가 결국 같은 TLS인 이유를 설명한다.
데이터와 트래픽이 한 대의 서버가 감당할 수 있는 한계를 넘으면 어떻게 할까. 샤딩이 무엇인지, 복제와 어떻게 다른지, 샤드 키와 분할 방식(범위·해시·디렉토리)이 무엇인지, 핫스팟과 리샤딩과 교차 샤드 조인 같은 대가가 왜 따라오는지, 그리고 언제 샤딩을 선택해야 하는지를 설명한다.
마이크로서비스에서는 요청 하나가 여러 서비스를 거쳐 처리된다. 이 흐름을 끝에서 끝까지 추적하려면 서비스 경계를 넘어 추적 정보를 전달해야 한다. W3C Trace Context가 무엇인지, traceparent와 tracestate 헤더가 어떻게 생겼는지, 전파(propagation)가 어떻게 일어나는지, 그리고 이 표준이 왜 OpenTelemetry의 토대가 됐는지를 설명한다.