HBONE

**HBONE**(またはHTTP-Based Overlay Network Environment)は、Istioコンポーネント間で使用されるセキュアなトンネリングプロトコルです。HBONEはIstio固有の用語です。これは、単一のmTLS暗号化ネットワーク接続(暗号化トンネル)を介して、多くの異なるアプリケーション接続に関連するTCPストリームを透過的に多重化するためのメカニズムです。

Istioにおける現在の実装では、HBONEプロトコルは3つのオープン標準で構成されています。

HTTP CONNECTはトンネル接続の確立に使用され、mTLSはその接続のセキュリティと暗号化に使用され、HTTP/2はその単一のセキュアで暗号化されたトンネルを介してアプリケーション接続ストリームを多重化し、追加のストリームレベルのメタデータを送信するために使用されます。

セキュリティとテナント

mTLS仕様で強制されているように、各基盤となるトンネル接続には一意の送信元と一意の宛先IDが必要です。これらのIDは、その接続の暗号化を確立するために使用されます。

これは、同じ宛先IDへのHBONEプロトコル経由のアプリケーション接続が、同じ共有された暗号化され保護された基盤となるHTTP/2接続を介して多重化されることを意味します。事実上、その基盤となる専用接続が複数のアプリケーションレベルの接続を処理している場合でも、各一意の送信元と宛先には、専用のセキュアなトンネル接続が必要です。

実装の詳細

Istioの慣例により、ztunnelおよびHBONEプロトコルを理解する他のプロキシは、TCPポート15008でリスナーを公開します。

HBONEはHTTP/2、HTTP CONNECT、およびmTLSの組み合わせに過ぎないため、HBONE対応プロキシ間を流れるHBONEトンネルパケットは次の図のようになります。

HBONE L3 packet format
HBONE L3パケットフォーマット(図は原文を参照ください。日本語訳には図を再現できません)

HBONEトンネルの重要な特性は、基盤となるアプリケーショントラフィックストリームを何らかの形で変更することなく、元のアプリケーションリクエストを透過的にプロキシできることです。つまり、アプリケーションリクエストを変更することなく、接続に関するメタデータを宛先プロキシに伝えることができます。たとえば、Istio固有のヘッダーをアプリケーショントラフィックに追加する必要がなくなります。

アンビエントモードと標準の進化に伴い、HBONEとHTTPトンネリング(UDPなど)の追加のユースケースは今後検討されます。

この情報は役に立ちましたか?
改善のための提案はありますか?

ご意見ありがとうございました!