Fluxheim/Dokument/WASM-tillägg

WASM-tillägg

Dedikerad Wasm-version baserad på den fullständiga produktionsprofilen, med begränsade policyhookar, ACME, mätvärden och OpenTelemetry

Vad det ger dig

Dedikerad Wasm-version baserad på den fullständiga produktionsprofilen, med begränsade policyhookar, ACME, mätvärden och OpenTelemetry.

FunktionAnvänd det för
ÅtkomstbeslutLive native HTTP/1 access-decision-hooks använder prioriteringsordning, first-deny-wins-sammansättning och fail-closed-beteende.
Header-hooksrequest-headers- och response-headers-hooks kan bara sätta eller ta bort tillåtna syntetiska headers, som policy-tier-exemplet.
Ruttbeslutroute-decision-hooks kan bara fortsätta, neka eller välja konfigurerade matchande canary- och mirror-ruttgrenar.
Cachebeslutcache-lookup-hooks kan fortsätta, pass, bypass eller deny. cache-store-hooks kan fortsätta, hoppa över lagring eller neka före minnes-/diskcache-skrivningar.

Kör

Använd det särskilda profile-wasm-arkivet eller avbildningen; den vanliga fullständiga versionen är avsiktligt utan Wasm.

Den officiella Wasm-avbildningen innehåller körmiljön men inga operatörspluginer. Montera granskade moduler skrivskyddat och lås varje modul med 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

Godkända pluginrötter

Pluginfiler måste vara absoluta, vanliga filer under godkända rötter, utan symlänkade filer eller överordnade sökvägar.

[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"]

Begränsad körning

Gränser för fuel, minne, tabell, instans, kompileringstimeout, kompileringsarbetare och watchdog per anrop håller sandboxen begränsad.

[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

Produktionsanteckningar

En skrivskyddad containermontering skyddar inte filerna på värden. Låt ett betrott konto utan skrivrättigheter äga värdkonfigurationen och pluginkatalogen.

  • Offentliga pluginmanifest måste innehålla en fast SHA-256-kontrollsumma. Högst två moduler kompileras samtidigt i hela processen. Kompilerad utdata har som standard en gräns på 32 MiB och får inte överstiga 256 MiB.
  • Se till att konfigurationsfiler och alla befintliga överordnade kataloger har betrodda ägare och inte är skrivbara för gruppen eller andra användare.
  • Pinna release-versioner eller image-digests.
  • Förvara secrets i filer, miljön eller container-secrets, inte i publik dokumentation.

Full docs on GitHub

Svenska