8.3 KiB
title, source_type, url, archive_url, related_branches, related_projects, tags, created
| title | source_type | url | archive_url | related_branches | related_projects | tags | created | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| W3C Baggage Specification (Candidate Recommendation Snapshot, 2024-05-30) | official-doc | https://www.w3.org/TR/baggage/ |
|
|
|
2026-06-14 |
W3C Baggage Specification (Candidate Recommendation Snapshot, 2024-05-30)
Layer:
raw/— 외부 자료(W3C 표준 사양)의 원문 발췌·출처 기록. 검증된 요약은/ingest후wiki/concepts/에 별도 작성. 원본은 raw에 영구 보관.
Parent / 활용 branch (필수)
| Branch | 이 자료가 정당화하는 결정 |
|---|---|
| raw/branch-notes/feature-distributed-tracing-contract | D2 — baggage에 PII/token/user raw identifier/body-derived value를 넣어서는 안 된다 (§4.1 Security Considerations 직접 근거). D8 — baggage allowlist = tenant_id + request_id 만 허용 (spec은 wire format을 정의하나 allowlist 메커니즘은 규정하지 않음 — 이 결정은 application 정책). |
출처 / Source
- 원본 URL: https://www.w3.org/TR/baggage/
- 아카이브 URL: (미등록 — 필요 시 archive.org 스냅샷 추가)
- 저자 / 조직: W3C Distributed Tracing Working Group
- 발행일: 2024-05-30 (Candidate Recommendation Snapshot)
- 마지막 확인일: 2026-06-14
왜 저장했는지 / Why archived
feature-distributed-tracing-contract branch 의 D2 (baggage PII 금지)는 이전에 W3C Trace Context tracestate spec 을 근거로 인용했으나, 그 문서는 tracestate 에 대한 것이고 baggage 헤더에 대한 직접 근거가 아니었다. 본 자료는 W3C Baggage spec 을 직접 fetch 하여 §4.1 Information Exposure 의 verbatim 텍스트로 D2 를 정확히 지지하고, §3.3 의 propagation 제약(64 list-members / 8192 bytes)으로 D8 의 "allowlist 없음 — application 정책" 해석을 뒷받침한다.
핵심 인용 / Key quotes (verbatim, Self-Grep 통과)
[§4.1 Information Exposure] "As mentioned in the privacy section, baggage may carry sensitive information. Application owners should either ensure that no proprietary or confidential information is stored in baggage, or they should ensure that baggage isn't present in requests that cross trust-boundaries."
[§3.3 Propagation format — Condition 1] "The resulting baggage-string contains 64 list-members or less."
[§3.3 Propagation format — Condition 2] "The resulting baggage-string is of size 8192 bytes or less."
[§3.3 Forwarding requirement] "A system receiving a baggage request header SHOULD send it to outgoing requests."
[§4 Security Considerations — general] "Systems relying on the baggage headers should also follow all best practices for parsing potentially malicious data, including checking for header length and content of header values."
Claims Extracted / 추출된 주장
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|---|---|---|---|---|---|
| W3C-BAG-C1 | baggage 는 민감한 정보를 담을 수 있으므로, application owner 는 기밀 정보를 넣지 않거나 trust-boundary 를 넘는 요청에서 baggage 를 제거해야 한다 | [§4.1] "baggage may carry sensitive information. Application owners should either ensure that no proprietary or confidential information is stored in baggage, or they should ensure that baggage isn't present in requests that cross trust-boundaries." | official-standard |
W3C Baggage spec 을 따르는 모든 HTTP 시스템 | PII/token/identifier 각 유형의 금지를 개별로 열거하지 않음. 구체적인 금지 항목 목록(예: "tenant_id 는 OK, email 은 NG")은 application 정책 결정 |
| W3C-BAG-C2 | baggage-string 은 최대 64개 list-member 를 가질 수 있다. 이 한계 초과 시 플랫폼은 list-member 를 propagate 할 의무 없음 | [§3.3] "The resulting baggage-string contains 64 list-members or less." | official-standard |
baggage 헤더를 propagate 하는 모든 플랫폼/미들웨어 | 64개 이하의 list-member 를 사용해야 한다는 allowlist 정책을 강제하지 않음 — 단 propagation 보장의 상한만 정의 |
| W3C-BAG-C3 | baggage-string 총 크기는 8192 bytes 이하여야 platform 이 propagation 을 보장한다 | [§3.3] "The resulting baggage-string is of size 8192 bytes or less." | official-standard |
baggage 헤더를 propagate 하는 모든 플랫폼/미들웨어 | 특정 key 의 value 크기 제한은 규정하지 않음 |
| W3C-BAG-C4 | baggage 수신 시스템은 outgoing request 에 baggage 를 전달해야 한다 (SHOULD) | [§3.3] "A system receiving a baggage request header SHOULD send it to outgoing requests." | official-standard |
baggage-aware HTTP 중간 시스템 전체 | MUST 가 아닌 SHOULD — 전달 실패가 spec 위반은 아님. 전달 여부를 강제하는 별도 application-level 정책 필요 |
| W3C-BAG-C5 | baggage 를 사용하는 시스템은 잠재적 악성 데이터 파싱에 대한 모범 사례를 따라야 한다 (헤더 길이·값 내용 확인 포함) | [§4] "Systems relying on the baggage headers should also follow all best practices for parsing potentially malicious data, including checking for header length and content of header values." | official-standard |
baggage 헤더를 파싱하는 모든 시스템 | 구체적인 파싱 구현 방법(validation library, 길이 상한값 등)은 규정하지 않음 |
Usage Boundaries / 적용 경계
- 이 자료가 직접 증명하는 것:
W3C-BAG-C1: D2 (baggage PII 금지)의 직접 표준 근거.tracestatespec 이 아닌baggagespec 자체에서 기밀 정보 금지/trust-boundary 제거 의무를 규정함.W3C-BAG-C2,W3C-BAG-C3: spec 이 wire-level propagation 제약(64 members / 8192 bytes)만 정의하고, 어떤 key 를 넣을지는 application 이 결정한다는 근거 → D8 이 spec feature 가 아닌 application 정책임을 지지.W3C-BAG-C4: baggage 전달이 SHOULD 수준 — 인프라 default 로 기대할 수 없으므로 application 계층에서 명시적 전달 구현 필요.W3C-BAG-C5: baggage 파싱 시 보안 best practice 적용 의무.
- 이 자료가 증명하지 않는 것:
tenant_id/request_id라는 특정 key 명칭이 안전하다는 것 — spec 은 key 허용/금지 목록 없음.- baggage allowlist 를 강제하는 메커니즘 — D8 의 allowlist 정책은 spec 에 없는 application-level 결정.
- PII 의 법적 정의 (GDPR, CCPA 등) — spec 은 "proprietary or confidential information" 만 언급.
- 특정 Java/Spring 구현에서 baggage API 사용 방법.
- 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
- Micrometer Tracing / OTel Java SDK 에서 baggage key 에 대한 allowlist filter 구현 방법 (별도 raw source 필요).
- trust-boundary 판정 기준 (ca-skeleton 에서 외부 시스템 호출 = trust-boundary 로 간주하는지 명시 필요).
메모 / Notes
- 본 자료는
feature-distributed-tracing-contractD2 의 원래 인용 소스(tracing-w3c-trace-context-spec.md#W3C-TC-C5— tracestate PII 금지)를 대체하는 올바른 자료다. Decision Evidence Map 에서 D2 의 Supporting Claims 를W3C-BAG-C1로 갱신해야 한다. - D8 의 UNSUPPORTED_DECISION 라벨은 유지 타당 — spec 은 allowlist 정책을 정의하지 않음.
W3C-BAG-C2/C3는 "spec 에 allowlist 없음" 을 뒷받침할 뿐, D8 의 구체적 key 선택(tenant_id,request_id)은 여전히 application 운영 정책. - 문서 상태: Candidate Recommendation Snapshot (2024-05-30). W3C Recommendation 이 아님 — 최종 표준은 아니나 OTel 생태계에서 de-facto 표준으로 채택.
- 추가로 봐야 할 동일 출처 페이지: https://www.w3.org/TR/baggage/#privacy (§5 Privacy Considerations — §4.1 이 언급하는 "privacy section" 의 원문)
Related / 관련
- 같은 주제 다른 official-doc:
- raw/official-docs/tracing-w3c-trace-context-spec — W3C Trace Context spec (traceparent / tracestate). baggage 와는 별도 spec.
- raw/official-docs/tracing-otel-sampling-tail-vs-head-spec — OTel sampling spec
- 이 자료를 인용한 branch-note: raw/branch-notes/feature-distributed-tracing-contract
- 이 자료를 인용한 wiki 요약: (생성 시 추가)