feat: 가상화 문서들 추가
This commit is contained in:
+2
-2
@@ -10,13 +10,13 @@ nginx 는 자기가 proxy_set_header 로 설정한 헤더만 덮어쓴다. 설
|
||||
|
||||
## Elements and evidence
|
||||
|
||||
- **밖에서 보낸 위조 헤더** (actor): 앱이 믿는 이름을 그대로 쓴다. Evidence: L393–L400.
|
||||
- **외부 위조 헤더** (actor): 밖에서 들어온 요청이 앱이 믿는 헤더 이름을 그대로 쓴다. Evidence: L393–L400.
|
||||
- **nginx** (gateway): 설정하지 않은 이름은 덮어쓰지 않는다. Evidence: L393–L400.
|
||||
- **oauth2-proxy** (gateway): 인증 결과를 헤더로 넣는다. Evidence: L393–L400.
|
||||
- **앱** (service): 헤더를 믿고 인가한다. Evidence: L401–L408.
|
||||
|
||||
## Relationships
|
||||
|
||||
- **밖에서 보낸 위조 헤더 → nginx:** 위조 헤더. Evidence: L393–L400.
|
||||
- **외부 위조 헤더 → nginx:** 위조 헤더. Evidence: L393–L400.
|
||||
- **nginx → oauth2-proxy:** 미삭제 시 통과. Evidence: L393–L400.
|
||||
- **oauth2-proxy → 앱:** 인가 헤더. Evidence: L393–L408.
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
# 지우지 않으면 통과한다
|
||||
# Question: Edge 가 넣어주는 인가 헤더를 앱이 믿어도 되는가
|
||||
direction: down
|
||||
n0: "밖에서 보낸 위조 헤더" {
|
||||
n0: "외부 위조 헤더" {
|
||||
shape: person
|
||||
}
|
||||
n1: "nginx" {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ digraph techviz {
|
||||
graph [rankdir=TB, splines=ortho, nodesep=0.55, ranksep=0.85];
|
||||
node [fontname=Helvetica, fontsize=11, margin="0.18,0.12", style="rounded,filled", fillcolor=white, color="#2d4357", penwidth=1.5];
|
||||
edge [fontname=Helvetica, fontsize=10, color="#364b5f", penwidth=1.4, arrowsize=0.75];
|
||||
n0 [label="밖에서 보낸 위조 헤더", shape=box, style="rounded,dashed,filled"];
|
||||
n0 [label="외부 위조 헤더", shape=box, style="rounded,dashed,filled"];
|
||||
n1 [label="nginx", shape=diamond, style="rounded,filled"];
|
||||
n2 [label="oauth2-proxy", shape=diamond, style="rounded,filled"];
|
||||
n3 [label="앱", shape=box, style="rounded,filled"];
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
<root>
|
||||
<mxCell id="0"/>
|
||||
<mxCell id="1" parent="0"/>
|
||||
<mxCell id="n_attacker" value="밖에서 보낸 위조 헤더<br/>X-Auth-Request-Roles" tooltip="앱이 믿는 이름을 그대로 쓴다. | Evidence: L393-L400" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;dashed=1;fillColor=#f5f7fa;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
|
||||
<mxCell id="n_attacker" value="외부 위조 헤더<br/>X-Auth-Request-Roles" tooltip="밖에서 들어온 요청이 앱이 믿는 헤더 이름을 그대로 쓴다. | Evidence: L393-L400" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;dashed=1;fillColor=#f5f7fa;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
|
||||
<mxGeometry x="82.5" y="60.0" width="170.0" height="84.0" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="n_nginx" value="nginx<br/>proxy_set_header ... """ tooltip="설정하지 않은 이름은 덮어쓰지 않는다. | Evidence: L393-L400" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;rhombus;perimeter=rhombusPerimeter;fillColor=#fff7e8;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
|
||||
|
||||
+2
-2
@@ -361,11 +361,11 @@
|
||||
"locked": false,
|
||||
"fontSize": 15,
|
||||
"fontFamily": 5,
|
||||
"text": "밖에서 보낸 위조 헤더\nX-Auth-Request-Roles",
|
||||
"text": "외부 위조 헤더\nX-Auth-Request-Roles",
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": null,
|
||||
"originalText": "밖에서 보낸 위조 헤더\nX-Auth-Request-Roles",
|
||||
"originalText": "외부 위조 헤더\nX-Auth-Request-Roles",
|
||||
"autoResize": true,
|
||||
"lineHeight": 1.25
|
||||
},
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
"harness_version": "0.2.0",
|
||||
"spec_id": "b4-header-trust-boundary",
|
||||
"spec_version": "1.1",
|
||||
"spec_sha256": "56747d5f7826ad63f202d8dc4d6a4f1323f12eeaedb4bf989b67d0bfab5f09cd",
|
||||
"spec_sha256": "ad0e26787a9e508ddce08e196ceeaacf2dfe1ef2caa047537f4355b5e34739a1",
|
||||
"source_context": {
|
||||
"document": "docs/keycloak-session-store/final/document.md",
|
||||
"document_sha256": "1d44cba1905544d92f1d26ae36a8deb64a3db3914d6b488fd30d6ae7f8cfbabe",
|
||||
@@ -14,10 +14,10 @@
|
||||
},
|
||||
"outputs": [
|
||||
"b4-header-trust-boundary.svg",
|
||||
"b4-header-trust-boundary.drawio",
|
||||
"b4-header-trust-boundary.mmd",
|
||||
"b4-header-trust-boundary.d2",
|
||||
"b4-header-trust-boundary.dot",
|
||||
"b4-header-trust-boundary.drawio",
|
||||
"b4-header-trust-boundary.excalidraw",
|
||||
"b4-header-trust-boundary.alt.md"
|
||||
],
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
%% 지우지 않으면 통과한다
|
||||
%% question: Edge 가 넣어주는 인가 헤더를 앱이 믿어도 되는가
|
||||
flowchart TB
|
||||
n0(["밖에서 보낸 위조 헤더"])
|
||||
n0(["외부 위조 헤더"])
|
||||
n1{"nginx"}
|
||||
n2{"oauth2-proxy"}
|
||||
n3["앱"]
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@
|
||||
<text class="edge-label" x="191.5" y="527.0">인가 헤더</text>
|
||||
<g id="node-attacker">
|
||||
<g class="actor-symbol emphasis-warning" data-evidence="393-400"><circle cx="167.5" cy="80.0" r="11.0" /><line x1="167.5" y1="96.0" x2="167.5" y2="105.0" /><line x1="149.5" y1="106.0" x2="185.5" y2="106.0" /><line x1="167.5" y1="105.0" x2="152.5" y2="122.0" /><line x1="167.5" y1="105.0" x2="182.5" y2="122.0" /></g>
|
||||
<text class="node-label" x="167.5" y="137.0">밖에서 보낸 위조 헤더</text>
|
||||
<text class="node-label" x="167.5" y="137.0">외부 위조 헤더</text>
|
||||
</g>
|
||||
<g id="node-nginx">
|
||||
<polygon class="node-shape kind-gateway emphasis-warning role-control" data-evidence="393-400" points="167.5,240.0 265.0,275.5 167.5,311.0 70.0,275.5" />
|
||||
|
||||
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.0 KiB |
Reference in New Issue
Block a user