インターネット技術タスクフォース (IETF) M. Nottingham
Request for Comments: 9209 Fastly
カテゴリー: 標準トラック P. Sikora
ISSN: 2070-1721 Google
2022年6月

Proxy-Status HTTP レスポンスヘッダーフィールド


概要

本書は、仲介者がレスポンス処理の詳細(生成したエラーを含む)を伝えるための Proxy-Status HTTP レスポンスフィールドを定義します。

本メモの状態

これはインターネット標準トラックの文書です。

この文書は Internet Engineering Task Force (IETF) の成果物です。IETF コミュニティの合意を表しています。公開審査を受け、Internet Engineering Steering Group (IESG) によって公開が承認されています。インターネット標準に関するさらなる情報は RFC 7841 のセクション 2 をご覧ください。

この文書の現状、訂正情報、およびフィードバックの送付方法に関する情報は https://www.rfc-editor.org/info/rfc9209 で入手できます。

Copyright Notice

Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.


1. 導入

HTTP の仲介者(Section 3.7 of [HTTP] 参照) — フォワードプロキシとゲートウェイ(いわゆる「リバースプロキシ」)の両方を含む — は、HTTP デプロイメントにおいてますます重要な存在になっています。特に、リバースプロキシやコンテンツ配信ネットワーク(CDN)は多くのウェブサイトの重要なインフラを構成しています。

通常、HTTP 仲介者はリクエストをオリジンサーバーへ転送し(インバウンド)、その後レスポンスをクライアントへ転送します(アウトバウンド)。しかし、インバウンドサーバーからレスポンスが取得される前にエラーが発生した場合、レスポンスはしばしば仲介者自身によって生成されます。

HTTP はこれらの種類のエラーに対していくつかのステータスコード(例えば 502 (Bad Gateway) や 504 (Gateway Timeout))を用意しています。しかし、経験上、デバッグを助けクライアントに何が起きたかを伝えるためにより多くの情報が必要であることが示されています。加えて、仲介者は時にレスポンスを生成していない場合でも、その処理に関する追加情報を伝えたいことがあります。

これらの用途を可能にするために、セクション 2 は、仲介者がレスポンスの処理の詳細を伝えられるようにする新しい HTTP レスポンスフィールドを定義します。セクション 2.1 は仲介者がフィールドに追加できる情報を列挙し、これは セクション 2.2 に従って拡張できます。セクション 2.3 は、プロキシがリクエストのレスポンスを取得する際に問題に遭遇した場合に使用するエラー種別のセットを定義します。これらも同様に セクション 2.4 に従って拡張可能です。

1.1. 表記規約

本書内の語句 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", および "OPTIONAL" は、すべて大文字で表示される場合に限り、BCP 14([RFC2119])および [RFC8174] に従って解釈されます。

本書は構文と解析を指定するために、Section 3 of [STRUCTURED-FIELDS] からの用語(List、String、Token、Integer、および Byte Sequence)を使用します。

本仕様では "proxy" はフォワードプロキシとリバースプロキシ(ゲートウェイ)の両方を示すために使用されます。"Next hop" はリクエストに対してオリジンサーバーへ向かう方向の接続を示します。



3. IANA の考慮事項

IANA は "HTTP Proxy-Status Parameters" レジストリと "HTTP Proxy Error Types" レジストリを <https://www.iana.org/assignments/http-proxy-status> に作成し、セクション 2.1 および 2.3 で定義された型でそれらを初期化した(関連手続きは 2.2 および 2.4 を参照)。

さらに、次のエントリが "Hypertext Transfer Protocol (HTTP) Field Name Registry" に追加されました:

Field name:
Proxy-Status
Status:
permanent
Specification document(s):
RFC 9209
Comments:
 

4. セキュリティに関する考慮事項

Proxy-Status を使用する際の主要なセキュリティ上の懸念の一つは、攻撃者を助ける可能性のある情報が漏洩することである。例えば、仲介者の構成やバックエンドのトポロジに関する情報が露出すると、攻撃者は高トラフィックや不正な入力に対する準備ができていないバックエンドサービスを直接攻撃できるようになる。ある情報は認可された当事者だけに公開すべき場合がある。

したがって、Proxy-Status フィールドを生成するかどうか、またその中にどの情報を含めるかを決定する際には注意が必要である。仲介者はどのレスポンスにも Proxy-Status フィールドを生成する義務はなく、リクエスト属性(例:認証トークン、IP アドレス)に基づいて条件付きで生成することができる点に注意する。

同様に、すべてのパラメータの生成は任意であり、フィールド自体の生成も任意である。また、フィールドの内容は検証されない;仲介者は暗号化チャネルでリクエストを送信したと主張するが実際にはそうしていない、といったことが起こり得る。

5. 参考文献

5.1. 規範的参考文献

[HTTP]
Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, Ed., “HTTP Semantics”, STD 97, RFC 9110, DOI 10.17487/RFC9110, June 2022, <https://www.rfc-editor.org/info/rfc9110>.
[RFC2119]
Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels”, BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.
[RFC7301]
Friedl, S., Popov, A., Langley, A., and E. Stephan, “Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension”, RFC 7301, DOI 10.17487/RFC7301, July 2014, <https://www.rfc-editor.org/info/rfc7301>.
[RFC8126]
Cotton, M., Leiba, B., and T. Narten, “Guidelines for Writing an IANA Considerations Section in RFCs”, BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, <https://www.rfc-editor.org/info/rfc8126>.
[RFC8174]
Leiba, B., “Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words”, BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8499]
Hoffman, P., Sullivan, A., and K. Fujiwara, “DNS Terminology”, BCP 219, RFC 8499, DOI 10.17487/RFC8499, January 2019, <https://www.rfc-editor.org/info/rfc8499>.
[RFC8914]
Kumari, W., Hunt, E., Arends, R., Hardaker, W., and D. Lawrence, “Extended DNS Errors”, RFC 8914, DOI 10.17487/RFC8914, October 2020, <https://www.rfc-editor.org/info/rfc8914>.
[STRUCTURED-FIELDS]
Nottingham, M. and P-H. Kamp, “Structured Field Values for HTTP”, RFC 8941, DOI 10.17487/RFC8941, March 2021, <https://www.rfc-editor.org/info/rfc8941>.
[TLS]
Rescorla, E., “The Transport Layer Security (TLS) Protocol Version 1.3”, RFC 8446, DOI 10.17487/RFC8446, August 2018, <https://www.rfc-editor.org/info/rfc8446>.

5.2. 参考資料

[RFC8586]
Ludin, S., Nottingham, M., and N. Sullivan, “Loop Detection in Content Delivery Networks (CDNs)”, RFC 8586, DOI 10.17487/RFC8586, April 2019, <https://www.rfc-editor.org/info/rfc8586>.

著者の連絡先

Mark Nottingham
Fastly
Prahran
Australia
EMail: mnot@mnot.net
URI: https://www.mnot.net/
Piotr Sikora
Google
EMail: piotrsikora@google.com