Fluxheim/Documentació/Extensions WASM

Extensions WASM

Compilació Wasm dedicada basada en el perfil de producció complet, amb hooks de política limitats, ACME, mètriques i OpenTelemetry

Què t'aporta

Compilació Wasm dedicada basada en el perfil de producció complet, amb hooks de política limitats, ACME, mètriques i OpenTelemetry.

FuncióUsa-ho per a
Decisions d’accésEls hooks access-decision HTTP/1 natius en viu fan servir ordre de prioritat, composició first-deny-wins i comportament fail-closed.
Hooks de headersEls hooks request-headers i response-headers només poden establir o eliminar headers sintètics permesos, com l’exemple policy-tier.
Decisions de rutaEls hooks route-decision només poden continuar, denegar o seleccionar branques de ruta canary i mirror configurades i coincidents.
Decisions de cacheEls hooks cache-lookup poden fer continue, pass, bypass o deny. Els hooks cache-store poden fer continue, skip storage o deny abans d’escriure a la cache de memòria/disc.

Executar

Utilitzeu l'arxiu o la imatge profile-wasm dedicats; la compilació completa normal roman expressament sense Wasm.

La imatge Wasm oficial conté l'entorn d'execució, però no connectors de l'operador. Munteu els mòduls revisats en mode de només lectura i fixeu cada mòdul amb 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

Arrels de plugins aprovades

Els fitxers dels connectors han de ser fitxers regulars amb camí absolut sota arrels aprovades, sense enllaços simbòlics ni camins pare.

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

Execució limitada

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

Notes de producció

Un muntatge de contenidor de només lectura no protegeix els fitxers de l'amfitrió. Feu que un compte de confiança sense permisos d'escriptura sigui el propietari de la configuració de l'amfitrió i del directori de connectors.

  • Els manifests públics dels connectors han d'incloure un resum SHA-256 fix. Com a màxim es compilen dos mòduls alhora en tot el procés. La sortida compilada té un límit predeterminat de 32 MiB i no pot superar els 256 MiB.
  • Manteniu els fitxers de configuració i tots els directoris pare existents sota una propietat de confiança i sense permisos d’escriptura per al grup ni per a altres usuaris.
  • Fixa versions de release o image digests.
  • Mantingues secrets en fitxers, entorn o container secrets, no en docs públics.

Full docs on GitHub

Català