Fluxheim/Ducumentazione/Estensioni WASM

Estensioni WASM

Build Wasm apposta, basato ncopp'ô profilo completo 'e produzione, cu hook 'e policy limitate, ACME, metriche e OpenTelemetry

Cosa offre

Build Wasm apposta, basato ncopp'ô profilo completo 'e produzione, cu hook 'e policy limitate, ACME, metriche e OpenTelemetry.

FunzioneUsalo per
Decisioni d’accesso’E native HTTP/1 access-decision hook live usano ordine ’e priorità, composizione first-deny-wins e comportamento fail-closed.
Header-hookrequest-headers e response-headers hook ponno mettere o levà sulo header sintetici permessi, comme l’esempio policy-tier.
Decisione ’e rotta’E hook route-decision ponno sulo cuntinuà, negà o scegliere ramme ’e rotta canary e mirror configurate e abbinate.
Decisioni cache’E hook cache-lookup ponno fà continue, pass, bypass o deny. ’E hook cache-store ponno fà continue, skip storage o deny primma d’ ’e scritture memory/disk cache.

Esegui

Adupera ll'archivio o ll'immaggine apposta profile-wasm; 'o build completo normale resta apposta senza Wasm.

Ll'immaggine ufficiale Wasm tene 'o runtime, ma nun tene plugin 'e ll'operatore. Munta 'e module cuntrullate a sola lettura e ferma ogne modulo cu 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

Radice plugin appruvate

’E file d’’e plugin hann’essa file normali cu percorsi assoluti sott’ê radice approvate, senza link simbolici o percorsi genitori.

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

Esecuzione limitata

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

Nu mount d''o container a sola lettura nun prutegge 'e file ncopp'ô host. Tene 'a configurazione d''o host e 'a cartella d''e plugin sott'a na proprietà fidata senza permesso 'e scrittura.

  • 'E manifeste pubbliche d''e plugin hanno da tené nu digest SHA-256 fisso. Dint''a tutto 'o processo se compilano massimo dduje moduli â vota. Ll'output compilato tene pe default nu limite 'e 32 MiB e nun pò superà 256 MiB.
  • ’E file ’e configurazione e tutte ’e directory superiore esistente hann’ ’a restà sott’ a na proprietà affidabile e nun hann’ ’a essere scrivibile d’ ’o gruppo o d’ ati utenti.
  • Fissa versioni release o digest image.
  • Tieni 'e segreti in file, environment o secret container, nun dint' 'a ducumentazione pubblica.

Full docs on GitHub

Napulitano