Slide 20
Slide 20 text
検証3: egressのデフォルト拒否(/test/egress)
@app.post("/test/egress")
def test_egress():
denied = run_in_sandbox(
["--", BASH_BIN, "-c", "curl -s -m 3 -o /dev/null -w 'HTTP:%{http_code}' https://example.com ; echo ' EXIT:'$?"],
timeout=8,
)
allowed = run_in_sandbox(
["--allow-egress", "--", BASH_BIN, "-c", "curl -s -m 5 -o /dev/null -w 'HTTP:%{http_code}' https://example.com ; echo ' EXIT:'$?"],
timeout=10,
)
return {"egress_default_denied": denied, "egress_allowed": allowed}
実際に返ってきたレスポンス(そのまま):
{"egress_default_denied": {"returncode": 0, "stdout": "HTTP:000 EXIT:6", "stderr": ""},
"egress_allowed": {"returncode": 0, "stdout": "HTTP:200 EXIT:0", "stderr": ""}}
→ デフォルトは EXIT:6 (名前解決不可)で遮断 OK、 --allow-egress を付けると
HTTP:200 でオプトインで疎通 OK。
20