Fluxheim/Dokumentasjon/WASM-utvidelser

WASM-utvidelser

Dedikert Wasm-bygg basert på den fullstendige produksjonsprofilen, med avgrensede policykroker, ACME, måledata og OpenTelemetry

Hva det gir deg

Dedikert Wasm-bygg basert på den fullstendige produksjonsprofilen, med avgrensede policykroker, ACME, måledata og OpenTelemetry.

FunksjonBruk det til
TilgangsbeslutningerLive native HTTP/1 access-decision-hooks bruker prioritetsrekkefølge, first-deny-wins-sammensetning og fail-closed-oppførsel.
Header-hooksrequest-headers- og response-headers-hooks kan bare sette eller fjerne tillatte syntetiske headers, som policy-tier-eksempelet.
Rutebeslutningerroute-decision-hooks kan bare fortsette, avvise eller velge konfigurerte matchende canary- og mirror-rutegrener.
Cache-beslutningercache-lookup-hooks kan fortsette, sende videre, omgå eller avvise. cache-store-hooks kan fortsette, hoppe over lagring eller avvise før skriving til minne-/disk-cache.

Kjør

Bruk det dedikerte profile-wasm-arkivet eller -avbildningen; det vanlige fullbygget er med hensikt uten Wasm.

Den offisielle Wasm-avbildningen inneholder kjøretiden, men ingen programtillegg fra operatøren. Monter gjennomgåtte moduler skrivebeskyttet og lås hver 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, reguljära filer under godkända rötter, utan symlinkade 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, kompilerings-timeout, 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

Produksjonsnotater

En skrivebeskyttet containermontering beskytter ikke filene på verten. La en betrodd konto uten skrivetilgang eie vertskonfigurasjonen og tilleggskatalogen.

  • Offentlige pluginmanifester må inneholde en fast SHA-256-kontrollsum. Høyst to moduler kompileres samtidig i hele prosessen. Kompilert utdata har som standard en grense på 32 MiB og kan ikke overstige 256 MiB.
  • Sørg for at konfigurasjonsfiler og alle eksisterende overordnede kataloger har betrodde eiere og ikke kan skrives til av gruppen eller andre brukere.
  • Lås utgivelsesversjoner eller image-digests.
  • Hold hemmeligheter i filer, miljø eller container secrets, ikke i offentlig dokumentasjon.

Full docs on GitHub

Norsk