Extensii WASM
Build Wasm dedicat, bazat pe profilul complet de producție, cu hook-uri de politici limitate, ACME, metrici și OpenTelemetry
Ce îți oferă
Build Wasm dedicat, bazat pe profilul complet de producție, cu hook-uri de politici limitate, ACME, metrici și OpenTelemetry.
| Funcție | Folosește pentru |
|---|---|
| Decizii de acces | Hook-urile native HTTP/1 access-decision live folosesc ordine de prioritate, compoziție first-deny-wins și comportament fail-closed. |
| Header-hook-uri | Hook-urile request-headers și response-headers pot seta sau elimina doar headere sintetice permise, ca în exemplul policy-tier. |
| Decizii de rută | Hook-urile route-decision pot doar continua, refuza sau selecta ramuri de rută canary și mirror configurate și potrivite. |
| Decizii cache | Hook-urile cache-lookup pot continua, trece către origin, ocoli cache-ul sau refuza. Hook-urile cache-store pot continua, sări peste stocare sau refuza înainte de scrierile în cache-ul de memorie/disc. |
Rulează
Folosiți arhiva sau imaginea dedicată profile-wasm; build-ul complet obișnuit rămâne în mod intenționat fără Wasm.
Imaginea Wasm oficială conține mediul de execuție, dar nu și pluginurile operatorului. Montați modulele verificate doar în citire și fixați fiecare modul prin 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
Rădăcini de plugin aprobate
Fișierele plugin trebuie să fie fișiere obișnuite cu cale absolută sub rădăcini aprobate, fără fișiere simbolice sau căi părinte.
[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"]
Execuție limitată
Fuel, memory, table, instance, compile-timeout, compile-worker and per-call watchdog limits keep the sandbox bounded.
[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
Note production
O montare de container doar în citire nu protejează fișierele de pe gazdă. Păstrați configurația gazdei și directorul de pluginuri sub proprietate de încredere, fără drept de scriere.
- Manifestele publice ale pluginurilor trebuie să includă un rezumat SHA-256 fix. În întregul proces se compilează simultan cel mult două module. Ieșirea compilată are implicit o limită de 32 MiB și nu poate depăși 256 MiB.
- Păstrați fișierele de configurare și fiecare director părinte existent sub proprietate de încredere și fără drept de scriere pentru grup sau alți utilizatori.
- Fixează versiunile release sau image digests.
- Ține secretele în file-uri, environment sau container secrets, nu în documentație publică.