Fluxheim/Ducumentazzioni/Estensioni WASM

Estensioni WASM

Build Wasm apposta, basatu supra lu prufilu cumpletu di pruduzzioni, cu hook di pulìtica limitati, ACME, mètrichi e OpenTelemetry

Chi ti duna

Build Wasm apposta, basatu supra lu prufilu cumpletu di pruduzzioni, cu hook di pulìtica limitati, ACME, mètrichi e OpenTelemetry.

FunzioneUsalu pi
Dicisioni d’accessuI native HTTP/1 access-decision hook live usanu ordini di priurità, cumpusizioni first-deny-wins e cumpurtamentu fail-closed.
Header-hookI hook request-headers e response-headers ponnu mittiri o livari sulu header sintètichi pirmisi, comu l’esempiu policy-tier.
Decisioni di rottaL’hook route-decision ponnu sulu cuntinuari, nigari o scigghiri rami di rotta canary e mirror configurati e currispunnenti.
Decisioni cacheLi hook cache-lookup ponnu fari continue, pass, bypass o deny. Li hook cache-store ponnu fari continue, skip storage o deny prima dî scritturi memory/disk cache.

Esegui

Aḍḍòpira l'archiviu o l'immàggini apposta profile-wasm; lu build cumpletu nurmali arresta apposta senza Wasm.

L'immàggini ufficiali Wasm havi lu runtime, ma nun havi plugin di l'operaturi. Munta li mòduli rivisti a sula littura e fissa ogni mòdulu 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

Radici plugin appruvati

I file dî plugin hannu a èssiri file nurmali cu percorsi assoluti sutta radici appruvati, senza link simbolici o percorsi parenti.

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

Esecuzzioni 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

Un mount dû container a sula littura nun pruteggi li file dû host. Teni la cunfigurazzioni dû host e la directory dî plugin sutta prupitati fidata e senza pirmissu di scrittura.

  • Li manifesti pùbbrici dî plugin hannu a cunteniri nu digest SHA-256 fissu. 'N tuttu lu prucessu si cumpìlanu ô massimu dui mòduli â vota. L'output cumpilatu havi nu lìmiti predefinutu di 32 MiB e nun po supirari 256 MiB.
  • Teni li file di cunfigurazzioni e tutti li directory matri esistenti sutta prupietà fidata e nun scrivibili dû gruppu o d’àutri utenti.
  • Fissa versioni release o digest image.
  • Teni li sigreti n file, environment o secret container, nun ntâ ducumentazzioni pùbblica.

Full docs on GitHub

Sicilianu