Fluxheim/Documentație/Extensii WASM

Extensii WASM

Build Wasm dedicat, bazat pe profilul complet de producție, cu hook-uri de politici limitate, ACME, metrici și OpenTelemetry

Ce îți oferă

Build Wasm dedicat, bazat pe profilul complet de producție, cu hook-uri de politici limitate, ACME, metrici și OpenTelemetry.

FuncțieFolosește pentru
Decizii de accesHook-urile native HTTP/1 access-decision live folosesc ordine de prioritate, compoziție first-deny-wins și comportament fail-closed.
Header-hook-uriHook-urile request-headers și response-headers pot seta sau elimina doar headere sintetice permise, ca în exemplul policy-tier.
Decizii de rutăHook-urile route-decision pot doar continua, refuza sau selecta ramuri de rută canary și mirror configurate și potrivite.
Decizii cacheHook-urile cache-lookup pot continua, trece către origin, ocoli cache-ul sau refuza. Hook-urile cache-store pot continua, sări peste stocare sau refuza înainte de scrierile în cache-ul de memorie/disc.

Rulează

Folosiți arhiva sau imaginea dedicată profile-wasm; build-ul complet obișnuit rămâne în mod intenționat fără Wasm.

Imaginea Wasm oficială conține mediul de execuție, dar nu și pluginurile operatorului. Montați modulele verificate doar în citire și fixați fiecare modul prin 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

Rădăcini de plugin aprobate

Fișierele plugin trebuie să fie fișiere obișnuite cu cale absolută sub rădăcini aprobate, fără fișiere simbolice sau căi părinte.

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

Execuție limitată

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

O montare de container doar în citire nu protejează fișierele de pe gazdă. Păstrați configurația gazdei și directorul de pluginuri sub proprietate de încredere, fără drept de scriere.

  • Manifestele publice ale pluginurilor trebuie să includă un rezumat SHA-256 fix. În întregul proces se compilează simultan cel mult două module. Ieșirea compilată are implicit o limită de 32 MiB și nu poate depăși 256 MiB.
  • Păstrați fișierele de configurare și fiecare director părinte existent sub proprietate de încredere și fără drept de scriere pentru grup sau alți utilizatori.
  • Fixează versiunile release sau image digests.
  • Ține secretele în file-uri, environment sau container secrets, nu în documentație publică.

Full docs on GitHub

Română