Fluxheim/Dokumentacija/WASM ekstenzije

WASM ekstenzije

Namenska različica Wasm na podlagi celotnega produkcijskega profila z omejenimi programskimi kavlji, ACME, metrikami in OpenTelemetry

Kaj dobivaš

Namenska različica Wasm na podlagi celotnega produkcijskega profila z omejenimi programskimi kavlji, ACME, metrikami in OpenTelemetry.

FunkcijaUporabi za
Odločitve o dostopuŽivi native HTTP/1 access-decision hooki uporabljajo vrstni red prioritet, sestavo first-deny-wins in vedenje fail-closed.
Header-hookirequest-headers in response-headers hooki lahko nastavijo ali odstranijo samo dovoljene sintetične headerje, kot v primeru policy-tier.
Odločitve potiroute-decision hooki lahko samo nadaljujejo, zavrnejo ali izberejo konfigurirane ujemajoče se canary in mirror veje poti.
Cache odločitveHooki cache-lookup lahko nadaljujejo, preusmerijo, obidejo ali zavrnejo. Hooki cache-store lahko nadaljujejo, preskočijo shranjevanje ali zavrnejo pred zapisi v memory/disk cache.

Zaženi

Uporabite namenski arhiv ali sliko profile-wasm; običajna polna različica namenoma ostaja brez Wasm.

Uradna slika Wasm vsebuje izvajalno okolje, vendar ne vsebuje upravljavskih vtičnikov. Pregledane module priklopite samo za branje in vsak modul pripnite s 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

Odobrene korenske poti vtičnikov

Datoteke vtičnikov morajo biti navadne datoteke z absolutno potjo pod odobrenimi koreni, brez simbolnih povezav ali nadrejenih poti.

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

Omejeno izvajanje

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

Production napomene

Priklop vsebnika samo za branje ne zaščiti datotek na gostitelju. Konfiguracija gostitelja in imenik vtičnikov naj pripadata zaupanja vrednemu računu brez pravice pisanja.

  • Javni manifesti vtičnikov morajo vsebovati fiksni povzetek SHA-256. V celotnem procesu se lahko hkrati prevajata največ dva modula. Prevedeni izhod ima privzeto omejitev 32 MiB in ne sme preseči 256 MiB.
  • Konfiguracijske datoteke in vse obstoječe nadrejene imenike ohranite v zaupanja vrednem lastništvu ter brez dovoljenja za pisanje skupini ali drugim uporabnikom.
  • Fiksiraj release version ali image digest.
  • Drži secret v file, environment ali kontejner secrets, ne v public docs.

Full docs on GitHub

Slovenščina