Fluxheim/Dokumentacija/WASM plėtiniai

WASM plėtiniai

Atskiras Wasm rinkinys, paremtas visu gamybiniu profiliu, su apribotais politikos kabliais, ACME, metrikomis ir OpenTelemetry

Ką tai suteikia

Atskiras Wasm rinkinys, paremtas visu gamybiniu profiliu, su apribotais politikos kabliais, ACME, metrikomis ir OpenTelemetry.

FunkcijaNaudok tam
Prieigos sprendimaiGyvi native HTTP/1 access-decision hookai naudoja prioritetų tvarką, first-deny-wins kompoziciją ir fail-closed elgseną.
Header-hookairequest-headers ir response-headers hookai gali nustatyti arba pašalinti tik leidžiamus sintetinius headerius, kaip policy-tier pavyzdyje.
Maršruto sprendimairoute-decision hookai gali tik tęsti, atmesti arba pasirinkti sukonfigūruotas atitinkančias canary ir mirror maršruto šakas.
Cache sprendimaicache-lookup hooks gali atlikti continue, pass, bypass arba deny. cache-store hooks gali atlikti continue, skip storage arba deny prieš rašymą į memory/disk cache.

Vykdyti

Naudokite specialų profile-wasm archyvą arba atvaizdą; įprastas pilnas rinkinys sąmoningai lieka be Wasm.

Oficialiame Wasm atvaizde yra vykdymo aplinka, bet nėra operatoriaus papildinių. Patikrintus modulius prijunkite tik skaitymui ir kiekvieną modulį užfiksuokite pagal 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

Patvirtintos įskiepių šaknys

Plugin failai turi būti absoliutūs reguliarūs failai po patvirtintomis šaknimis, be symlink failų ar parent paths.

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

Ribotas vykdymas

Fuel, memory, table, instance, compile-timeout, compile-worker ir per-call watchdog ribos išlaiko sandbox ribotą.

[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 pastabos

Tik skaitymui prijungtas konteinerio tomas neapsaugo pagrindinio kompiuterio failų. Pagrindinio kompiuterio konfigūraciją ir papildinių katalogą patikėkite patikimam savininkui be rašymo teisių.

  • Viešuose papildinių aprašuose turi būti fiksuota SHA-256 santrauka. Visame procese vienu metu gali būti kompiliuojami ne daugiau kaip du moduliai. Numatytoji sukompiliuotos išvesties riba yra 32 MiB, o didžiausia riba – 256 MiB.
  • Konfigūracijos failai ir visi esami jų pirminiai katalogai turi priklausyti patikimam savininkui, o grupė ir kiti naudotojai neturi turėti teisės į juos rašyti.
  • Fiksuok release version arba image digest.
  • Laikyk secret file, environment arba container secrets, o ne public docs.

Full docs on GitHub

Lietuvių