WASM-extensies
Speciale Wasm-build op basis van het volledige productieprofiel, met begrensde beleidshooks, ACME, metrieken en OpenTelemetry
Wat het je geeft
Speciale Wasm-build op basis van het volledige productieprofiel, met begrensde beleidshooks, ACME, metrieken en OpenTelemetry.
| Functie | Gebruik het voor |
|---|---|
| Toegangsbeslissingen | Live native HTTP/1 access-decision-hooks gebruiken prioriteitsvolgorde, first-deny-wins-compositie en fail-closed-gedrag. |
| Header-hooks | request-headers- en response-headers-hooks kunnen alleen toegestane synthetische headers zetten of verwijderen, zoals het policy-tier-voorbeeld. |
| Routebeslissingen | route-decision-hooks kunnen alleen doorgaan, weigeren of geconfigureerde passende canary- en mirror-routebranches selecteren. |
| Cachebeslissingen | cache-lookup-hooks kunnen doorgaan, pass, bypass of deny kiezen. cache-store-hooks kunnen doorgaan, opslag overslaan of weigeren vóór writes naar memory/disk cache. |
Uitvoeren
Gebruik het speciale profile-wasm-archief of de image; de normale volledige build blijft bewust zonder Wasm.
De officiële Wasm-image bevat de runtime, maar geen plugins van de beheerder. Koppel gecontroleerde modules als alleen-lezen en zet elke module vast met 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
Goedgekeurde pluginroots
Pluginbestanden moeten absolute reguliere bestanden onder goedgekeurde roots zijn, zonder symlinkbestanden of symlink-ouderpaden.
[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"]
Begrensde uitvoering
Limieten voor fuel, geheugen, tabel, instantie, compile-timeout, compile-workers en watchdog per aanroep houden de sandbox begrensd.
[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
Productienotities
Een alleen-lezen containermount beschermt de bestanden op de host niet. Laat de hostconfiguratie en pluginmap beheren door een vertrouwd account zonder schrijfrechten.
- Openbare pluginmanifesten moeten een vaste SHA-256-samenvatting bevatten. In het hele proces worden maximaal twee modules tegelijk gecompileerd. Gecompileerde uitvoer heeft standaard een limiet van 32 MiB en mag niet groter zijn dan 256 MiB.
- Zorg dat configuratiebestanden en alle bestaande bovenliggende mappen vertrouwde eigenaren hebben en niet beschrijfbaar zijn door de groep of andere gebruikers.
- Pin releaseversies of image-digests.
- Houd secrets in bestanden, environment of container secrets, niet in publieke docs.