ส่วนขยาย WASM
รุ่น Wasm โดยเฉพาะซึ่งสร้างจากโปรไฟล์สำหรับการผลิตแบบเต็ม พร้อมจุดเชื่อมนโยบายที่จำกัดขอบเขต ACME เมตริก และ OpenTelemetry
สิ่งที่ได้
รุ่น Wasm โดยเฉพาะซึ่งสร้างจากโปรไฟล์สำหรับการผลิตแบบเต็ม พร้อมจุดเชื่อมนโยบายที่จำกัดขอบเขต ACME เมตริก และ OpenTelemetry.
| ฟีเจอร์ | ใช้สำหรับ |
|---|---|
| การตัดสินใจเข้าถึง | Live native HTTP/1 access-decision hooks ใช้ priority ordering, first-deny-wins composition และ fail-closed behavior |
| ฮุกส่วนหัว | request-headers และ response-headers hooks ตั้งหรือลบได้เฉพาะ synthetic headers ที่อยู่ใน allow-list เช่นตัวอย่าง policy-tier |
| การตัดสินใจเส้นทาง | route-decision hook ทำได้เฉพาะดำเนินต่อ ปฏิเสธ หรือเลือกกิ่ง route canary และ mirror ที่กำหนดไว้และตรงกัน |
| การตัดสินใจ cache | cache-lookup hook สามารถ continue, pass, bypass หรือ deny ได้ ส่วน cache-store hook สามารถ continue, skip storage หรือ deny ก่อนเขียนลง memory/disk cache ได้ |
รัน
ใช้อาร์ไคฟ์หรืออิมเมจ profile-wasm โดยเฉพาะ รุ่นเต็มตามปกติจะไม่มี Wasm โดยเจตนา
อิมเมจ Wasm อย่างเป็นทางการมีรันไทม์แต่ไม่มีปลั๊กอินของผู้ดูแลระบบ เมานต์เฉพาะโมดูลที่ผ่านการตรวจสอบแล้วแบบอ่านอย่างเดียว และตรึงทุกโมดูลด้วย SHA-256
podman pull ghcr.io/valkyoth/fluxheim:v1.8.0-wasm
podman run --rm \
-v ./fluxheim.toml:/etc/fluxheim/fluxheim.toml:ro,Z \
-v /srv/infra/fluxheim/plugins:/etc/fluxheim/plugins:ro,Z \
ghcr.io/valkyoth/fluxheim:v1.8.0-wasm
รากปลั๊กอินที่อนุมัติ
ไฟล์ปลั๊กอินต้องเป็นไฟล์ปกติแบบ absolute path อยู่ใต้ root ที่อนุมัติ และไม่มี symlink หรือ parent path
[wasm]
enabled = true
plugin_roots = ["/etc/fluxheim/plugins"]
max_total_concurrent_executions = 256
max_total_preview_concurrent_executions = 32
max_total_cache_concurrent_executions = 256
[[wasm.plugins]]
name = "security_headers"
path = "/etc/fluxheim/plugins/security_headers.wasm"
sha256 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
abi = "fluxheim-policy-v1"
host_call_namespace = "fluxheim-policy-v1"
phases = ["response-headers"]
fail_mode = "fail-closed"
[[wasm.attachments]]
plugin = "security_headers"
vhost = "example"
priority = 100
phases = ["response-headers"]
การรันแบบจำกัด
ขีดจำกัดของ fuel, memory, table, instance, compile-timeout, compile-worker และ watchdog ต่อการเรียก ช่วยจำกัดขอบเขตของ sandbox
[wasm.plugins.limits]
max_module_bytes = "1MiB"
max_compiled_artifact_bytes = "32MiB"
max_memory_bytes = "16MiB"
max_table_elements = 10000
fuel = 5000000
timeout_ms = 50
compile_timeout_ms = 500
หมายเหตุสำหรับโปรดักชัน
การเมานต์คอนเทนเนอร์แบบอ่านอย่างเดียวไม่ได้ปกป้องไฟล์บนโฮสต์ ให้เก็บการกำหนดค่าโฮสต์และไดเรกทอรีปลั๊กอินไว้ภายใต้เจ้าของที่เชื่อถือได้และไม่มีสิทธิ์เขียน
- ไฟล์ manifest สาธารณะต้องระบุค่า SHA-256 ที่ตรึงไว้ การคอมไพล์พร้อมกันทั้งโปรเซสทำได้สูงสุดสองงาน และผลลัพธ์ที่คอมไพล์มีขีดจำกัดเริ่มต้น 32 MiB กับขีดจำกัดสูงสุด 256 MiB
- เก็บ config file และ parent directory ทุกชั้นที่มีอยู่ภายใต้ ownership ที่เชื่อถือได้ และไม่อนุญาตให้ group หรือ user อื่นเขียนได้
- ปักหมุดเวอร์ชันวางจำหน่ายหรือสรุปรูปภาพ
- เก็บ secrets ไว้ในไฟล์ environment หรือ container secrets ไม่ใช่ใน public docs