HBONE

HBONE

HBONE(HTTP-Based Overlay Network Environment)은 Istio 컴포넌트들 사이에서 사용되는 보안 터널링 프로토콜이에요. HBONE은 Istio 전용 용어로, 서로 다른 많은 애플리케이션 연결에 관련된 TCP 스트림을 하나의 mTLS로 암호화된 네트워크 연결, 즉 암호화된 터널 안에서 투명하게 멀티플렉싱하는 메커니즘이에요.

출처: Istio 문서

본문

Istio 안에서의 현재 구현에서 HBONE 프로토콜은 세 가지 공개 표준을 조합해요:

HTTP CONNECT는 터널 연결을 맺는 데 사용되고, mTLS는 그 연결을 보호하고 암호화하는 데 쓰이며, HTTP/2는 그 하나의 보안·암호화된 터널 위에서 애플리케이션 연결 스트림을 멀티플렉싱하고 추가적인 스트림 수준 메타데이터를 전달하는 데 사용돼요.

보안과 테넌시 (Security and tenancy)

mTLS 스펙이 강제하듯, 각각의 기본 터널 연결은 고유한 소스와 고유한 목적지 신원을 가져야 하고, 그 신원들이 그 연결의 암호화를 맺는 데 사용되어야 해요.

즉, HBONE 프로토콜을 통한 같은 목적지 신원으로의 애플리케이션 연결들은 같은 공유·암호화·보안처리된 기본 HTTP/2 연결 위에서 멀티플렉싱돼요. 결과적으로 각 고유한 소스와 목적지는 자기만의 전용 보안 터널 연결을 가져야 해요. 설령 그 기본 전용 연결이 여러 애플리케이션 수준 연결을 처리한다 하더라도 말이죠.

구현 세부사항 (Implementation details)

Istio 관례에 따라, ztunnel과 HBONE 프로토콜을 이해하는 다른 프록시들은 TCP 포트 15008에서 리스너를 노출해요.

HBONE은 단지 HTTP/2, HTTP CONNECT, mTLS의 조합이기 때문에, HBONE 지원 프록시들 사이를 흐르는 HBONE 터널 패킷은 아래 그림처럼 생겼어요.

HBONE 터널의 중요한 성질은, 원래 애플리케이션 요청이 어떤 식으로도 기본 애플리케이션 트래픽 스트림을 바꾸지 않은 채 투명하게 프록시될 수 있다는 점이에요. 이는 애플리케이션 요청을 바꾸지 않고도 연결에 대한 메타데이터를 목적지 프록시로 전달할 수 있다는 뜻이에요. 예를 들어 애플리케이션 트래픽에 Istio 전용 헤더를 붙일 필요가 없어지는 거죠.

UDP 같은 HBONE과 HTTP 터널링의 추가적인 사용 사례는 앰비언트 모드와 표준이 발전함에 따라 앞으로 더 연구될 거예요.

더 알아보기 (Learn more)