HTTP는 어디에나 있습니다. TV도 HTTP를 사용합니다. 휴대폰도, 태블릿도, 자동차도 마찬가지입니다. 네트워크에 연결되는 기기라면 아마 여러분이 모국어를 구사하듯 능숙하게 HTTP를 사용할 것입니다.

HTTP는 유연합니다. 네트워크에서 이웃한 TCP 및 IP와 달리, A 지점에서 B 지점으로 전달할 수 있는 정보에 사실상 제한이 없습니다. IP와 TCP는 사용할 수 있는 값을 비트 단위까지 규정하는 매우 엄격하고 융통성 없는 표준을 준수해야 하지만, HTTP는 전달하는 데이터를 자유롭게 허용합니다. 텍스트. 바이너리. JSON. XML. 암호화된 데이터. 일반 텍스트.
벌꿀오소리처럼 HTTP는 신경 쓰지 않습니다. 무엇이든, 그 이상까지도 실어 나릅니다.
HTTP가 끊임없이 그 유연성을, 말 그대로 유감없이 발휘하는 방식 중 하나는 사용자가 좀처럼 볼 수 없는 헤더에 있습니다. 헤더는 모든 HTTP 요청과 응답에 담기는 메타데이터입니다. 콘텐츠 유형과 콘텐츠 길이부터 인증 토큰, 그리고 원하든 원하지 않든 당신이 누구이며 어디를 다녀왔는지 낱낱이 알려 주는 디지털 흔적까지 온갖 정보를 전달합니다.
이 점은 중요합니다. 컨테이너 분야에서 확인했듯이 HTTP 헤더는 클라이언트와 서비스 간에 데이터를 전송하는 메커니즘일 뿐만 아니라, 빠르게 변화하는 이러한 환경을 매우 효율적으로 확장할 수 있게 해주는 메타데이터를 공유하는 수단으로도 그 활용이 확대되고 있기 때문입니다.
서비스 메시라는 개념과 함께 운영 정보를 전달하는 사용자 지정 HTTP 헤더의 추가가 점점 더 주목받고 있습니다. Buoyant의 블로그 — 선도적인 오픈 소스 서비스 메시 구현체 두 가지 중 하나를 개발한 회사 — 는 단일 HTTP 요청 및 응답 쌍을 구성하는 서비스 간의 매우 복잡한 트랜잭션 집합을 단순화하는 데 도움이 되는 추적 상관관계를 구현하는 데 필요한 텔레메트리를 공유하기 위해 HTTP 헤더에 의존하는 방식을 보여줍니다.
앞서 언급한 블로그 글 전체를 읽고 싶지 않은 분들을 위해 가장 관련성 높은 부분을 소개합니다. 강조 표시는 제가 추가한 것입니다:
Buoyant에서는 linkerd가 제공하는 모든 추가 추적 데이터를 ‘마이크로서비스를 위한 마법의 텔레메트리 가루’라고 표현하곤 하지만, 실제로는 추적 정보를 서로 연결하기 위해 소량의 요청 컨텍스트가 필요합니다. 이 요청 컨텍스트는 linkerd가 요청을 수신할 때 설정되며, HTTP 요청의 경우 linkerd가 요청을 애플리케이션으로 프록시할 때 HTTP 헤더를 통해 전달됩니다. 애플리케이션에서 요청 컨텍스트를 유지하려면 수신된 모든 l5d-ctx-* HTTP 헤더를 수정하지 않고 애플리케이션이 보내는 모든 요청에 포함해야 합니다.
여기서 언급한 사용자 지정 HTTP 헤더는 이처럼 고도로 분산된 시스템에서 텔레메트리를 공유하는 데 사용되는 여러 헤더 중 하나일 뿐이라는 점에 유의해야 합니다. 블로그에서 언급했듯이 l5d-sample 헤더를 사용하여 추적 샘플링 비율을 조정할 수 있습니다. 따라서 이 헤더는 단순히 정보를 공유하는 데만 사용되는 것이 아니라, 시스템에 대한 운영 제어를 제공하는 데에도 사용됩니다.
이 점이 의미하는 바를 잠시 생각해 보세요. HTTP 헤더는 운영 시스템의 동작을 제어하는 데 사용됩니다. 이 점을 기억해 두세요. 몇 단락 뒤에 중요해질 것입니다.
이 경우에는 제어 플레인과 데이터 플레인을 분리하는 대신 두 플레인이 동시에 전송되며, 말하자면 형식과 기능을 구분하는 일은 엔드포인트의 몫입니다. 이 솔루션은 서비스에서 들어오고 나가는 모든 요청이 프록시를 통과하는 서비스 메시 개념을 기반으로 하므로, 이러한 구분은 어렵지 않게 이루어집니다. 프록시는 운영용 HTTP 헤더를 걸러내고 그에 따라 동작한 후, 요청(또는 응답)을 원래의 수신자에게 전달할 수 있습니다. 또한 운영 지침을 추가하고 텔레메트리 정보를 삽입하여 나중에 트레이스를 서로 연결하는 데 도움을 줄 수도 있습니다.
애플리케이션 네트워킹 역시 컨테이너 환경에서 보편화되고 있습니다. 애플리케이션 네트워킹은 예전부터 존재해 왔지만(적어도 프로그래밍 가능한 프록시 분야에 종사하는 사람들에게는 그랬습니다), 유연성에 대한 요구가 커지면서 이제 더욱 빈번하게 활용되고 있습니다. 인그레스 컨트롤러는 본질적으로 프로그래밍 가능한 프록시로, IP 주소나 FQDN뿐만 아니라 주로 HTTP 헤더를 통해 전달되는 애플리케이션별 데이터를 기반으로 라우팅할 수 있게 해줍니다. 버전 관리, 트래픽 조정, 확장 등 인그레스 컨트롤러의 이러한 모든 기능은 HTTP가 HTTP 헤더의 내용에 관여하지 않기 때문에 가능합니다.
안타깝게도 HTTP 헤더 자체도 공격 경로가 될 수 있습니다. 따라서 운영 데이터를 공유하는 데 그치지 않고 운영 동작을 제어하기 위해 HTTP 헤더에 의존할 때 발생할 수 있는 영향을 신중하게 고려해야 합니다. HTTP 헤더는 본질적으로 모두 텍스트 기반인 와일드카드와도 같습니다(정말입니다. BNF를 읽어 보세요). 이 때문에 HTTP 헤더는 수정하기 쉬울 뿐만 아니라, 점점 더 많은 중간 장치와 엔드포인트 장치 및 시스템이 처리하게 되는 악성 명령을 담도록 조작하기도 쉽습니다.
그 사실이 두렵지 않다면, 지금까지 제대로 주의를 기울이지 않은 것입니다.
다행히 HTTP 헤더를 제어 플레인과 데이터 플레인 모두의 수단으로 사용하는 경우는 주로 컨테이너화된 시스템에 국한됩니다. 즉, 일반적으로 조직이 지나치게 관대한 HTTP 헤더의 특성에서 비롯되는 위협을 완화할 수 있도록 해 주는 여러 외부 공개 제어 지점 뒤에 숨겨져 있습니다. 안전한 인바운드 경로(남북 방향)를 결합하는 아키텍처 접근 방식은 악용을 막는 데 필요한 보호 기능을 제공할 수 있습니다. 실제로 그런 시도를 한 사례는 아직 보지 못했습니다. 하지만 HTTP 헤더로 인한 침해 사고를 이미 너무 많이 목격했으므로, 후회하는 것보다 미리 대비하는 편이 낫습니다.
HTTP는 앱, 서비스, 기기의 주요 프로토콜로 자리 잡고 있을 뿐만 아니라, 원격 측정과 추적, 운영 명령 전송에도 활용되며 그 위상이 높아지고 있습니다. 흥미로운 시대이지만, 운영상의 재앙을 피하려면 “무엇이든 할 수 있다”는 생각을 “하지만 안전하게 하자”는 원칙으로 절제해야 합니다.
작성자 소개

Lori MacVittie는 F5 CTO 오피스의 수석 엔지니어이자 최고 에반젤리스트로, 애플리케이션 딜리버리, 자동화 전략 및 인프라 분야에서 깊이 있는 전문성을 보유하고 있습니다. AI 에이전트를 위한 가드레일을 정의하고, 취약한 멀티클라우드 아키텍처를 분석하며, 확장 가능한 시스템의 한계를 탐구하는 등 복잡한 문제를 명확하게 풀어내는 것으로 잘 알려져 있습니다. 애플리케이션 개발, IT 아키텍처, 네트워크 및 시스템 운영 전반에 걸쳐 30년 이상의 업계 경험을 쌓았습니다. F5에 합류하기 전에는 수상 경력이 있는 기술 편집자로 활동했습니다. MacVittie는 컴퓨터 과학 석사 학위를 보유하고 있으며, 보안, 클라우드 및 엔터프라이즈 아키텍처 분야를 아우르는 다수의 저서를 집필한 작가입니다. 또한 보드게임과 비디오 게임을 열정적으로 즐기며, 치즈에 대해서는 거리낌 없이 확고한 견해를 갖고 있습니다.
Lori Mac Vittie의 다른 블로그 게시물관련 블로그 게시물
성평등을 향한 여정: 사이버 보안 분야에서 성공적인 커리어를 개척하는 방법에 관한 Jenn Gile과의 Q&A
F5의 ‘성평등을 향한 여정’ 시리즈 네 번째 Q&A에서는 Rachael Shah와 NGINX 제품 마케팅 책임자 Jenn Gile이 사이버 보안 직종에 대한 오해를 바로잡고, 사이버 보안 분야의 성별 격차를 해소하기 위한 조언과 그 이점에 대해 이야기합니다.
TLS 검사에서 피터 파커 원칙 다루기
“큰 힘에는 큰 책임이 따른다.” 볼테르와 처칠도 이와 비슷한 말을 남겼지만, 이 문구는 스파이더맨 코믹스에서 벤 삼촌의 말로 가장 널리 알려져 있습니다. 물론 이 문구가 문화적으로 널리 통용되는 이유 중 하나는 TLS 검사를 비롯해 수많은 상황과 주제에 적용할 수 있기 때문입니다.
Venafi와 F5를 통한 머신 아이덴티티 보호
‘머신 아이덴티티’란 간단히 말해 자동화된 프로세스가 자신의 신원을 식별할 수 있도록 하고, 다른 자동화 시스템과 프로세스가 관련 리소스에 적절한 수준의 접근 권한을 부여하도록 하는 방법을 의미합니다. 이 개념 자체는 새로운 것이 아닙니다. 비교적 새로운 점은 이를 구현해야 하는 규모입니다.
마이너와 미니언: 데이터 유출만이 비용을 초래하는 것은 아닙니다
물론 데이터 유출은 더 큰 비용을 초래할 수 있고(적어도 지금은), 실패 사실을 세상에 드러낼 수밖에 없게 합니다(통지 의무가 있으니까요). 하지만 보안을 단순히 데이터 노출 문제로만 봐서는 안 됩니다. 요즘은 데이터가...
내 클라우드에서 나가!
F5의 Jay Kelley가 전하는 최신 소식에는 Microsoft Office 365용 신규 ID 및 액세스 솔루션을 배포할 때 고려해야 할 사항이 정리되어 있습니다.
Shift(웹 앱) 보안 레터
웹 앱 보안을 개발 초기 단계로 앞당기세요. F5 블로그에서 DevOps 파이프라인 초기에 보안을 통합하여 취약점을 예방하고 시간을 절약하는 방법을 알아보세요.