用語辞典・プライバシー・認証

プロキシ

プロキシとは

プロキシは、クライアントと接続先の間で要求や応答を中継するサーバーや機能です。英語ではproxy(プロキシ/代理)と表します。

一般に利用者・組織側が選ぶforward proxy(フォワード・プロキシ)を指し、ブラウザーはオリジンへ直接つながずプロキシへ要求します。アクセス制御、認証、キャッシュ、フィルター、記録、出口集約に使います。

「中継する」という役割は同じでも、HTTP内容を扱うプロキシ、暗号化トンネルを作るCONNECT、アプリケーショントラフィックを運ぶSOCKSでは見える情報と設定範囲が違います。

クライアントが選んだ中継へ複数の要求を集め、方針・キャッシュ・フィルター後にオリジンへ接続する要求転送とopaqueトンネルを分ける
複数クライアントブラウザーが自分側の設定から一つの転送プロキシを選び、プロキシがフィルター・キャッシュ・許可判断を行って複数オリジンサーバーへ要求を中継し、応答を同じ経路で返し、下段で内容を扱うHTTP中継と暗号化されたCONNECTトンネルを分けるピクトグラム図解
図1クライアントが代理として選ぶのが転送プロキシです。オリジン側が入口として配置する逆プロキシとは、選ぶ側と守る対象が逆です。

プロキシの役割を処理層で分ける

ForwardHTTPメッセージを転送

absolute URIから接続先を選び、ヘッダーの追加・削除、方針、キャッシュを行える。

CONNECTTCPトンネルを作る

HTTPS先などへバイトストリームを中継し、TLS内容は通常クライアントとオリジンだけが復号する。

InspectTLSを組織内で検査

管理端末へ組織CAを配り、プロキシがTLSを二本に分ける。プライバシーと鍵管理が必要。

Cache再利用可能な応答を保存

鮮度とVary、認証、プライベートデータを守り、別利用者へ誤配しない。

Policy利用者と宛先を制御

認証、分類、ファイル種類、時刻、マルウェア判定で許可・拒否・記録する。

SOCKSアプリケーションの接続を代理

HTTP意味を知らず、TCP・場合によりUDPの接続先を中継する別プロトコル。

HTTPプロキシでは要求対象が変わる

オリジンへ直接送るHTTP要求は通常パスを対象にしますが、転送プロキシへはスキームとホストを含むabsolute URIを送り、プロキシが次のホップを選びます。Host情報とメッセージ経路制御の整合性が必要です。

プロキシは自分が受けた接続と、オリジンへ開く接続を分けます。クライアントのソースIPをオリジンへ必ず隠すとは限らず、Forwarded系ヘッダーを付ける運用もあります。

HTTPSではCONNECTの内側にTLSを作る

クライアントがCONNECTでホスト・ポートへのトンネルを求め、成功後にそのバイトストリーム内でオリジンとのTLSを開始します。通常プロキシは接続先とトラフィック量を見ますが、HTTPパスや本文を復号しません。

TLS検査を行う組織プロキシはオリジン証明書を検証し、クライアントへ別証明書を提示します。個人端末へ不明なルートCAを入れることは、全HTTPSを解読できる強い権限を渡す行為です。

DNSをどちら側で解決するか確認する

HTTPプロキシはホスト名を受けてプロキシ側で解決できます。SOCKSクライアントがIPアドレスを先に解決する設定ではDNSだけローカルリゾルバーへ出ることがあります。プロキシ経由の名前解決選択肢を確認します。

プロキシを使っているかはブラウザー画面の設定だけでなく、各アプリケーション、DNS、IPv4・IPv6、失敗時の直接代替処理が同じ方針に従うかで確認します。

HTTP intermediaryとproxy・tunnelの意味の確認資料:RFC 9110「HTTP Semantics — Intermediaries」

関連用語